Making Money When all the Industry Wants is Free Beer
I was terrified. After 5 years of doing jOOQ as an all Open Source project between 2008 – 2013, I suddenly switched to commercial licensing.
Will I be ripped to pieces?
Will the community hate me?
Will there be an unfriendly fork?
This blog post will show that my fears 5 years ago were completely unjustified. Not only that, I was silly to have never asked for money in the early days.
What I did may not work for everyone. Yet, I’d like to share this part of the jOOQ story to help encourage any of you who are sitting on some (currently Open Source) golden product, which you want to monetise through licensing.
Or, you have not even started yet, and think about how to proceed.
Trust me. Once your commercial product starts getting traction, you will never look back.
Open Source Software
For ages, I have profited myself from the abundance of free, quality software in the developer ecosystems. Having been employed in Software for about 10 years prior to creating this business (3 years in PHP and 7 years in Java), I’ve grown very used to using Open Source software.
The employer that did PHP ran on… PHP, which is Open Source. It connected to a MySQL database, which is Open Source. It ran on an Apache web server, which is Open Source. We developed using Eclipse which is Open Source.
The same is true for the employers that did Java, which is Open Source, these days more than ever. We used tons of Open Source libraries, and finally, I created jOOQ which … was (and still largely is) Open Source.
Open Source is so abundant, that commercial software has become extremely rare among libraries. There seem to be only a few left, when there used to be only commercial infrastructure software in the past.
The Business of Enterprise Software
Bill Janeway said in his talk at Business of Software 2018 in London:
Once upon a time, enterprise software was a safe bet for entrepreneurs and investors. This is no longer true. Since Salesforce.com launched in 1999, SaaS has shifted software from being a capital investment to recurring operating expense for customers, but for startups the funding from big upfront licenses is gone. SaaS has become canonical, but four other profound changes have transformed the world in which enterprise software firms operate:
- Open source software.
- ‘The Cloud’.
- Internal IT departments have largely changed focus to “keeping the lights on” and protecting systems from cyber attack.
- The decline in access to public equity markets
Reciting the entire talk would be out of scope for this article (you can see the slides here), but the focus on the first bullet of Open Source software was very interesting.
It has become more difficult to make a business with infrastructure (“enterprise”) software. When in the old “golden” days, infrastructure software vendors would sell directly to IT departments who would mainly “operate” the infrastructure software – these days, infrastructure software is delivered to:
- SaaS vendors
- Service suppliers
The end user is no longer the IT department, but other software engineers, who – in the worst case (for the vendor) – can build the infrastructure software themselves.
They usually don’t because infrastructure software is not their business, and they’re very happy if someone else solves the technical problems for them, so they can focus on their business. But with the abundance of software in general, chances are very high that someone has already solved some problem.
… and made it Open Source
Just look at how Linux has “destroyed” Unix and how PostgreSQL is gaining momentum right now. Perhaps in 15 years, PostgreSQL will be the Linux of database software, and no one will talk about the Unixes of database software anymore (if you know what I mean).
Losing Customers due to the “Price Increase”
When jOOQ switched licensing from completely Open Source to dual licensed, the model that I had chosen meant that about half of all jOOQ users would have to pay if they wanted to upgrade.
The model was based on the underlying database software:
- If the database software is Open Source, the jOOQ Open Source Edition supports it
- If the database software is commercial, the commercial jOOQ editions support it
This was first announced here. A very simple model, that had also been perceived as fair by many, but not all. So what happened next? What did customers do?
Risk: no upgrade pressure at first
As expected, sales didn’t explode right away. Apart from a few very loyal customers who jumped on the commercial versions right away, in my particular case, no one was forced to upgrade immediately. The old all Open Source version was still available from Maven Central, and the first commercial version didn’t have enough new features yet to motivate everyone to upgrade.
This is certainly specific to how I switched licensing, to some extent:
- If you choose to make your product a business from the beginning (rather than an Open Source side project), then this won’t happen to you.
- If you invest in very fancy new features for your enterprise customers only, this might also not happen to you.
- If you don’t “force” a specific segment of your user base (commercial database users in jOOQ’s case) to upgrade to a commercial version, it might also not happen to you. This is purely speculative on my side, but the feeling of having a choice is most probably relevant for purchasing decisions – even if you never really have a choice.
- If you base your business on maintenance and support only, instead of commercial licensing, perhaps this may not happen to you.
- Last but not least, the licence change happened between versions 3.1 and 3.2. Psychologically, it would have been much better to name the commercial version 4.0.
As you see, I can only guess what would have happened if I had chosen a different strategy.
In any case, a lot of companies eventually did upgrade to the commercial price plan – it just took some time. By 2018, there are roughly 250 paying customers, generating around USD 200,000 in annual license revenue as I’ve shared on Indie Hackers. There are other sources of revenue too, like consultancy and trainings, as will be discussed in a future post.
Risk: switch to the competitor
At the time, I feared a lot of people would switch to the main competitor product, which was QueryDSL. In 2013, QueryDSL and jOOQ were about on par, feature wise as well as value proposition wise. Both products were created by individuals as Open Source side projects, and got about equal traction.
Now, after dual licensing, QueryDSL seemed infinitely cheaper for all companies that use commercial databases – at least in a very naive cost calculation that does not include the Total Cost Of Ownership. In a more sophisticated calculation, QueryDSL actually became more expensive. Why?
At the time, it was clear to me that jOOQ could no longer be maintained for free. It grew too well. And so did QueryDSL. This became clear to their maintainer as well, who seems to have abandoned the product – in my opinion, very regrettably, they didn’t choose the same path as I did, as I will soon post in a piece about competition. With no credible maintenance roadmap and strategy, using the product has become very risky, and thus a more expensive technical debt.
Risk: become the competitor
The biggest fear I had at the time was that an unfriendly fork would show up. If someone really really hated me for my decision, or for my dad jokes, but loved the topic of type safe, embedded SQL as much as I did, they might jump in and fork jOOQ to compete with it directly.
This fear is not unjustified. It happened numerous times in the past. A few examples in the database ecosystem:
- MariaDB is a popular unfriendly fork of MySQL (the fork is still less popular)
- Firebird is a popular unfriendly fork of InterBase (the fork is more popular!)
- SQL Server is a popular unfriendly fork (although not Open Source) of Sybase (the fork is immensely more popular!)
So this definitely happens. It also happened to a competitor of jOOQ:
That last example is particularly frightening. It was implemented by a single individual, whose motivation was pure dogma, spite, and entitlement, three traits that are not too uncommon in the Open Source world. You can read about it here. This individual’s actions forced the vendor to eventually roll back their business around commercially licensing Slick.
For the record, the license model of Slick was the same as that of jOOQ: Commercial for commercial database software, and Open Source for Open Source database software.
Preventing an Unfriendly Fork
Luckily, something like this never happened to jOOQ. There are different reasons, among them:
- The jOOQ community was much smaller at the time than the Typesafe / Scala community. There is simply less risk of having such community members in smaller communities. Also, over the years, the Scala community has been known for their strong opinions on many things including FLOSS. That cannot be said of the jOOQ community, which I believe has always been more pragmatic with respect to licensing.
- I have never really wanted or encouraged any contributors. The jOOQ community has always seen jOOQ as a product from a single vendor, not a collaborative effort. So, there’s hardly anything personal in jOOQ going from all Open Source to dual licensed for most of the stake holders. Apart from the perceived price increase, of course.
- I have long ago removed all unit and integration tests from the public repositories. It is very hard to fork jOOQ without those tests. For an infrastructure library like jOOQ, a lot of the business value lies in the tests, so this has been a decisive move. SQLite does the same
- Unlike with Slick, which is a very simple ORM (or rather: FRM), the drivers for supporting new databases in jOOQ are very hard to implement. They used to be much easier in the past, but jOOQ has grown and there’s no reason to make this easier. So it will be nearly impossible to re-implement all of that commercial database software support logic that is missing from the Open Source Edition.
- And finally, again: QueryDSL – the main competitor – is still out there and available for free. Having this option definitely helps both the community and the vendor.
There can always be competition, and in principle, competition is good. Ultimately, the customer wins by having a better choice of products.
Legally, an unfriendly fork cannot really be prevented in Open Source – that being the whole point of FLOSS. Morally, it can be made more unlikely, by being a good steward of the product. But it is a real risk – if you’re doing business, beware of this!
How to Measure the Effect of the License Switch?
Of course, some users have abandoned the product because of the new commercial licensing. Others have joined, thanks to the (much) increased marketing efforts that I could invest over the past 5 years. How to measure the effect of the license switch on the community size? It’s hard to say. One way to measure things is Google Trends, comparing jOOQ again with QueryDSL, the runner up.
A few things that I believe can be read from the Google Trends numbers is:
- jOOQ now grows quite faster than QueryDSL, having been on par when the business was started in 2013, and when work efforts were comparable.
- QueryDSL is just much harder to use, which is why people search for “QueryDSL” much more often. Couldn’t resist 😉
- The decrease in number of commercial database software users using jOOQ (due to the price increase) was more than compensated by the significant increase in number of Open Source database software users using jOOQ, ever since.
- jOOQ didn’t grow as much as it could have. Check out how there has been some gain in momentum in 2015 only to flatten out again slightly in 2016. Guess what? In Jan 2016, my sweet daughter was born, and this business allowed me to set priorities! More on that in my previous blog post about growth not being the only goal. Also, stay tuned on my next plans as I’m about to hire my first employee!
Other trends (e.g. download numbers) might show a similar picture. Unfortunately, those numbers are not publicly available for comparison. Here are jOOQ’s download numbers from Maven Central (including all artefacts):
The download numbers on Maven Central have roughly doubled every year.
5 Years after going dual licensed, I can say that none of the fears I had in the beginning had proven true. I kept focusing on innovation rather than protection (give or take a few precautions), I kept adding value to the existing customer base, I kept attracting new customers over time. jOOQ became profitable after a while and grew in size overall.
Yes, there was a price increase, and as with any price increase, a decrease of the number of customers using jOOQ in that segment. But as the comparison with the still all Open Source QueryDSL has shown, jOOQ is now very profitable for me, and I can thus guarantee its continued development, and even hire someone.
There are a lot of potential customers out there who do Total Cost Of Ownership calculations, and they will see the value of your product. They are fewer in numbers, but they may still be enough in numbers for you to make a business. All you have to do is try.
Soon on this Blog
Following up, stay tuned for related blog posts:
- Open source or not?
By publishing open source software, you’re giving away a lot of value for free. What’s to gain from that?
- Competition is great
While some people find competition scary and fight them fiercely, I have always embraced competition. Competition validates the market — it means that I’m building something that people really need. And I’m constantly challenged to be better, so my customers will win.
- Consultancy. Good or bad for product business?
Without venture capital, profitability is a much more urgent goal. You can only burn through this much personally invested money. The easy answer is consultancy. But it will slow down product development. Where to draw the line?
Removing tests from public repository was a smart move. You got the benefit/visibility of opensource but at the same time make harder any copy. And someone still thinks test are useless
Yes indeed. The fun thing was that hardly anyone had noticed, only 2-3 people, who then abandoned using jOOQ. People don’t care about open source as much as one might think. The main value people get from it is pricing (“free as in beer”).
I must admit, I didn’t come up with this idea myself. This is how SQLite works as well. I imagine it works even better, there, as the tests are way more complex and valuable.