Happy 10th Birthday, Sidekiq
mikeperham.com
mikeperham.com
The only downside I see is that it’s definitely led to the proliferation of commercializing OSS libs by making them slightly worse on purpose and adding a “go pro!” version. All too common these days. But again, can’t blame anybody on this path - creating good software isn’t easy and people do deserve to be paid for it.
The other place ripe for opportunity is Django-admin style tools. It’s been out for a decade maintained and free and it’s just an awesome tool. There are similar frameworks in Ruby, PHP (part of laravel’s pay to play offering), and Elixir, but not too much outside that. I’m pretty darn surprised there’s no Java or JavaScript world admin framework that can be plugged into with code. (react admin and the like are too low level, and being SPA centric don’t fight the whole battle - getting 95% of the way with no code other than pointing at a model is the real value add). One could also make oodles of cash in .NET here i imagine
Website: https://www.ash-elixir.org Discord: https://discord.com/invite/D7FNG2q
Built on Postgres, it lets your background jobs achieve transactionality and consistency with your database. Its architecture is also well designed to allow it to scale up to about as much as Postgres can handle. The Pro version comes with a great web UI built with Phoenix LiveView that does just about everything one could ask for.
This is a slightly pessimistic take on open core :)
I'm personally a big fan, as opposed to libraries that are not maintained and die. Sidekiq's competitor, Resque, has a somewhat uncertain situation (it's been dead for an year or so, then new maintainers took over).
The advantage of open core is that nobody prevents devs to create their own plugins, especially for products that are accessible to developers without highly specific knowledge (say, a relational database); this is actually happening with Sidekiq - for example, there is a plugin for a more granular scheduler.
It is ancient and no longer upgraded (and based on angularjs), but I'd argue that ng-admin (https://github.com/marmelab/ng-admin) is the fastest SPA/JavaScript admin framework out there. It is a bit opinionated about paging and filtering (and painful to do moderately complex UI customization), but beyond that I have seen nothing that has come close to the same level of "quickly get CRUD admin UI available" in react/vue land, largely because (similar to django) it had its own domain entity model.
The same team moved from there to react-admin, and looking at a couple of react-admin experiences I've been involved in I'd argue that it wasn't aiming for the same ease of use.
I can’t stand that you need to pay for a pro license to avoid completely avoidable data loss. Sidekiq doesn’t use RPOPLPUSH for moving jobs around until you start paying — doing the exact same thing with a different, more correct command. No new infrastructure or configuration is needed. To me this feels sketchy and like a betrayal of the pro-version business model — willfully introducing data loss in order to drive upgrades instead of just removing capabilities or features.
IMO that easy of tweaking 3rd party libraries is the reason that Ruby's ecosystem is so polished.
It's really easy to drop in an initializer, make your patch, let it ride in production for a while and then contribute your patch back to the main project than it is to set up a fork and all of the ceremony involved with keeping it up to date.
It's a good example of removing barriers of entry or an idea of Ruby's "sharp knives". Great for when you need it but can also be a disaster when abused.
It's the one thing that keeps Ruby closer to true Aspect Oriented Programming than any other language (in my experience at least). It's probably the biggest thing that I miss from Ruby when working in other languages, even ones that I love like Elixir.
Back than I just read the redis docs, understands that BRPOPLPUSH is the right method to call, and made a few ruby functions to do so, you could see it here [1], they are plain and simple.
From my perspective, it's just feature starving OSS part, to push customers towards the paid solution.
[1]: https://github.com/senotrusov/redis-call/blob/master/lib/red...
Definitely wouldn't have my career without all those early Ruby hackers working together in community. Makes me wonder where in the OSS world that community is thriving just like back then.
Avoid hostile/nonfree licensing provisions that restrict commercial use or "require corporations to pay up". Instead, create real value in diversified offerings built upon the OSS project (which is in no way artificially limited). Sidekiq is a gift, Sidekiq Pro & Enterprise are products.
Offer paid features, support, SLAs, etc that really appeal to "enterprise" use-cases. Trust that users will convert as their need for such functionality is justified by their businesses' growth and scale.
1. Do it in public if possible via GitHub issues so others can also answer and search in the future.
2. Don’t allow more than N questions per year per customer. A few have drowned me with requests. Nope, you are buying a product, not a trainer or teacher. Read the docs, watch the videos.
3. Pour everything I know into the wiki docs. Note each wiki page will talk about semantics, edge cases, etc. That’s all there to get ahead of the support inquiries.
Thanks for the hard work you've poured into them Mike!
The free version is very capable too; he found a very nice balance between "free version that is still very usable" and "paid version with really useful additional features."
We were ready to pay for Sidekiq, but the pricing model was just off and we just used an OSS lib to patch the missing part.
Mike if you are here, might be worth to invest some time in pricing research, you could probably double your revenue.
And since (at that stage) our budget was low, the enterprise plan was too expensive.
I reached out to ask if we can do any other payment scheme, or at least get startup discount to start using, but were declined.
We ended up using an OSS library for that part and even now what we grown, still don't pay for sidekiq. If it was part of Pro, or we had a 1 year discount for startups, we prob just kept on paying even now (that we can afford it).
Out of curiosity (I also sell enterprise products) what would make the purchase a no-brainer? Quarterly payments? E.g. I’ve heard that ~$300 (ballpark) is the max amount an individual can spend without a review process. Is that what you mean?
Sadly that plan was very expensive, so ended up not paying anything and just getting the feature from OSS.
No the pricing, but rather the feature coupling to plans and no willingness to do any dynamic pricing.
I don’t want this question to sidetrack into a heated debate about open source vs commercial. But I am genuinely curious if there is a difference between the two.