Friday, October 14, 2011

Embarcadero Delphi XE2 / FireMonkey Review Findings : Not Ready, Incomplete

Delphi XE2 : Reviewers / Users Not Pleased

UPDATE: Delphi XE3 release date is here, and I have posted a blog entry about Delphi XE3 New Features; some of the concerns with XE2 / FireMonkey may be resolved with FireMonkey2 / XE3 improvements. 

I am a long-term user of the Embarcadero Delphi (formerly Borland, Inprise, and Codegear branded Delphi) RAD (Rapid Application Development) IDE, programming language (which is object-pascal) and VCL (Visual Component Library).  Recently I wrote a blog about the Exciting New Features in Embarcadero Delphi XE2 and how much I was looking forward to putting the new FireMonkey components to use in particular.  Also, while reading this, keep in mind the fact that (for me) FireMonkey was the one thing that was going to keep me interested in this product for my Windows development platform of choice.

Well, here is the simple fact of the matter: Delphi XE2 / FireMonkey is not ready for prime-time.  I have discovered that I am not alone in this opinion, and it appears that Embarcadero has done itself no favor by releasing what many consider an unfinished product.  Perhaps I am premature in predicting the final demise of this platform and product, but that is essentially what I am doing: it is over... at least for me.  I have used Delphi since version 2.0, going all the way back to 1995, and have been a loyal and avid fan of the development language, IDE, and components.  But, I am 99% sure that I am finally calling it quits. Here's why...

Poor and Missing Documentation

I have totally had it with the total CRAP documentation that has come with Delphi since ever since Delphi 7.  I have heard promises of improvements for years, and with every small improvement comes a host of missing documentation, bad or missing hyperlinks within the documentation, a poor (and god-awful slow and inefficient) documentation-browsing interface, etc.  I long for the old days where I could quickly find all the help I needed and quickly navigate links to related information; those days are long gone.

I just can not take it anymore.  It is absolutely inexcusable how pathetic the documentation efforts have been, regardless of which company has owned the rights to Delphi (Borland, Codegear, Embarcadero).  Clearly documentation is barely as step above an afterthought for these companies lately as they probably consider it nothing but an "expense"; never mind that this expense is what leads to a product I actually may want to purchase!  With all sorts of new features simply nowhere to be found in the documentation, my level of frustration is epic.  I have seen as good, or perhaps better, documentation efforts for open-source projects (you know, all those projects that are notoriously lacking documentation). 

FireMonkey Bugs, 64-bit bugs, Missing Features

I am not going to re-hash everything that people are experiencing with FireMonkey, as it just furthers my frustrations with this incomplete and buggy product.  But, here are some of the things that are worth noting, as pointed out on blogs like Delphi Haven and AnalogMachine:

  • the omission of Actions and action lists
  • aside from the very basics, Keyboard handling is crippled
  • Property/method reference documentation (as I more than hinted at earlier)
  • TMemo has serious bugs.
  • Substantial differences (and missing capabilities) in FM form-designer behavior vs. VCL-forms designer behavior.
  • the 64-bit Compiler has some serious bugs.
  • And many more...
Delphi is now looking more and more like a total dead-end for me and certainly will not help my career in the least bit; I am no longer willing to wait for bug-fixes to back their technological improvements that ship without proper testing.  And, I do not want to continually pay for the right to deal with such poor quality.

Delphi XE2 Update-1 and Update-2

Embarcadero has released the first couple "updates" (Update 1) for Delphi XE2 and (Update 2) for Delphi XE2 that will supposedly begin the process of correcting some of the deficiencies in this product. But, I am at the point I do not care. Why? Because we all know (based on past behavior) how this will go... they will issue approximately 4 "updates" (i.e., BUG FIXES) to the product during its life-cycle and before Delphi XE3 is released, at which point you then will be forced to PAY AGAIN for what should be free and continued bug-fixes!

And, like darn near every single "release notes" published in the past 5 years by these folks, this XE2 Update 2 release-notes document also has screwed up hyperlinks to the supposed "list of fixes".  Currently, in the "General" section of this document, see where it says (I cut/pasted this from their site):
"For a complete list of the specific problems fixed in this update, see the "List of Bug Fixes in Delphi and C++Builder XE2 Update 2" at: <a href=""></a>"
Well, guess what folks... the above quoted HTML really links to some OLD Delphi XE Update 1 list of fixes and even points to the German location (/de).  THIS IS SO TYPICAL!  AGAIN, WHERE IS THE QUALITY-CONTROL!?  I really would have liked to see what is truly "fixed" in this XE2 update.  Ughghgh!  Do we now have to post a QC (Quality Central ... heh, "quality", yeah... ok) entry to report this messed up URL?  Again, this is TYPICAL and has been the case for years.  I think it is done ON PURPOSE since they really have no list of updates prepared!  But, who is dumb enough to keep doing this and keep peeving their customer base?!

This practice of shipping bug-ridden, unfinished software products is common among MANY software firms these days... they put out an unfinished/buggy product, patch it a few times for "free", then force users to purchase yet another "upgrade" to get any future fixes/improvements regardless of how strong the case is that there are still substantial bugs in the product you PAID for!  It gets old, and it gets very darn expensive! And, I have seen long-standing substantial bugs go unfixed through multiple major-product-versions/iterations (Delphi and their help-system clearly have had long-standing substantial issues).

Delphi XE2 : the end of the road for my Delphi use

For the reasons laid out already, and for the added fact that there are VERY FEW Delphi Jobs / Contracts available anywhere these days, I am leaning toward totally ditching closed-source development tools like Delphi.  There are some great free and open-source products and technologies out that I am going to be evaluating in depth and preparing to move to.

I am likely go to just HTML5 / SVG / JavaScript wherever possible, and I may totally ditch "native Windows applications" except for those situations where I absolutely require the performance and sophistication I can only achieve with compiled code.  I have prior versions of Delphi that I will continue to use to support some of the systems I have written for my own use of course, but I also plan to begin the inevitable migration to other technologies.  I am not looking forward to migrating my systems include lots of SQL-Server interaction (using VCL dbExpress or ADO components), but such is.

Although I believe Delphi has provided a super-productive development environment and language for developing Windows applications over the years, I also see the writing on the wall: Delphi is a niche tool whose niche continues to shrink as people move to web-based everything.  And, Embarcadero is not helping Delphi's cause when they release buggy unfinished software with equally pathetic documentation.  Perhaps I will again assess Delphi when the inevitable Delphi XE3 appears on the scene, but for now, I am avoiding any further investment of my time and money into this product.

UPDATE (January 2012) for anyone still interested in Delphi XE2: Embarcadero has released Delphi XE2 Update 3 and has put a new Delphi XE2 ISO Image with Update 3 online.  I have not taken time to download and install it, though I did read through the release notes of fixes in Delphi XE2 Update 3, and it appears they are slowly working through the massive pile of major errors and issues.  Surely it must be "better" than the initial premature release of XE2. But, I am still a major skeptic and will only consider a hands-on Delphi re-evaluation when Delphi XE3 is released -- and, Embarcadero had better take time to ensure a much higher quality product if they are to convince me to ever use their development tools again.


vicente said...

I have read your blog. I think like you, but is difficult to change everything suddenly. I think that Embarcadero have to invest in web tools (components to access to javascript, html5, css....) and forget firemonkey. If you discover some tool to develop like delphi, PLEASE, send me a link. Bye.

Al said...

Not impressed by Embarcadero in replying to my queries about XE2. Seems like this company is only concerned with the user base it has than trying to gain new comers to their products. The help file is abysmal, the last Delphi I owned was D6 and I loved the help system, along with D5 before it.
The demo of XE2 leaves me wondering if this is the end of the road for Delphi. I'm also finding code that worked for the vcl is useless when used on a firemonkey form, but no help on the changes or how to achieve the same result across the platforms.
Sick of releases coming quickly to generate a quick buck and leaving bug ridden products and their users feeling robbed.

Mike Eberhart said...

I am totally with you... the help files are terrible and there are just so many issues related to this annual release cycle push. I'd be MUCH less critical of these Delphi "releases" if each release did not equal more of my money dumped on their alpha/beta-quality technologies. Clearly some of the new "versions" over the years have been nothing more than larger service-packs that we are being forced to purchase. This is true of a lot of software from a lot of companies these days. And, the fact is, it will ultimately cost them more as long term Delphi developers like us give up on the product. I have used Delphi since v2 and found Delphi and the VCL to be the most productive development tool available, but sadly this half-baked release (XE2) has done little but waste my time and make me wonder how long it will be til the product (and Firemonkey) are truly ready for serious applications development. I fear it will be a while, and I can not afford to wait to find out.

I will surely let you know if i find a great Delphi replacement for development. I have been evaluating all sorts of HMTL5/JS/CSS components, widgets, etc lately and although there are some interesting things out there, the fact is *none* of what I have found even comes close to the VCL's power. I actually started writing my own SVG and Javascript-based "Component Library" from scratch that would mimic some of the abilities of Delphi's VCL. But, that is a LOT of work and I am simply no where near as productive in JS as I am with Delphi (I constantly find myself longing for true OOP features), so it is likely I will never finish these SVG "components", but perhaps I will put them online soon for others to see what I have attempted, conceptually. :)

Ciprian Khlud said...

I think that Embt had to fight two winds: to get new users and to not lose the old ones.
Overall I think that Delphi improved qualitatively at least on old features, as I work in day for day fashion with D2009, I felt the pain of working of not working with generics, or the part that it has no proper Ribbon control, even it was exposed as a selling point feature. As for now those features are basically working in D2010 onward. So I think that the best thing to do is to not update Delphi for a feature just after releasing of it but to wait for the next year release. In this way you will see tutorials poping up. At the end as for long term, probably patching Lazarus/FPC is a better commitment and all people win: you don't pay the IDE, but all your improvements will improve on your needs basis for you and all other users.
At the end, as I worked mostly with .Net tools, I can say that WPF was launched for some time, but was a bit broken in VS 2005, was giving crashes and slowdowns in VS 2008 (because of not optimized video drivers, as there is a blog post about EasyNote going from WPF to C++).
As for going Web, I think that this is a good way to go. Another, if you want to be "native", is Qt Creator, which is a decent IDE, with great documentation. Another way is using .Net as a core and Gtk#/Mono on Linux, WinForms/WPF/Silverlight on Windows.

Anonymous said...

I agree, firemonkey is a waist of time, What development software are you guys using?

Willy said...

Thanks for your blog post. I have not been using Delphi since around 2002, when I switched to PHP and web programming. Delphi brings back some good memories, especially the 2002 Borland conference in San Diego where I managed to get the Delphi Certification while being drunk.

Switching to HTML5 is a very good idea, and there are many frameworks or toolkits that allow you to develop one app that will work on most mobile devices and the web.

Anonymous said...

As a company we are about to begin development on a new project, which is a basically a CRM & ERP system that can handle multiple databases and production and delivery scheduling. We contract out some of our development, and these contractors use Devexpress, and are able to develop at a rapid pace. Our company has developed for many years using Delphi. As a project manager my programming manager has convinced our stakeholders that Delphi XE2 and FireMonkey is the correct path moving forward. From what I have read and the advise from the contract programmers this seems to be a big mistake? I would appreciate any feedback or further comments.

Mike Eberhart said...

Anoymous CRM developer:
This is a tough call indeed. The fact is, all of us devoted Delphi developers have heard since 1995 how Delphi was "dead" or "risky". Much of this was due to the usual MS FUD (Fear/Uncertainty/Doubt) planted in the market as they tried to launch VB to compete with Delphi (and, VB was light-years behind in capabilities).

Sadly, that constant attack on Delphi has created a rather self-fulfilling prophecy for what is a fantastic platform (the VCL, Object-Pascal, and the RAD tools). This made Delphi a niche-market. And, this leads to a relatively small pool of Delphi developers (compared to other "mainstream" tech developers).

But, does that make it wrong for your project or company? A lot depends on how committed the company is to locating, retaining, and potentially training developers. As far as the FireMonkey stuff: THAT is a whole other ballgame in my opinion. Whereas the existing VCL is very, very good, the FireMonkey stuff just seems beta-quality still. I expect it will improve, but depending on your project's timeline, I have no way to know if it will improve quickly enough to meet your needs. Much will depend on how demanding your UI requirements are and so forth.

I would certainly recommend that any substantial project (starting from "scratch") takes time to do some moderately-complex "mock ups" that test the toolset and components for viability and suitability. And, this is NOT just a Delphi-only piece of advice: I'd take some time to evaluate 2 or 3 top contenders (software/tech stacks) and then compare notes. In the end, Delphi may just be the right answer.

Best wishes.

Anonymous said...

I have similar issues- where is the documentation? Why is it so hard to provide documentation that gets users up to speed with the developments and upgrades? Doesn't Embarcadero want developers to find and use the new features as quickly as possible?

Sad about this- I want to use the product, but have to spend a lot of time finding info on how to do it. When I picked up Delphi 2, I could search in the help system and get going in minutes. Now it takes hours or days to find explanatory info. Why?

Anonymous said...

"Upgrading" to XE2 was a total waste of my time and money. Can't even run a simple hello world VCL application.

I see that all comments made here will have to be approved by the blog author so I will restrain from profanity, but let's just say that, if I could write what I want, there would be a few "@#%$" and "*&%#@" thrown it.

I too, have sent email to complain to my account manager... they didn't even have the decency to reply.

I guess I have learn my lesson. Fool me once, same on me, fool me twice shame on you.

Anonymous said...

I have been using Delphi 4 since 1999. I have evaluated every version since then, but really they never improved on the ability to create a win32 app after that. With a few 3rd party comps (Diamond ADO being the main one) I have never needed to change.

Every version just made larger footprints but nothing new - nothing that could not already be done in D4 (though in some cases with 3rd party comps).

I also am now migrating toward html5/css/javascript for UI but I still use D4 (with a comp called "cgiExpert" to create the server side - but that may change as I am not sure how long win32 has to live in the server world.

M Meyer said...

I am a delphi/c++ builder developer from the way back and currently use BDS 2006. I had high hopes that rad studio xe2 would allow me to port my win32 application to the mac with a minimum of code changes - just remake the form using firemonkey. (anyone know if apple will accept an app into the mac app store if it's been made with rad studio?)

However, from what i have read here it looks like i'll have to make the switch to xcode. Not looking forward to that, but i don't want to comprimise the quality of my product by using a buggy development system. Glad that i read all these comments before buying rad studio.

Rhys Drummond said...

I've been using C++ Builder since BCB3. My latest project using XE2 / FMX took a while to get the hang of, for sure, but it's not that bad, and once you know the obvious bugs it's quite workable. I miss obvious omissions like Actions and component hints, but I've made do. The end result is actually looking pretty damned good.
No it's not the end of the road for me, not by a long shot.

Anonymous said...

there are several changes from older delphi version to the latest XE2.

The claims on VCL and DELPHi XE2 I can't not confirm, could get all my apps transfered from D7 to XE2

We made a first trail eval with FM, also not that bad as mentioned above. You need to check it out in more details, and get all update s on this product

Anonymous said...

delpgi is not the best solution on all platform - but cross platform on Win, Ios and Android still offers a very attractive tool

Anonymous said...

Wow Mike calm down a bit. I personally have never needed the help files in Delphi you can pick up better and example ridden info just looking up solutions on Google. Also the advent of 64 bit programming in Delphi a truly RAD platform pretty spectacular if you ask me. I have been programming for 35 years and have yet to see a language of it's like for speed of creation and idea to exe ratio. your reasons for wanting to ditch Delphi seem a bit flighty. Perhaps you should spend a few years programming in Microsoft languages, I think if you start with the latest you should see the buges out of it in about 10 years or so.

Mike Eberhart said...

I never have disagreed with you in regards to Delphi's ability to produce fantastic, speedy applications/EXEs. I have always been a proponent of Delphi in regards to its fantastic productivity / RAD abilities. Again, it has been a favored language and development tool of mine since 1995. And yes, I am excited by 64-bit development.

But, I am concerned about how the quality of new features has suffered at the expense of pushing out new (costly) releases on a regular basis. Given a limited budget for purchasing development products, I would rather wait for a solid release than purchase a release that I know is essentially beta-ware that I will then have to purchase an upgrade for in order to get what should be *included* bug-fixes. Delphi is certainly not the only product suffering this fate in recent years.

As for using MS products: I do. SQL-Server is my primary database and has been since the mid-1990s. I have used Visual Studio some and generally HATE it. I am not disagreeing with you on the MS side of things. But, my discussion was not focused on moving to MS products as an alternative to Delphi: in fact, it was about moving to "open" platforms -- HTML5, Dart, JS, etc. that I do not have to pay thousands of dollars per year for development tools in order to use. I cannot yet get the productivity out of such things that I can/could from Delphi, but I am willing to bet that the market for Delphi applications continues to dwindle just like most desktop-centric applications (EXEs).

Trust me, I'd much rather stick with the tried-and-true Delphi of old that I so enjoyed using for years. But, there is essentially no market for Delphi (skills). Just search the job-postings: I do. There is nearly nothing, and when I do find postings with Delphi in the skills list, quite often it is only for porting from Delphi to something else. That does not bode well for a marketable skill.

I find this all frustrating as heck as Delphi was so far ahead of its "competition" for so long, but it suffered the fate that many MS-targets of FUD suffer: eventual irrelevance. MS prevented Delphi from gaining a widespread foothold in corporate settings, and as such, it ended up relegated to a position of a niche tool for ISVs generally. I loved it for developing software products that I marketed outright, but it rarely landed me consulting gigs over the past 5+ years. Everyone wanted "MS experience" instead; so, I, like most developers, had to also use Vstudio/DotNet to land consulting gigs.

Thanks for the comments. I respectfully close with this: I am calm :)

Anonymous said...

Dude, just use Lazarus and Free Pascal. It's really not bad.

Anonymous said...

In a way, I agree with you. EMB, is not doing things right, they are over their heads, and they tend to suck developers for money.
But as far as Delphi (as a RAD tool) is concerned, I still regard it as the best development tool on the market. The speed with which you can get from a blank form to a running project is unparalleled. At least for exe projects.
And in my line of work, developing software for little/medium companies, software that utilizes a database and maybe some HTTP and FTP... Delphi is irreplaceable. I can deliver any application/project at this scale , in half the time that would be necessary for me to spend using MS stuff.
Also I tried HTML5Builder and I am extremely happy it exists. It is awesome, and does all those things that a regular desktop programmer (delphi) hates to do (like write js code, design HTML by drag/drop on a form, and so on).
Of course, like I already got used to, there are bugs, there is no real documentation, but in the 15 days of trial, I succeeded to "find out" and actually build a test application using it.
Also I received answers to my questions from EMB every time I had them. I do not like at all the fact that H5B does not have a Grid component included, especially when jQuery Mobile is such a big part of the H5B platform. The lack of a grid component forces the buyer, to keep buying... that is, to buy additional components like jtGrid (130$). Apparently, lately, there is a Grid component available (presumably free) but my trial version expired before I found out about it. In order to promote your product, and convince users that your product is the best choice for them, you must give them a compact working solution, that answers all their problems. By making me search and dig the google for third party solutions, EMB is annoying me. And I am truly interested in buying and using H5B in the future, I just need it to offer all the basic functionality that any developer requires.

I agree that most of the new components in Delphi have a long way to go until they are bug free, and also I agree that they lack documentation (I hate that, by the way). Also I did not use FireMonkey yet, and after reading through these blogs, I am rather afraid to start.

There is a little chaos in the path that EMB is walking on, that is clear, but so far it is not that dark.
I look forward to the news: the iOS version, the Android version, HTML5 Builder updates, and bug fixes in general. And honestly I will give it another shot. I will buy the XE3 if iOS and Android support will be there. Also I will try to "try" again the trial version of H5B and see what is new there, the grid issue and so on, and if convinced I will buy that too.

The fact that EMB releases every year a new version of Delphi just to be able to ask for money again and again from the same developers that already bought last year's version is disgusting. This is in part the reason EMB loses clients. I am not willing to pay each year a large amount of money to have the same tool I already have, plus 2-3 more components and minus 2-3 other components. It's ridiculous.
After D7 (my first), I only considered useful to buy the XE version, and honestly these seem to be the 2 major/real versions of Delphi. And now I assume the third version will be the XE3 when it will have the iOS and Android support.

As a conclusion I still love Delphi and I will give them one more chance. Let's hope they wont disappoint me again.