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:
- Sensor components for VCL
- Apach server support (welcome back)
- Parallel Programming Library (PPL)
- Free IBLite for Windows
- Improved web encoding/decoding
- Improvements to array syntax, including string like operations
- HTTP client API
- Asynchronous Programming Library (builds on PPL)
- Mercurial support in the IDE
- Settings migration (finally)
- 64-bit iOS support
- Bundled DUnitX
- Use CHM instead of H2 for help
- Lots of stability and memory handling improvements
- Auto-recover (just in case)
- Windows 10 controls
- JSON improvements
- SHA2 hash
- Castalia integration
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.