We built our own license server. Here's why we're ditching it

•4 min read•Product

We built our own license server. Here's why we're ditching it

Where we started

When we launched RabbitGUI, we needed a way to sell licenses, activate them on your machine, and check them once in a while so the app could keep working offline. Like many small software teams, we decided to build it ourselves. We wrote a small license management backend: it created a license when a Stripe payment went through, handled activations, and answered the periodic license checks coming from the app.

It worked, and it taught us a lot. But the more RabbitGUI grew, the more time we spent maintaining infrastructure that has nothing to do with RabbitMQ. So we are moving our licensing to LicenseManager.dev, a service built specifically for selling and managing software licenses. Here is why.

No more servers to host and babysit

The first reason is the simplest one: we no longer have to host the backend ourselves. That alone makes it cheaper, on hosting costs only, before even counting our time.

And hosting is not just a monthly bill. A license server is a critical piece of the product: if it goes down, people can't buy RabbitGUI, and new users can't activate the app. With an in-house backend, uptime, monitoring, database backups, upgrades and late-night incidents were all on us. With LicenseManager.dev, that responsibility moves to a team whose whole job is keeping license infrastructure available.

Better security out of the box

Security has always been a priority for RabbitGUI, as we explained in how security is built into RabbitGUI. Our in-house backend was carefully written, but a license system has a lot of subtle details to get right: signing license keys, protecting activation endpoints from abuse, storing customer data safely, keeping dependencies patched, and so on.

LicenseManager.dev already has these best practices in place, and they are applied and maintained across every product that relies on it. For us, it means a smaller attack surface to worry about. For you, it means your license and your purchase details are handled by infrastructure that was designed for exactly that purpose.

Nothing changes regarding your RabbitMQ data: RabbitGUI still connects directly to your brokers, and none of your messages or credentials ever reach us or LicenseManager.dev.

It fits all of our licensing needs

Before switching, we made sure every rule we offer today was supported. It is:

  • Money back guarantee period: you can still try RabbitGUI and ask for a refund if it is not for you.
  • Free updates: your license keeps giving you access to new versions, delivered through the built-in auto updater introduced in RabbitGUI 1.1.
  • Offline usage: the app still only needs to check your license once in a while, so you can keep working without an internet connection.

In short, nothing you rely on today goes away.

Refunds are now handled automatically

With our in-house backend, refunds were a manual process. Every time someone asked for one, we had to find the payment, refund the Stripe transaction by hand, and then make sure the corresponding license was revoked. It was not hard, but it was repetitive, easy to forget a step, and it meant you sometimes had to wait for us to be available.

LicenseManager.dev handles refunds automatically: the payment is refunded and the license is updated accordingly, without us having to step in. That saves us time we can put back into improving RabbitGUI, and it makes the process faster for you.

Monthly and yearly subscriptions are coming

This is the change we are the most excited about. Until now, the only way to get RabbitGUI was a 29€ one-time payment for lifetime access. Many of you love that, and it is not going anywhere.

But we also heard from people who would rather not pay upfront, or who need a recurring expense to get approval from their company. Supporting subscriptions with our homemade backend would have meant rewriting a big part of it: renewals, failed payments, cancellations, grace periods... LicenseManager.dev supports all of this out of the box.

So alongside the lifetime license, we will soon offer monthly and yearly plans. You will be able to pick whatever works best for you or your team.

What it means for existing users

If you already own a RabbitGUI license, you don't have to do anything. Your license stays valid, your lifetime access is unchanged, and you will keep receiving free updates as before. If you notice anything unusual with your activation during the transition, reach out and we will sort it out quickly.

Building our own license backend was the right call when we started, but today our time is better spent on what matters: making RabbitGUI the best way to work with RabbitMQ. New here? Take a look at a better RabbitMQ UI to see what the app can do.

Working with RabbitMQ?

See how RabbitGUI can make your everyday RabbitMQ workflows easier.
Available on Windows, Mac, and Linux.

Try RabbitGUIRabbitGUI screenshot

More articles like that

How to browse RabbitMQ messages without consuming themProductHow to browse RabbitMQ messages without consuming themRabbitMQ has no read-only API to browse a queue. Learn what the management UI's "Get messages" actually does, the side effects of requeueing, and how to inspect messages safely with RabbitGUI.How to spy on real-time queue traffic in RabbitMQ?ProductHow to spy on real-time queue traffic in RabbitMQ?Inspecting live messages flowing through a RabbitMQ queue is tricky because consuming is destructive. Learn how RabbitGUI creates a shadow queue to capture traffic without affecting your application.How to predict when a RabbitMQ queue will be empty?ProductHow to predict when a RabbitMQ queue will be empty?A step-by-step explanation of how to estimate backlog drain time for a RabbitMQ queue, from naive division to linear regression with adaptive windowing.Announcing RabbitGUI 1.1: Now on Windows and LinuxProductAnnouncing RabbitGUI 1.1: Now on Windows and LinuxRabbitGUI v1.1 brings native support for Windows, Linux, and Intel-based Macs, along with a built-in auto updater. Here's why this release matters.How to log into your CloudAMQP RabbitMQ instanceProductHow to log into your CloudAMQP RabbitMQ instanceUse RabbitGUI to connect to your CloudAMQP instance and manage your dead letter queues with easeHow security is built into RabbitGUIProductHow security is built into RabbitGUIRabbitGUI was built with security as a top priority for its users, and here is how it was done!