S3 Backup 1.0.1 — ID collision fix

Here’s a first of the post 1.0 updates: S3 Backup 1.0.1. This release addresses a problem that was discovered during the release candidate release series.

Why we have a custom licensing system?

For S3 Backup and our future products we wanted to have a licensing system that works as smoothly as possible. While the familiar system of issuing keycodes to unlock functionality kinda works, it is also clunky to manage, it requires the customer to take a series of actions that should not be necessary copy-pasting the codes, storing them for future reference etc. It’s a system that descends from the times when computers did not have Internet connectivity and in a better world would be a historical curiosity by now.

So we wanted to do better and provide customers with a smoother experience starting with trying the app out, then to purchasing a license and beyond. The licensing system we developed does this by making all license management web-based. When the app is installed it learns its unique ID that it uses to ask a central server for the licensing status for that machine. The server maintains a database of our customers and the instances of S3 Backup they have installed and can respond to the app with details of its license without the user doing a thing.

We have a customer-facing portal where you can see your app instances and assign them licenses you’ve purchased or issue trial licenses. We have a lot of improvements planned for all parts of the system, but it already does great and our customers seem to appreciate how smooth the whole thing works.

What the issue was?

So back to what the problem was. As mentioned above all of this depends on the app knowing an ID of the machine and that ID being globally unique. There should not be two different computers with the same ID or the system is useless. Unfortunately that is exactly what happened for some of the computers. We were relying on Windows to provide us with such an ID and as to be expected from external dependencies the IDs were not globally unique. Most computers are not affected, but some end up getting the ID which is already bound to a different customer and therefore there’s no way to manage the license for that computer.

The solution

Immediately after this was discovered we’ve prototyped a different ID generation algorithm that is based on the computer’s network card IDs and generates a properly unique IDs. The simplest thing would be to then release a new version with that change. That would mean that even if the app was installed on that computer before, the ID would change and the system would treat is a new installation, requiring the user to issue a new trial license or reassign the purchased license to it. Easy for us, but bothersome for the customer, so we decided we’ll have none of that.

Instead we have processed our license request logs to find out which IDs had collisions and handle them separately. If your computer was not one of those that got the unlucky ID assigned by Windows your current license will be migrated automatically with no actions required from you. You can just download the update, install it and when you run the app, you’ll see that your license is the same you’ve assigned to it before.

However for the computers that got the ID with a collision, the app will need to be bound to the customer and issued a license just like the first time the app was installed.

Does this apply to me?

First of all, this does not affect new users. This only applies to users who have been running S3 Backup versions from 1.0 RC2 to 1.0.0 FINAL.

Most people who have S3 Backup installed never experienced the issue and this will not affect them in any way. If you have purchased a license and have successfully assigned it to a computer, this does not affect you either (we can tell this from looking at the database). If you tried to bind your installation to your account and experienced a “permission denied” error, you did have encounter this issue and this release will fix it for you.

Another way to find out if this applies to you is to open a licensing window and refresh the license. For anyone whose computer has an ID with a collision, you will get a notice like this:

/static/s3bk/screenshots/lic/s3bk-id-upgrade.png

All computers with an ID like that will also eventually start having a warning like that pop up automatically when the app runs. If you are not affected, you will not have this warning.

If you just upgrade to the 1.0.1 or later and the license shows what it did before the upgrade, you don’t need to take any action either.

We apologize to everyone who had to deal with this problem and hope that our handling of the issue assures you that we take customer satisfaction seriously and put in the work to make sure the app works as well as it could for everyone.

We now move on to releasing further updates with features and some fixes we had to hold back for this.