I'm Mike Perham. I've been a Java and Ruby software engineer for the last 20 years. I designed and built Sidekiq, a free and open-source background job framework for the Ruby programming language. My business sells two commercial extensions for Sidekiq, Sidekiq Pro and Sidekiq Enterprise, which provide additional features which are not found in the open-source version.
I realized in 2011 that existing background job solutions for Ruby were slow and inefficient. I'd been an open-source developer for several years at that point and had seen what had happened to popular OSS projects:
I vowed that if I was going to solve this problem, I had to have a model that prevented that predictable outcome. The easiest solution was money: as long as I made money somehow, I'd be incentivized to stay. At first I built Sidekiq as an LGPL project and sold commercial licenses for $50. Revenue was laughably small, but the response I got was encouraging: people told me they were saving $thousands/mo over previous solutions and wanted to buy the license just to give me something as thanks.
My second idea was to move to an open core model: hold back more complex or enterprise-specific features from the OSS version, sell those features as an "expansion pack" on top of Sidekiq. Thus, Sidekiq Pro was born. This proved to be popular and forms my business today.
I launched Sidekiq Pro in Fall 2012. Over the next 18 months of Sidekiq Pro, sales went from 0 to $10k/mo; I was making more from my side project than my full-time engineering job. At that point, I started planning a move to self-employment and pulled the trigger in Summer 2014.
My wife was my main "investor" in that she took care of our child and gave me the time I needed after hours and on weekends to grow the Sidekiq project and start the business. A half-dozen people from the greater Sidekiq community provided design help or other skills that I couldn't do myself. The business itself was profitable from day one and didn't require any financial investment — time was my main investment.
I'm wholly focused on one market: Ruby developers. I had been blogging constantly about Ruby and OSS projects since 2007 so I had an audience and a reputation already built up. I focused on building an OSS project that was better than existing solutions in all ways: faster, better supported, better documentation, and more features, all for free.
Once Ruby developers (who use 99% FOSS and aren't used to paying for software libraries) started using my commercial projects, they grew comfortable and evanglized them to friends and to future companies that they hired into.
My only planned marketing is attending Rubyconf and Railsconf every year, handling out stickers and t-shirts. I do no advertising or corporate events as I don't think they are effective. I focus on providing the most value to developers possible and listening to feedback.
I sell access to Sidekiq Pro and Sidekiq Enterprise as annual subscriptions. My belief is that software is never "done". It will always require changes, especially based on changes to Rails or Ruby over time, and my support load will grow linearly as I get more free Sidekiq users and commercial customers. I don't sell monthly because I don't think my software is something you just start or stop using on that timeframe. Once you integrate it, it's likely to stay as part of your app for years.
I do try to keep the price low so that people can charge it to a credit card without trouble. Providing easy, automated onboarding and billing via Stripe is important to keeping my costs down and customers happy.
Here's my annual revenue:
Launching Sidekiq Enterprise in 2015 provided a nice kick to revenue: a higher priced tier proved natural for my customers who wanted more functionality.
I've been working daily for the last 5 years as a solo entrepreneur, building as much value into my commercial products and automating my business as much as possible. It's time to take a vacation and enjoy my success for a few months -- relax and enjoy life while the products sell themselves. This is a lifestyle business and I've designed it to run solo, adding a second or more employees would dramatically increase my admin load and operational costs. For this reason, I focus on business changes that I can automate or perform efficiently myself.
My original goal was to make $1M with Sidekiq. I'll be over $1.5M at the end of this year and possibly pass $1M ARR in 2017.
The biggest mistake I made was not selling as a subscription from day one. Offering lifetime support for a one-time fee is a really bad idea. I should have started an email newsletter much earlier, I use Twitter for announcements but nothing beats delivery right to someone's inbox.
My own personal blog was important to developing the trust of other developers and converting them to Sidekiq users and then customers. If I was just some random person, it would have been a harder sell. Also, Sidekiq itself had to have a lot of value in order to get developers to try out and use in their projects: OSS does not work well when it is crippleware.
It's common for me to see developers who have bought Sidekiq Pro at their last 2-3 jobs and continue to buy it for every new workplace they join. It's a trusted tool in their toolbox; this trust is critical to the success and growth of my business.
When you learn something, blog about it. People admire and trust those who educate others.
Email sells. A newsletter useful to your subscribers can be an amazing marketing tool.
This article is really useful and inspiring!
However I have a technical / legal doubt... How do you handle the Contributor License Agreement / copyright transfer for Sidekiq (since it has also a commercial version)?
On Github I don't see any acceptance of specific terms in the pull requests and that seems strange... Without a CLA a contributor might cause problems if you re-license the work.
Do you ask contributors to send you an authorization email or something?
Sidekiq is awesome so Mike deserve the income
@mperham: do you own the open source code? I mean do you make them sign something like “I hereby assign copyright in this code to the project, to be licensed under the same terms as the rest of the code.” before accepting PRs to the LGPL codebase?
Should people do that in general?
Yes, I own the code.
I believe it is implicit in the OSS world that any code contributions to the project are to be used in the same spirit as the rest of the code. I write all my Sidekiq code to be licensed LGPL to the world and 99% of my contributors don't care about licensing or copyright -- they just want to fix a bug or get their feature in.
Obviously I would not accept code from any entity (person or company) that wanted to turn a code contribution into a legal mess, e.g. to disrupt sales of my commercial products.
No obligation of course, but I'd love to hear what some of the biggest challenges were building, maintaining, and providing support for on-premise software vs SaaS. I have some tools in mind, and frankly I'm tired of auth, team management, and all the other baggage that goes along with SaaS.
Seriously inspiring Mike! I love the annual price as opposed to the monthly price. As a solopreneur, that model makes cash flow SO much more predictable!
Sidekiq is definitely the best background jobs processor in the Ruby ecosystem and I always recommend it.
That said there is one issue with its features page that I think it is important enough to be highlighted. It's about this: https://github.com/mperham/sidekiq/wiki/Reliability
Essentially, the OSS version can sometimes loose jobs. The docs say
I have absolutely no problem with this being available only in paid versions, that is completely sensible but I think it should be highlighted more strongly in the features list.
This has bit me on a recent app I was launching since I missed the significance of this as none of the other paid version features were needed for the project. It started dropping jobs (just a few a week, but enough to cause customer issues) a year later when traffic went up. We ended up purchasing the pro version and have been happy with it since.
I just wish Mike has highlighted it more strongly on the features list as it really makes the OSS unusable after the launch into production if you have jobs that you can't afford to loose. If you do have such jobs I definitely encourage you to consider getting the PRO version from day 1.
Sidekiq's default reliability is the same as Resque's. They use the exact same algorithm. Since most people are ok with it, I choose not to highlight it.
Great story, and glad you're having lots of success! Any recommendations for reading up on dealing with the licensing aspect? Do they just pay you and you send them a boilerplate license PDF or something?
Unfamiliar territory for me but this is inspiring, thanks for sharing.
Licensing is easy. Sidekiq, the free OSS version, is licensed LGPL. Sidekiq Pro and Sidekiq Enterprise are licensed according to the commercial license available in the repo:
https://github.com/mperham/sidekiq/blob/master/COMM-LICENSE
I send new customers access instructions so they can gain access to the Sidekiq Pro and Enterprise gems. If they want a copy of the license, they can always get it from the repo.
Interesting, thanks! I thought it might be more cumbersome than that, especially with larger enterprise customers. Really impressive numbers, I've never really contemplated trying similar with OSS.
Very inspiring story and great business strategy. I would like to ask question to Mike, if he reads this. I have a couple of similar projects that I am selling on my own, however I was always afraid of offering subscription for support, because that would take away my independence and chance to take vacations whenever I want. How do you deal with support while you are on a few months vacation? Thank you.
No easy answer. I take my laptop on vacation, spend an hour answering emails each morning, and then enjoy the rest of the day.
Nice story! I'd like to know how do you deal with other contributors regarding the income?
I came back here (to Indie Hackers) to ask the exact same question! Thanks.
Contributors and PR submitters do it to scratch their own itch -- I don't offer any cut.
Have you had to deal with PRs that have functionality that overlaps with your paid features?
I don't accept them, people are welcome to build their own competing functionality, release their own OSS gems and support their users. The LGPL prevents anyone else from making closed-source extensions to Sidekiq.
thanks for your answer
I've used sidekiq at multiple startups since 2013 (pro versions) and Mike has always provided great service and value. I've had sidekiq process tens of millions of jobs and it's pretty much just worked. It's my goto queueing server for an Rails project I work on.
Congrats to Mike and the team for their awesome work!
Mike turned a predictable outcome into a predictable income ;)