Thursday, February 11, 2010

Why DevCo pulled TurboDelphi ...

Many years ago, there was Delphi 2006 (Professional) and TurboDelphi 2006. For those of you who remembered, this was the "bug-fix" version of Delphi 2005.

Delphi 2005 was a basket case. Before Delphi 2005/2006, Your reviewer was happily using Delphi 6/7, some of his friends were using Delphi 5 and some even Delphi 4. Many of you would remember the Kylix fiasco, where they released 3 amazing Kylix versions without any bug fixes :), or how they released Delphi 8, or Delphi.NET, which was almost unusable. Ditto for C++ Builder for NET, which was "more of the same".

After overwhelming complaints on the Borland newsgroups, Borland released Delphi 2005, which was mostly unusable garbage. To everyone surprise, and alienating everyone, they told everyone who brought Delphi 2005 to "upgrade" (costs more money) to Delphi 2006. Most people thought Borland was joking - no Unicode, just another version of Delphi with more bug-fixes, no 64-bit support, no proper 2.0 NET support (while Visual Studio supported NET2.0). To add insult to injury, 2 months before Delphi 2006 was released, Borland was offering Delphi 2005 at 20%-30% discount price and then tell those victims who brought Delphi 2005 to upgrade again to Delphi 2006. Right.

TurboDelphi 2006 review
TurboDelphi 2006 was the smaller cousin of Delphi 2006, minus the (useless) bells and whistles, like TeeCharts (rarely used?), IntraWeb (nobody uses it), Midas (nobody uses it), DbExpress extension (rarely used), extended ActiveX support (nobody uses it), UML (nobody uses it), Rave Reports (nobody uses it), Interbase support (nobody uses it). It was almost the perfect "version" of Delphi - the price was right, all the useless garbage that could be replaced by 3rd party libraries.

Let me explain:
- TeeCharts. The Professional Delphi 2006 never came with source code version and missing some files, which when asked about, David Berenda from TeeMach explained that you need to buy the full version. Of course, you could buy the full version at US$400 more or US$800 with sources (historic prices, 2006) or you could live with making your own charts from some freeware code from Torry.net

- IntraWeb. The Professional Delphi 2006 version came with a 5-user license, which it seems nobody seems to use. If it was used, we'd be having thousands of sites powered by IntraWeb, but atlas, even AToZed's own website uses ASP.NET, and you don't have to buy IntraWeb/Studio to use ASP.NET. If you wanted to make websites, you could use Visual Studio/ASP.NET express which seems to do almost everything that Delphi did for almost free. Even the hosting for ASP.NET web-projects are as of today, still cheaper than website hosts who host IntraWeb sites. So not having IntraWeb means no need to look at it all the time browsing between Standard VCL libraries and 3rd party components.

- Midas never caught on, maybe because of run-time licensing fees (it was waived in Delphi 2007+) or because it was so buggy and slow, and it often resulted in crashing the server-side portion of MIDAS when connecting to a MIDAS-enabled server. Between MIDAS and the emerging WSDL/SOAP, SOAP was free (depending on which library/which platform) and interoperability meant you could substitute MSSOAP for MIDAS.

- Few people used Interbase Express, probably because there was Jason Wharton's IBObjects, which promised transactions, working decent support for both Interbase 6.0 + Dialect 3 and Firebird 1.2 + Dialect 3 and transactions, and proper memory management during threaded database calls. And of course, not to mention Unidac, IBDac. Since Interbase Express no longer works with Firebird 2.0+, most people cannot be bothered with using it.

- Few people used that TogetherUML add-on that came with Delphi. Most people simply saw it as a fat, bloated add-on to Delphi which slowed down the IDE so badly, the Delphi IDE came to crawl and sucked-up all the RAM on those 2006-era PCs. The solution? Disable the Together UML support. Together, forever :)

- Few people used the StarTeam that came along with the Delphi 2006. It was touted as one of the best Version Control System - until Borland neglected it. Just press F1 on StarTeam and see the half-baked help file, or how the StarTeam server required a US$1000-per-user license. Borland reduced prices later, but at US$1000, you could buy PerForce (which has much better speeds, better versioning support) or use other cheaper VCS systems.

- Few people used Rave Reports, for 2 reasons: There was Report Builder Pro, which seems to do what Rave Reports did, and Fast Reports, which seems to be better than Report Builder Pro. There was also this strange website - www.nevrona.com that barely worked.

- Since few people used Delphi-NET, that meant lost sales. But really, it was a good thing, since it meant that TurboDelphi compiled faster (since that NET-crap didn't have to be installed with TurboDelphi) and all those not-needed things were removed.

- COM requires some explanation. Most of the ActiveX/COM restrictions could easily be bypassed by looking up Torry's or Google Groups. Since Delphi 2.0 onwards has never properly supported COM/persistence, COM/Database layer, COM/serialization, you had to write your own codes from snippets all over Torry's or Google Groups, if you wanted to make that ActiveX DLL or Com Automation Server that worked correctly with Microsoft Word.

For the benefit of doubt, try making an automation server that works with IE5/6 (and now IE6/7/8). That's why there is no "good" Internet Explorer Toolbars made with Delphi. (You can make one, but if you browse around, there is no good solution for IE8, other than using Visual C++). Or try making an Automation Server (read carefully) that works with Microsoft Word, you'll notice it's almost impossible because Delphi's memory manger fragmented Word memory and caused it to crash. An automation server refers: Word menu - Insert|Object, insert your Delphi component to the Word document. Using Delphi with OLE Automation is very popular, however, if you use older versions of Delphi, if you / or your component mismanages memory in COM, you get frequent Word/Excel/PowerPoint crashes and unhappy customers. That's why there's some vendors who sell XLS-generators, RTF generators. Go figure.

- Since you probably don't need Turbo C++ Builder (except for that occasional ZLib compile, or simple C codes compile), you could just email the requested sources to compile to your friend and get back the OBJ files to use. Oh well. Since most Delphi users don't use C++ Builder, they don't miss out on those additional Unit testing tools.

- The remote debugger, you could replace that with emitting debug messages to GExperts Debug helper or using MadExcept or Euraka Log (or older Diamstr Logger for those who know).

- Since most ISPs hosts MSSQL, MySQL, and interestingly - don't host Blackfish or Interbase 2007 server, it was another unneeded thing that you didn't need to unnecessarily pay for.

- All those additional database library support came from using DBExpress. But the problem is it don't abstract the metadata from different servers or abstract the SQL statements, so you get some fiddly process of using different database servers, weird SQL results and no source codes, which means = extremely long delays to fix DbExpress bugs. Since TurboDelphi didn't include this shagpile of code, it meant you could buy a 3rd party database solution that realistically worked.

The kind of Delphi your reviewer would love
Your reviewer recommended TurboDelphi to his beloved friends, since they could not afford the US$800 upgrade price (price includes VAT, S&H and taxes) and those new friends who could afford US$300 for a hobby but not US$2500.

Since TurboDelphi was free, you could actually recommend it to someone, and get him hooked. but atlas, there was no TurboDelphi 2007, TurboDelphi 2008, TurboDelphi 2009, TurboDelphi 2010, probably because:

a) Borland was cash hungry and TurboDelphi was eating-up into profitable Delphi sales. It's simple to explain. People didn't need to all that additional and unnecessary codes.

b) Borland does not have a clue that what is shipped is full of bugs, it's like almost non-existent QA and the only working codes were the add-ons that 3rd-party vendors supplied. It was so bad that some people started a FastMM project, FastCode project which is now in the Delphi 2006 RTL.

c) They wanted to make the balance sheet a bit nicer, so they could command US$100million for the sale but no takers.


The 64-bit suspense
... Fast forward to today, why there is no TurboDelphi 2010 -

Embarcadero needs money now to finance 64-bit support. Your reviewer looked at the RTL/VCL, and all the low-level stuff. Most of RTL/VCL is in assembler magic. If you use Olly/IDA, you can see the very large internal assembler, internal parser, internal Delphi code generator that lies in the heart of DCC32.EXE.

Your reviewer noticed that the FP - Delphi floating point codes are still at 486/Pentium levels (to be fair, the Delphi RTL uses MMX codes from the FastCode project), most codes are still at the i386 level, like as if everything else from the day Anders Hejlsberg (the architect of Delphi) left, only bug-fixes and Delphi language-updates were made. It was only until Delphi 2009 was released, that serious improvements were made into Delphi itself.

- To make a 64-bit EXE, it would require a 64-bit byte-code bootstrap code to make the assembler:

E.g.,
copy tasm64.exe /b MZStub.bin + Section1.bin + Section2.bin + Section3.bin + Section4.bin + ...
[where this is the DOS copy command to copy sections of files into one EXE file]

- To make a Delphi 64-bit compiler, requires Debugger, RTL, VCL, and other things to be fully upgraded to x64, and then embedding parts of the assembler into Delphi compiler itself.

This requires lot of work, lot of skilled expensive people (which Borland was never able to afford), lot of time and ... money.

It would be simply suicidal for Embarcardero to release a TurboDelphi which would kill the Delphi 2010 sales, and this would in-turn, slow-down Delphi/64-bit support...

but the masses, the wanna-be Delphi developers, the old-timers, the new developers want a TurboDelphi 2010....

It would be between financial redemption - the ability to finance newer versions of Delphi - and financial loss - 1000 copies x US$0 = US$0. Maybe 100,000 copies x US$0 = US$0.



The Delphi moment
If there was ever a moment, it would be to really consider that TurboDelphi was a step in the right direction. There is really no need for TeeChart, no need for IntraWeb, RaveReports, and others fancy not needed features. Why not push them off the cliff and tell those vendors they are no longer needed?

With every new version of Delphi, Borland/DevCo/CodeGear has to stop selling the older version due to "copyright restrictions", presumably, due to 3rd party that's contained in Delphi. It would be just nice if these additional "copyright restrictions" are no longer present in Delphi, and we can get along with having the best and greatest version of Delphi.


It would be also time to think of a dream Delphi -

- Delphi with DevExpress components built-in
- Delphi with FastReports components built-in
- Delphi with /IPWorks components built-in
- Delphi with CoreLab's Unidac components built-in
- Delphi with TMS/LMD ElPack/LMD Tools components built-in

Just switch the RaveReporter to FastReports, switch the Indy stuff to IPWorks, switch the AToZed VCL to TMS or LMD or both, and add in some DevExpress stuff. Replace the DbExpress with Unidac (and don't forget to upgrade the TurboPower components). Then make price affordable - that would be a Delphi everyone will buy.



:)


Article corrected for x64 inaccuracies.

6 comments:

El Cy said...

Just wondering how much you still love the Delphi IDE/Language ...etc ?
It seams that you still care a bit about its fate ;)

Anyway, some concerns of you (and others) have been addressed into this thread:

Turbo robbed Pro sales?
https://forums.embarcadero.com/thread.jspa?messageID=211666

(hint: search for Michael Swindell)

Delphi Haters said...

Did you see that I wrote this before Michael Swindell wrote his message. I am aware of what Mr. Micahel wrote.



It still does not address the need to have less expensive Delphi version.

But wait., that's the idea, make it sky high expensive, with all not needed features and then constant upgrade fees.


That will suck all the money out before the first profits are made.

Unknown said...

Hi folks,

It looks like I am not alone in my feelings. It's nice to know that.

I'm programming professionally on Delphi since 1995 (D1). Even though D2010 was released, our team remains sitting on D7, as it looks stable enough and quick for nowadays hardware. I would agree pretty much with everything what's been said here about Delphi's fate. It's sad that Borland/Inprice/CodeGear/Embarcadero (missed anything?) treats Delphi developers and companies, who bet their business on Delphi, as a drug addicts, who has no choices with their Delphi legacy projects. But it's all matter of time. I believe in very close future Delphi will be really gone. That's why we are refactoring our project to other more popular language.

Ibirite said...

Your blog is awesome dude! I was imagining if I was the only one that may have this kind of oppinion about Delphi, but now, Im sure there are more people like us. I was a vicitm of this Delphi 2005 to 2006 "forced" upgrade, but I never did it. But I still have this crap (delphi 2005) here...

Tom Sullivan said...

IA64 is Itanium, not x86-64, which is what I presume you meant.

By the way, why are anonymous comments not allowed when each blog entry gives no clue as to who posted it and whose opinion it is?

Gilson said...

I have a Delphi 2005 original license and I built many applications with D2005, I learned how to work around the few IDE bugs.