Why “final” version 5.0 is not the correct word

I always talk about “final version 5.0”, but I think that’s not the correct word. Because final means finished, and that’s not the case, of course. When I say “final version 5.0” I normally mean “stable version 5.0” or “initial version 5.0” or “contains all features of version 4.0” or something like that. It’s just the version 5.0.0.

Older users already know this, but I want to write a little bit about Diving Log updates in the past. When you take a look into the changelog of version 3.0 or 4.0 you will notice that the “final” or better initial version 4.0 or 3.0 had not a lot of new major features. In the past, the initial version was always a new base for the next 4 or 5 years, a new technology to start from adding new features. And you will notice that there were “minor” updates which brought a lot more features than the “big” update 3.0 > 4.0.

Why is it so? When the big software companies release a new major update, the feature set is fixed for the next 2 or 3 years. So they have to put everything new into this update, and then they deliver only bug fixes, but no new features until the next major update. With Diving Log it’s a little bit different. Major version number updates are always fundamental changes, mostly in the background. They are a good base to deliver updates for the next years.

As I wrote in my 2nd post in this blog back in February, Diving Log 5.0 is a complete rewrite of the whole application. Version 4.0 was developed in Visual Basic 6, a now outdated technology, not further developed by Microsoft. The successor is Visual Basic .NET, a modern object oriented powerful development system and the technology behind Diving Log 5.0. The problem is (or better was), that there is no automatic upgrade path between VB6 and VB.NET. It’s not like converting a Word document from *.doc to *.docx or a JPG image to a PNG image. The best solution is to do everything again, copy and pasting parts of the code where it is possible, rewriting the remaining code completely and creating the whole user interface from scratch.

Well, Diving Log is not a small project, version 4.0 contains more than 62000 lines of code, version 5.0 more than 82000 lines. Rewriting such an application, doing everything that perfectly worked, a 2nd time is really a pain. Luckily I found this blog post from Joel on Software about the Netscape drama 10 years ago not before I started this, but when I was almost finish šŸ˜‰

Things You Should Never Do

They did it by making the single worst strategic mistake that any software company can make: They decided to rewrite the code from scratch.

Unfortunately I had no other choice than to rewrite the whole application, because of the missing upgrade path from VB 6. One of the best decisions I made was, that I’ve developed new features since January 2008 directly in .NET and integrated them into version 4.0. This helped me to keep version 4.0 up to date while porting the application to the new platform. But since beginning of 2009 I had to stop the development of version 4.0 completely to concentrate on the main part of the application. It was a long time and hard work, and you as an end user won’t notice any huge changes. But that’s a good sign, because it was my goal to keep the character of Diving Log, I don’t wanted to have something completely different.

A few things are still missing from version 4.0 and I integrate them in the next few weeks. As soon as everything is complete, translated and stable I have to update the website a bit and release the initial version 5.0. Then I can plan the required database upgrade to add new data fields and dive profiles and finally working on the really long feature request list. But I always have to be careful “not to spoil the software” like written in the coding horror blog:

In the software industry, the release of newer, better versions is part of the natural order.

But for some software packages, something goes terribly, horribly wrong during the process of natural upgrade evolution. Instead of becoming better applications over time, they become worse. They end up more bloated, more slow, more complex, more painful to use.

So with the tons of feature requests, I have to find a good balance between new useful features and bloat. I’ll try my best šŸ™‚

I wish you Merry Christmas and a Happy New Year, enjoy the holiday season!


Comments are closed.