Dozens of Delphis
7/18/2008
There are 6 versions of Delphi in common use today dating including Delphi 5 back nearly a decade. This is quite unusual for developers to be commonly using nearly decade old tools. It is a real testament to Delphi's flexibility and durability. There are some other factors for this as well, and it also presents a lot of problems for third parties.
Commonly used versions of Delphi today:
- Delphi 5
- Delphi 6
- Delphi 7
- Delphi 2005
- Delphi 2006
- Delphi 2007
I have omitted Delphi 8 because I do not know of a single developer using it today. For non Delphi users reading this post, Delphi 8 was a QA disaster which made both Visual Basic 4, and Windows Me look like case studies in quality.
This is very unlike Visual Studio and other IDE's. Most Visual Studio users have MSDN which provides them with free upgrades, but new versions of Visual Studio also have a large number of compelling features to upgrade. Microsoft also did not suffer from the "Borland problem" that only recently has been settled.
3 Years Ago
I have several sources of my information. Some I can reveal, some I cannot. But the ones I can reveal are Indy and IntraWeb users which are quite representative of Delphi users. Three years ago, the largest contingent of users were using Delphi 6, with many users using Delphi 5 and Delphi 7. Delphi 2005 had just been released. While Delphi 2005 commercially as I understand it was a success and some users upgraded, most users firmly remained in Delphi 5 to 7.
Usage 3 years ago, the order of popular use was:
- Delphi 6
- Delphi 5 / Delphi 7
- Delphi 2005
- Commodore 64
- Altair
- Delphi 8
Today
Today the situation is a little but different. There has been a noticeable uptake of users upgrading and moving to Delphi 2006 and Delphi 2007. I have not had a chance to look deeply into the latest data, but based on what I've seen here is my estimate of usage in order today.
- Delphi 7
- Delphi 2007
- Delphi 2006
- Delphi 5, Delphi 2005
There is a survey that produces similar results at CodeGear Guru. It shows Delphi 2007 in the lead, however is sampling of less than 500 users. Furthermore, its likely from the borland.public.delphi.non-tech crowd. The majority of Delphi users never appear there and likely did not take the survey. None the less, it does confirm that even among the Delphi uber-active, Delphi 6 and 7 are very present.
Most Delphi 2005 users have gone to 2006 or 2007. Both 2006 and 2007 are widely used. What is interesting though is what happened to the Delphi 5 and 6 users. These users primarily ended up in one of these places:
- Delphi 7
- Delphi 2006 or Delphi 2007
- Microsoft Visual Studio.NET
Many went to Visual Studio because of Delphi's .NET hiccup, and the Borland separation limbo fiasco. Enough said about that, this post is not about this aspect.
The move to Delphi 2006 or Delphi 2007 makes sense. I think the reason we do not see a lot of Delphi 2005 users is the introduction of software assurance. This has made it easier for users to upgrade from Delphi 2005 to a newer version. I have not understood why so many users are staying in Delphi 2006 though rather than going to Delphi 2007.
The move to Delphi 7 is a very interesting one though. Many users chose to upgrade, but still chose to stay with a much older version of Delphi. While the IDE's from Delphi 2005 on are drastically different then before, it does not boil down to that.
The divide can be simplified though into two camps:
- Delphi 5, Delphi 6, Delphi 7
- Delphi 2005, Delphi 2006, Delphi 2007
Why would users choose to stay in Delphi 5 to 7? Post Delphi 7 there was a lot of instability with Borland and worry about Delphi's viability. During this time many third parties also closed shop, or stopped supporting Delphi. This left a lot of components unavailable post Delphi 7, unless the users were willing to port them. Unlike many other languages, Delphi libraries typically come with full source. Assuming a user did not need .NET support, porting to a newer version was not that difficult. So that means that many users simply did not see a compelling reason to upgrade.
Delphi 2005 to Delphi 2007 put a lot of resources into .NET, and the IDE. The Win32 portion of the language received some nice additions, but mostly in Delphi 2007. Many users did not find the new IDE features compelling enough, and the Win32 side of the language was largely ignored. Delphi while still very usable was really starting to feel dated compared to the evolution of C# and dare I say even VB.NET.
Enter Tiburon
The next release of Delphi, aka Tiburon is just around the corner and due for release later this year. Two of Tiburon's major features are Unicode and generics. These are features that really pack a lot of punch and will be interesting to many users who did not upgrade previously. The introduction of Unicode though is going to be incompatible with a lot of libraries. With many of these libraries being essentially unsupported and no longer developed, this looks to cement many users in Delphi 7. On a personal note, being involved in Indy and especially IntraWeb which has custom designers, supporting so many Delphi versions really does increase the resources required. Such libraries cannot take advantage of generics because they must also be source compatible back to Delphi 5.
Let's Go
This got me to thinking. What could be done to entice users to upgrade to Tiburon?
Libraries
Most libraries are going to require a fair bit of work to compile in Tiburon. It is not just the fact of having Unicode, but Delphi users for many years have used AnsiStrings for dynamic binary buffers, and indexed them and assumed they were always ASCII. This type of code must be rewritten in most cases to handle Unicode type strings, or be forced to use AnsiStrings. But again, many of these libraries no longer have a company developing them.
Option 1 - Port
Porting the libraries is the easy answer. But who? For this to work, CodeGear must inventory the most commonly used libraries and back an active effort to port these libraries. This would in involve not just a coordinated community effort, but also would require funding, CodeGear resources, and even outsourcing.
Option 2 - Compiler Flag
Another option is to add a compiler flag, lets call it D7Compat. When this is defined, string would be a normal string, and the proper VERXX conditional would be set. A new conditional would be created as well to detect this mode. This would allow most older libraries to be compiled unchanged or with minimal changes. These libraries would be compiled against a newer VCL which includes bug fixes and new features. Then user code using these libraries would have to either use AnsiString themselves, or make sure strings are converted before calling these libraries. However the user code itself would be free to use Unicode, generics, and new VCL features.
Target Delphi 5-7 Users Financially
Tiburon has a lot. We cannot expect CodeGear to go back to the early days of Turbo Pascal and offer Tiburon Architect for $99. But what could be offered is a stripped down version of Tiburon that offers at least as much functionality as Delphi 7, and upon proof of ownership of Delphi 5, Delphi 6, or Delphi 7 eligibility for a special priced version of this Tiburon.
This version of Tiburon for example could exclude new IDE features and other new functions added post Delphi 7. But it would have the basic Tiburon IDE, and the new compiler. The difference should be large enough that the normal Tiburon versions still have a value proposition, but that the stripped down version should offer to the Delphi 5, Delphi 6, and Delphi 7 users language features and some IDE features to move out of their dated versions.
This offer could be made at an extremely reduced price for a limited time, and then after that still at a very reasonable price.
In short, make it easy, make it interesting, and make it urgent. Moving users to Tiburon would allow third parties to refocus resources other places, bring in revenue for CodeGear, and also recommit users who are otherwise "just hanging out".
<< Previous Entry Next Entry >>
Use my contact form to contact me directly.

