AL Object ID Ninja: An Apology, a Decision, and a Month on the House
I owe you an explanation.
Not a corporate statement. Not a carefully worded legal notice. An actual explanation, from me to you, because you’ve trusted this tool – and by extension, me – for years. You deserve more than a changelog entry.
So here it is.
Four years. My pocket.
When I released AL Object ID Ninja in September 2021, I had one goal: make object ID management stop being a problem for the BC community. That’s it. No business model. No exit strategy. No “monetization roadmap.” Just – here’s a tool, it’s free, use it.
And you did. In numbers I didn’t expect.
For four years, I ran the backend out of my own pocket. Every API call, every storage transaction, every bit of infrastructure – on my bill. I didn’t mind. I wanted it free. I intended it to stay free. I said as much, publicly, more than once.
But “free forever” eventually ran into math. The service grew. The costs grew. Support requests grew. And at some point I had to face the uncomfortable truth: I couldn’t keep subsidizing an entire community’s infrastructure indefinitely. It wasn’t sustainable.
That decision – to go commercial – was not easy. I wrote about it. I posted about it on LinkedIn. I tried to explain myself honestly, because I felt I owed that to everyone who’d come to rely on Ninja. And I think most people understood.
What I didn’t expect was what came next.
I left a door open. Someone decided to charge admission.
When I went commercial, I was deliberate about one thing: I didn’t want to punish people who had legitimate reasons to run their own backend. Security requirements. Air-gapped environments. Internal policy. These are real things. Valid things.
So I kept the self-hosting option alive. If you had a genuine reason to run your own backend, you could. No charge. No strings attached. No questions asked. I documented how to do it. I even published migration guides when breaking changes happened, so self-hosters could stay in sync.
I was trying to be fair. I thought that was the right thing to do.
And then a company (that for legal reason I am not going to name here) – a well-established one in the BC community – started bundling access to their own Ninja-compatible backend as a perk of their own paid commercial offering. Their offering is not Ninja-related, but now it included a Ninja backend.
Let me be precise about what that means. This isn’t a company running Ninja internally for their own developers. That would be fine. That’s exactly what I intended to allow. This is a company telling their paying customers: “You don’t need to pay that guy. You pay us, and you get Ninja backend access included for free.”
That’s a different thing entirely.
Why this actually matters – and why the money isn’t even the point
I want to explain the economics here, because I think it’s worth understanding.
Maintaining private backend compatibility isn’t free for me. Every time I make a change to the Ninja backend – new feature, new protocol version, security fix, anything – I have to think about whether it breaks self-hosters. I have to write migration documentation. I have to handle support questions. I have to spend time I could spend elsewhere making sure people running their own backends can keep running them.
That’s real work. And I was doing it for free, willingly, for anyone with a legitimate operational reason.
But “a company competing with my commercial product” is not a legitimate operational reason.
When a company uses my freely provided self-hosting option to undercut the commercial service that pays for Ninja’s future development, they’re not solving their own problem. They’re solving their customers’ problem – on my time, with my work, at my expense – while telling those customers there’s no reason to subscribe to the thing that makes Ninja possible in the first place.
That’s the line. That’s what I can’t keep enabling.
And let me be clear about something else. I’m not getting rich on Ninja. We’re talking about revenue that most of you wouldn’t get out of bed for. Ninja pays just enough for me to justify the time I put into it – to commit to it seriously, to keep developing it, to give it a future. That’s all I need from it. That’s all I’m asking for.
The company that decided to route around that? They’re not a struggling startup. They’re a big, established, well-funded business. They don’t need this revenue. I genuinely do.
So here’s what’s changing, effective today
Private backend support is gone.
Starting today, the source code is no longer open.
Later today or tomorrow I will publish a version that clearly shows this information, with the link to this blog post, to everyone who is running private backends. A couple of days after that, I will release an update that will no longer support connections to private backends. There is no officially supported self-hosting path going forward.
I know that’s a blow for some of you. For those of you who were using private backends for entirely legitimate reasons, in good faith, the way I intended – I’m genuinely sorry. You played fair and you’re getting caught in the crossfire. That’s not right, and I know it.
So here’s what I can do:
Everyone currently using a private backend gets one month grace period on the commercial platform to set up your subscription should you choose to sign up for my commercial service. A month should give you plenty of time without (substantial) disruption of service. I say “substantial” because some disruption will happen: you’ll have to sync your object ID consumption once – and I am sincerely sorry for that.
After that month, you’ll need to be on a paid subscription to keep using Ninja with the latest version of the extension.
You also have another option: stay on the version of Ninja you’re running now. The old extension versions that work with your existing private backend aren’t going anywhere. Switch off the auto-update, and keep using whichever version you are currently on.
What I want you to know
I built this tool because I wanted to contribute something useful to the community I’ve been part of for decades. The commercial pivot wasn’t greed – it was survival. Ninja had become too important to let die, and too expensive to keep free.
Even after going commercial, I tried to stay generous. I tried to leave room for everyone who had a reason to stay outside the paid model. I wanted to keep being fair.
I would prefer to still want that. But I just can’t afford to be anyone’s fool. The company who did this apparently takes me for one. They never said “thank you for such a great tool!” – but they did decide to profit from my work and the time I take away from my family. To make things worse, they even said “Count on us” when I published the sign-up form before I made the final go/no-go decision.
To every person who used Ninja responsibly, ran their own backend for honest operational reasons, contributed bug reports, spread the word, or just said thank you somewhere along the way – genuinely, I thank you from the bottom of my heart. It pains me to have to do this to you. But I hope, I truly hope, you understand my decision.
Let me know if you have questions. I’ll answer them honestly.
Loading comments…