You are currently viewing AL Object ID Ninja: An Apology, a Decision, and a Month on the House

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.

This Post Has 12 Comments

  1. SimonOfHH's avatar
    SimonOfHH

    Sorry to hear that, Vjeko 🙁 That’s really a story I never thought I hear. And it’s a huge loss from a community perspective. But I totally get it from your perspective.
    Thank you for all your work over the years! And still thank you for Ninja being a great tool!

  2. Vjeko's avatar
    Vjeko

    Thank you, Simon!

    If I had a way to launch this in a way that supports everyone, I would. I always knew this was a possibility, I was just naive enough to think that everyone in this community has morals. Lesson learned, a yet another one. But other than forcing me to make a sad decision, it won’t change me. I’ll find ways to keep giving.

  3. Kilian S.'s avatar
    Kilian S.

    I understand your decision, but it’s still sad.
    I somehow really liked the possibility to check the source code if something isn’t working in the AL / VS Code Integration.

    Is there any technical/ legal possibility to republish the client part with a non commercial license?

    (We’re active subscribers and aren’t regretting it)

    1. Vjeko's avatar
      Vjeko

      Hi Kilian,

      First of all – I truly thank you for your support – this is what keeps Ninja alive. 🙏

      I will gradually open up things. I may be kind of open-sourcing this for select customers who sign up an agreement, but for now, I first want to close any doors to people damaging me. One – the one I had proof about – has come out publicly and claimed responsibility for what they did. I suspect two more are doing the same. For a while I suspected somebody might have done something of the sort, but I had no proof, and I didn’t want to instill any telemetry that would expose that, simply to avoid any legal problems. Now that I know for a fact that my suspicion was correct, I decided to close this door. I simply cannot understand what happens inside of minds of people who consciously decide to exploit and damage another for profit. I never will.

      This has happened to me with Stratus. Well documented on this blog. An ugly story that I could have learned from. The guy who was ultimately in charge of ripping me off told me into my face: “You are naive”.

      Well, maybe. Maybe I am. I’ve still given to this community much more than that guy did, and I am proud of it. But I also do need to protect myself.

  4. lvanvugt's avatar
    lvanvugt

    What a story, Vjeko. You have been challenged, I reckon. Unfortunate you had to take a road you didn’t want, or in the least, you hadn’t foreseen. Thanx for the good work and the openness.

    1. Vjeko's avatar
      Vjeko

      I definitely didn’t want this. I have some very good friends who are using private backend who will now be angry because their company policies are too strict for a small SaaS tool like Ninja.

      But this decision was very similar to my original decision to go commercial: either I abandon it, or I turn it commercial. This time I couldn’t abandon it because I have a commitment to a lot of companies who paid money for me to provide this service to them. But the decision was equally tough.

      My biggest problem is that I both care about this community deeply, and that I am naive. I’ve paid this price once already. Now again. But heck, I am still here, still me.

  5. cblasek's avatar
    cblasek

    As a free customer – I will gladly become a paying customer based on this tool and your contributions to the community!

    1. Vjeko's avatar
      Vjeko

      Thanks! I truly appreciate your support.

  6. Fabian's avatar
    Fabian

    Hello Vjeko,
    I’m very sorry to hear that but I can totally understand your decision.
    Which version of the VS Code extension is the last to support private backends? 3.1.4 or 3.2.0?

    1. Vjeko's avatar
      Vjeko

      Hey Fabian,

      It’s 3.2.0. Also, it’s 3.1.4 if you want to get rid of that “no more self-hosted” warning for everyone, forever. But 3.1.4 does not have deletion detection – may be relevant, especially for long agentic sessions.

      Not selling anything here – but keep following the news, as Ninja is getting a lot more in the coming weeks and months. Obviously, you’ll miss it if you freeze updates. If you are happy with what Ninja does today, this is fine. If not, stay tuned.

  7. Palle@NAVspecialist's avatar
    Palle@NAVspecialist

    I myself do not have an installation that is big enough for the usage of AL Object ID Ninja (Sorry about that). But what I have is a customer which is moving from a NAV 2015 with +10800 objects to BC24 with +5600 custom objects and here we will use your tool later this year.

    I am still surprised that people/companies you trust can behave this badly.

    I feel sorry and 110% understand your approach to contain this matter!

    1. Vjeko's avatar
      Vjeko

      Yeah, I am surprised to. Appalled really. I can’t understand the kind of “morals” behind this. I can understand profit alright. But ripping others off cold-bloodedly? Never could. Never will. And proud of that (no matter how naive that may be perceived by those who can)

Leave a Reply to cblasekCancel reply