Wednesday, December 23, 2015

The state of Delphi

Last week, three separate people asked my opinion on Delphi and which version they should be using for ongoing development.

It probably won't surprise anyone that I recommended getting the latest version, Delphi 10 Seattle  (#10Seattle) and a subscription. Always get a subscription. Or, if they can afford to wait, I usually suggest holding off until the next release because Embarcadero always has some kind of upgrade deal. As it turns out, there's one going on right now.

But why? Especially if someone already owns a previous version?

Why Delphi 10?

The most obvious reason is stability. If you have very large code bases and/or project groups, you may have had problems doing full builds in the IDE because of memory issues. Some people might call it overenthusiastic caching, others might say it's bad memory management. Either way, it was painful. This release manages memory much better and the IDE is large address aware, so it handles very large compiles and is even leaner in regular day to day use. The IDE is also noticeably snappier and more stable and the Castalia integration (which had some problems in XE8) behaves much better.

Delphi 10 includes dozens of enhancements and hundreds of bug fixes. It's worth noting that Embarcadero closed a bunch of their highest voted issues. And this isn't a one time deal. It's part of a long term effort to reduce their bug backlog and builds on the work done for XE8, XE7, XE6 and so on.

This doesn't mean there are no new bugs. In fact, this doozey made it in to the initial Delphi 10 release. Thankfully it was fixed, but yeah, problems still creep in.

Side note: Embarcadero really does pay attention to their bug reports. Whether an issue needs to be reported or an existing report needs to be improved (better description, steps to reproduce, votes), it improves the chances that it will be fixed quickly and properly, so let your voice be heard.

That said, in my opinion, Delphi 10 Seattle is the best release to date both in terms of features and stability.

Why a subscription?

First and foremost, cost. Delphi has two releases per year. If I move to a newer version within about two years (or four releases), then the subscription renewal costs less than a single upgrade. And since I upgrade every release, the subscription is a LOT less expensive. Don't take my word for it - do the math youself. I mean I like Embarcadero and all, but I'm not running a charity here. The less I have to spend the better.

Upgrading to the next version of Delphi is also easier than skipping several releases. If your code works in XE8, it's trivially easy to make it work in 10. The biggest obstacles I've had were when units have changed (DataSnap mostly) or when a whole component suite is renamed (FireDAC), but I can still usually move all of my active projects before my coffee gets cold. And I have not needed to roll back to a previous version since Delphi 4, which was unusable for me until the first few patches were applied.

The biggest reason I like to update so frequently is so that I can take advantage of the fixes, improvements and new features as soon as they are available. Like a kid with a new toy. For example, here are just a few examples from a very long list of improvements in the past four releases that I didn't want to have to wait to use:

Support incidents. Every subscription license comes with  three of these per year. Use them. Even if you don't have a critical issue, you can give one of your favourite bug reports a higher priority or get an answer or work around for some technical challenge that's bothering you. Get your money's worth and take advantage of the expertise at your disposal.

Access to updates. This includes new releases, previous releases  (with Rad Studio) and any updates for the current or previous versions. Major fixes are available to everyone, but full updates are restricted to subscription holders. If I'm being honest, I'm not wild about this policy. I think I'd rather see Embarcadero move to a subscription only model (with perpetual licenses, of course). Then again, I'm a fan of the subscription, so I'm not too bent out of shape.

Ultimately, I'd love to see everyone on subscription. That way Embarcadero isn't tempted to rush flashy, high profile releases out the door with features designed to generate revenue, but aren't always stable right away. This is the kind of thing that contributes to the backlog they are digging themselves out of. Think of generics in Delphi 2009. Great feature, but a little flaky out of the gate. I would rather see smoother releases with lots of incremental improvements and major features that are given the attention they deserve BEFORE they go out. Like the PPL.

So, back to my original point - If you are doing active Delphi development, I strongly recommend Delphi 10 Seattle with a subscription. Even if you don't plan to upgrade frequently and are just looking for a rock solid release to use for a while, my answer is still Delphi 10. If you just aren't sure, then take it for a spin.


Warren said...

Well said. Agree 100%. I like the memory bump and stability a lot.

Erick Engelke said...

Considering the number of new features added, there are bound to be issues. I found a few minor bugs in recent releases and posted them on the quality web site. All from XE7 and XE8 were fixed in 10. There is a real commitment to quality throughout the product.

Unknown said...

I would love to be at the point where I could easily just upgrade every single new release, and my #1 reason to upgrade would be IDE stability. Unfortunately, it can be a huge effort to upgrade due to each release requiring updates from third party component vendors, and tweaks to other code that no longer compiles.

If I could just say "get update", and it worked out of the box, then I would not mind paying even $10K for an upgrade. However, when it takes many months of fiddling around to get my code "un-broke", then the true cost of upgrading is staggering.

How does this work with "subscriptions"? I don't mind paying a subscription for regular updates, but they absolutely have to be easier.

SJordi said...

You forgot to mention the most incredible thing about RadStudio.
Where else do you get answers to your technical and programming questions directly from the heads of the product?
I've seen this only from Embarcadero (thanks to David I, Sarina Dupont, Jim McKeeth, Malcolm Groves, Marco Cantu...) and YNAB.
I mean you have access to highly professional highlights, guidance and recommandations from THE ones defining the product.
That only is a major reason to use RadStudio, it's priceless.

Bruce McGee said...

@Warren: It's good that you agree. When it comes to big, complicated code bases, you guys have a bit of a worst case scenario going on. Embarcadero is really stepping up.

Bruce McGee said...

@Carl: Over time, I have stopped using third party libraries that are difficult to upgrade and I have cleaned up any code that doesn't port well, usually by avoiding things that Borland and Embarcadero recommend against (TObject, BDE, strings as binary buffers, etc).

Once the code is caught up, moving to the next version is usually pretty straight forward (hours instead of months), but getting there might take some time, so it might only be worth while for projects that are being actively developed.

Bruce McGee said...

@Steve: Agreed. Two of the best sources are CodeRage and developer skill sprints.

Brian F said...

We are in the process of upgrading our very large project from Delphi 2007 to Seattle. I must say I am not impressed by Seattle. So far it does not appear any more stable than 2007. It still crashes at least once or twice an hour. Compilation randomly stops with a fatal error on random PAS files; and I need to restart the compile again (which usually succeeds the second time; or dies on some other random PAS file). I never had this issue with 2007. The compile time under Seattle is much greater as well.