Вселенная Кудзу

«Программирование - искусство, воюющее со своими творцами»

Kudzu World  »  Blogspace  »  Kudzu's Tech Blog
English - Română - Русский - عربي

RSS Feed

If you want to more easily stay informed of updates etc you can subscribe to the RSS feed. Just point your RSS reader at this page, auto discovery is enabled.




Using PayPal?
Read this


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:

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:

  1. Delphi 6
  2. Delphi 5 / Delphi 7
  3. Delphi 2005
  4. Commodore 64
  5. Altair
  6. 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.

  1. Delphi 7
  2. Delphi 2007
  3. Delphi 2006
  4. 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:

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:

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 >>

Comments: 

PavelS 2008-07-19 05:24:34
I second your ideas, but think your propositions will not happen. I am a RAD Studio 2007 user (both Delphi and C++Builder) and I will not upgrade to Tiburon because of the missing compiler compatibility flag (as announced by CodeGear). My code has a long history (back to TP5) and uses too much "legacy" libraries. It would be too much work to adapt them all to Tiburon and all this work would be unpaid. I will probably stick with RAD Studio 2007 forever. After all, I was using D5 till last year.

JasonS 2008-07-19 06:36:18
I think you will be surprised at how many libraries "just work" when compiled with Tiburon.
Chad Z. Hower 2008-07-19 07:02:44
Some will, but I bet the large majority will not. Indy required a lot of work, and it had already been made Unicode aware and had stopped using strings as binary buffers a long time ago when it was ported to .NET.

IntraWeb also required lots of changes.

TurboPower needs a lot of changes.

So while a few might build, the majority won't without a fair bit of work.

Q 2008-07-19 11:40:00
Jason,
I think you might also be surprised at how many will not "work just fine" in tiburon.

Q

Patrick van Logchem 2008-07-20 10:27:36
Nice story Chad. In our shop, we where stuck on Delphi 5 until 2006 arrived. Before, I had already ported our codebase over to 2005, but we never made the step then. Once my team switched to 2006, I ported our codebase over to 2007 and stuck with it. Keeping code compatible for both 2006 and 2007 is a no-braniner, but we dropped support for 2005 as soon as we had enough 2006 licenses.
Now with Tiburon I'm faced with a much larger porting effort, because our codebase was build from ground up on the assumption that characters are a single byte type. We have custom database drivers, indexes, hashtables, encryption, communication and other code, all hardwired on byte-sized characters.
I estimated porting our codebase over to Tiburon will cost us about one and a half man-year; An invenstment we will just have to make, as we've postponed Unicode-support way too long already.

On another note; When I ported our code from Delphi 5 over to 2005 and 2006/2007, I also upgraded our code to use either Indy 8 (for Delphi 5 only), Indy 9 or Indy 10 - at the whim of a conditional define.
Indy 10 however didn't appear as stable as Indy 9 for us at that time, so we kinda stuck with 9. But now with Tiburon I'm glad I maintained Indy 10 compatiblity, because it seems likely Indy 9 won't be ported.
What can you tell me about the state of stability of Indy 10 right now?
I consider this information to be a bit vague - The Indy 10 resources I found on the web are scattered and sometimes contradicting.
For example, is there or isn't there a stable release for Indy 10?

Regards, Patrick.

Patrick van Logchem 2008-07-21 07:34:30
Nice story Chad. In our shop, we where stuck on Delphi 5 until 2006 arrived. Before, I had already ported our codebase over to 2005, but we never made the step then. Once my team switched to 2006, I ported our codebase over to 2007 and stuck with it. Keeping code compatible for both 2006 and 2007 is a no-braniner, but we dropped support for 2005 as soon as we had enough 2006 licenses.
Now with Tiburon I'm faced with a much larger porting effort, because our codebase was build from ground up on the assumption that characters are a single byte type. We have custom database drivers, indexes, hashtables, encryption, communication and other code, all hardwired on byte-sized characters.
I estimated porting our codebase over to Tiburon will cost us about one and a half man-year; An invenstment we will just have to make, as we've postponed Unicode-support way too long already.

On another note; When I ported our code from Delphi 5 over to 2005 and 2006/2007, I also upgraded our code to use either Indy 8 (for Delphi 5 only), Indy 9 or Indy 10 - at the whim of a conditional define.
Indy 10 however didn't appear as stable as Indy 9 for us at that time, so we kinda stuck with 9. But now with Tiburon I'm glad I maintained Indy 10 compatiblity, because it seems likely Indy 9 won't be ported.
What can you tell me about the state of stability of Indy 10 right now?
I consider this information to be a bit vague - The Indy 10 resources I found on the web are scattered and sometimes contradicting.
For example, is there or isn't there a stable release for Indy 10?

Regards, Patrick.


Add your comment: 

Name:    
E-Mail:  
URL:  
Comment:  
Please add 3 and 8 and type the answer here:



Use my contact form to contact me directly.