9
5 Comments

I turned my open-source project into a full-time business

When I started writing and publishing open-source software about 15 years ago, I was pretty radical about it. I only used permissive licenses like MIT or BSD, as all I cared about was reach. Using a copyleft license with strings attached seemed to hinder that reach. Getting another A-category company to use my open-source libraries like Nodemailer was a badge of honor. I even went so far that when a founder of a major transactional email service sent me an email regarding Nodemailer and offered to make a donation to promote my efforts, I rejected it. I did not want to seem affected by one of the dominant providers because this would not be fair to other providers.

In hindsight, what a fool I was.

In any case, it changed years later when a startup using Nodemailer was acquired for half a billion dollars. I was financially not in a good place back then, and when I saw the news, I started to wonder – what did I get out of this? Sending email notifications was a huge part of that service, and they probably sent millions of email notifications a day using Nodemailer. At the very least, I saved them tons of developer hours by providing a free and solid library for sending these emails. I searched my mailbox for emails related to that company and found a single complaint about a feature. No pull requests, no donations, no nothing. And there was nowhere to complain either as I had knowingly given my software for the world to use with no requirements to compensate anything. My empty wallet was not happy about the turn of events.

So, when I started what eventually became EmailEngine, I tried to cover my back as much as possible. I released the software under the copyleft LGPL license. I also set up an automated CLA process so that no one was able to get their PR merged without signing a CLA first. Many people hate CLAs, and several persons opened a PR first but closed it once they realized that there was a CLA requirement. Well, to be honest, I didn't really care. For example, 98.1% of the code for Nodemailer was written by myself, and only 1.9% was from other contributors, so not getting PRs merged was not a major issue. For EmailEngine, after a year and a half of being published as open source, the same numbers were 99.8% vs 0.2%.

I use CLA assistant for managing CLAs in my projects

Obviously, I wanted to make some money from my new project, and my business plan was simple. I published the project (it was called IMAP API at that time) as an LGPL-licensed application. I also offered an MIT version, but to get that, you had to subscribe. The subscription fee was 250€ per year. My assumption was that companies - the main target for the software - do not like copyleft licenses and would convert to the permissive license once they see how useful the app is.

Well, it turns out my business plan was bonkers. I only gained a few paying subscribers, and it seemed to me those people weren't even using IMAP API. They just wanted to support my effort. After a year and a half and 750€ in total revenue, I decided to jump ship — enough of providing free stuff.

I re-designed the UI of the app to look more professional and implemented a license key system. From that moment if you wanted to use EmailEngine (the new name for IMAP API), you needed a license key that was only available for paying subscribers. I also changed the license from LGPL to a commercial license. The source code is still published publicly on GitHub. It is no longer open-source by definition but source-available. This change of license was only possible due to requiring outside committers to sign a CLA from the start.

I still publish MIT-licensed projects, but only for smaller tools, not larger projects. The goal of these tools is to promote my main effort. For example, I extracted the IMAP client functions from EmailEngine and published it under an MIT license as a generic IMAP client library for Node.js. This module (ImapFlow) is gaining steam in adoption as it is by far better than any pre-existing alternative. The documentation page sends about 100 visitors per month to EmailEngine's homepage, which is not much, but hey, it is free traffic, and sometimes these visitors do convert, making the effort fruitful.

At first, there wasn't even a trial option. If you did not provide a valid license key 15 minutes after the application started, the app just stopped working.
I kept the price the same, 250€ per year, and during the first month, I sold 1750€ worth of subscriptions. That's like twice the amount I made in the previous year and a half, and it sealed the fate of the project. There was no going back.

Next, I started to increase the pricing; 250€ became 495€, then 695€ and 795€, and finally 895€. To my surprise, it did not mean getting fewer customers. I guess any sub-$1k amount for businesses is peanuts, so the only thing these price increases changed was improving the revenue.

The current MRR for EmailEngine is 6100€ and grows steadily, which in Estonia, where I live, allows me to pay a decent salary so that I can work on my project full-time. The only regret I have is that I did not start selling my software earlier and only published free, open-source software. Yes, I have some sponsors in GitHub, but it has never been a substantial amount, ranging from $50-$750 per month, depending on how many sponsors I happen to have. Selling to business customers is definitely more reliable and predictable than depending on the goodwill of random people.

on February 27, 2024
  1. 2

    Thank you for writing this, Andris.

    I've long suspected the only way to make money on open source is to either sell support or consulting, or close it and sell licenses.

    In fact, I'd go as far to say that open source authors should not expect to make any money at all from their work. Unfortunately the nature of putting software out into the world for free eliminates any incentive for businesses to pay for it.

    Why? Because open source software does not a business make. Creating a business that can sell for half a billion dollars is orders of magnitude harder and more costly than writing a software library.

    It's sad to think of what could have been, but take solace knowing that an individual author could not have competed with a VC backed business even if they started with the same open source library.

    It sounds like you've made the right decision for you, congratulations!

  2. 1

    Also, do you still get any code contributions from others? I'm guessing that contributors would still have to sign a CLA.

    1. 1

      I never received any meaningful outside contributions. Only stuff like typo fixes or an occasional bug fix.

  3. 1

    Congratulations on finding a path to profitability.

    "Source available" is an interesting concept. Have you had any trouble with people cloning the project, stripping out the licensing code, and using it without paying (or creating a rival project)?

    1. 1

      It would be piracy, so not really an option for starting a competing project. For self-use, yes, there probably are a few users doing it but these were never going to be my customers anyway.

Trending on Indie Hackers
I built a text-to-video AI in 30 days. User Avatar 64 comments What 300 Builders Taught Us at BTS About the Future of App Building User Avatar 52 comments I built something that helps founders turn user clicks into real change 🌱✨ User Avatar 49 comments From a personal problem to a $1K MRR SaaS tool User Avatar 32 comments How An Accident Turned Into A Product We’re Launching Today User Avatar 29 comments You don't need to write the same thing again User Avatar 29 comments