The recent Xojo is technical debt discussion on the Xojo forum has sparked some thoughts in my mind. This isn't really about that discussion though, otherwise I'd keep all my thoughts there. But some of the comments about Xojo's quality has me wanting to write about my experiences both inside and outside the company. Many blame the rapid release model for Xojo's perpetual beta status, but I don't think it's that simple. In fact, I think the rapid release model is a symptom, not the cause.

In most projects there exists at least two branches of development. Though their names may vary, at the high level they are the stable and dev branches. Bug fixes are typically made to stable and merged into dev, while features are made into dev and merged into stable only when it's time for a new feature version. Stable versions can be released with great frequency, giving more time for the next feature version to become ready for release. In very well organized projects, every feature is given its own branch and merged into a feature release only when appropriate.

Xojo doesn't really operate this way. There are still two branches of development, but they only overlap during the testing period. Once a release is declared finished, all work - both bug fixes and features - are made to the same branch. This is because Xojo doesn't want to make point releases. They do it only in exceptional cases.

As I mentioned earlier, the rapid release model is a symptom. The cause is Xojo's desire to have their cake and eat it to. Their pricing model wants to be a subscription. Subscription software is very desirable for revenue because even if you don't make more money, you can make consistent money. With my own Beacon app, I could probably make at least twice as much money selling it as a subscription. I don't because I hate subscription software. And therein lies the problem: people dislike subscription software. So the rapid release model was introduced to get close to a subscription without actually being a subscription. They want to sell you a year of updates and in order for you do not feel cheated by that, they promise a certain number of feature releases per year.

That's not a bad thing in and of itself. Such a model could work, and one could argue it is working, as Xojo has been doing this for years now and they are still in business. But the fact that customers complain about this model is maybe an indication that something could be improved.

The heart of the problem is that we get 3-4 feature releases per year, and very few bug fix releases. I'd like to see more bug releases. At one point the team talked about being able to deliver framework fixes weekly. That might be a bit extreme, but a new build of fixes every other week would be remarkable. Then every 3 months (or so) we'd get a feature release. Heck, I'd be happy with feature releases every 6 months.

While working at Xojo counter arguments about quality with the fact that each release sees hundreds of bug fixes. That's true, but it also brings with it additional changes which make developers uneasy about updating their Xojo version for existing projects. As the saying goes, the devil you know is better than the devil you don't. Developers would rather work with the bugs they are aware of than risk discovering new bugs, which Xojo has a habit of introducing each release. And since releases don't happen for months, we have to suffer those bugs for a long time, if they even get fixed for the next release.

That's why more frequent bug fix releases would do wonders for the community. If I update my IDE mid project and discover a bug, when a bug fix release is only a couple weeks away, I can probably wait it out. There's no guarantee the next bug fix release will include the fix, but it could. I'd still rather wait 4 or 6 weeks for a fix than the minimum of 12 we wait now.

Every developer knows that feature releases have the most bugs. Mine do. It's very normal for the ".0" releases of anything to be the most buggy. But most developers correct that pretty quickly with bug fix releases shortly after the feature release. Xojo does not, and that is where the customer confidence problem comes from.

If Xojo wants to shake this "fix one thing, break two more" reputation, they need to actually release rapidly. I sure as hell wouldn't be successful only making 4 releases per year, and my app is much simpler than Xojo.