Marco, let’s start off with more of a general question: What’s your impression – how popular is Delphi in Europe in general and Germany in particular?
That Delphi is fairly popular in Europe is not just an impression, but it is actually a fact. Even in the past, US sales were surpassed by European ones, but today the difference is very significant. There are many reasons for this difference, from the fact US developers tend to prefer languages invented there (hard to believe, I know), to the different type of applications being built (less Windows and more Web), to a different relationship of the developers with Microsoft, and also the fact Delphi communities in most European countries have remained active and have kept being attractive for other developers. Most of the Delphi conferences happen in Europe, and the exceptions are in the Asia Pacific region, not in the US.
If the popularity of Delphi in Europe is high, Germany leads the group being likely the country in the world with the largest number of active Delphi developers. Last year, we decided to name the new release of Delphi after Berlin to underline the fact we have a large community there.
Other European countries like the Netherlands and Nordic countries have also many Delphi developers in percentage, not as many as Germany in absolute terms. Russia in another country with many developers.
Outside of Europe and the US, Japan has been historically a good country for Delphi developers, with several large companies that invested on it. There is a huge and growing number of Delphi developers in Brazil and China, although the business in both countries is not as big.
The Windows-centric world Delphi was originally focused on doesn’t‘ exist any more. How has Delphi been keeping up and what’s in the pipeline to help developers address today’s and tomorrow needs?
It is true that the original Windows-centric world is long gone, with Windows at the second or third place in terms of most popular OS. However, we see that small and large business still rely heavily on Windows clients, and a lot of Windows applications are being maintained (and also many are being built). There is still a significant role for desktop client applications in the business space, when data entry is critical and the flow of information is large, web apps have a hard time keeping up.
Having said this, Delphi has been moving towards the new multi-device world for quite some time. Today you can stick on the good old VCL for Windows, if that’s your exclusive focus, or use Delphi to target Android, iOS, macOS, and Windows on the client side, alongside with Windows or Linux on the server side. For each of these platforms we have build native compilers, producing the proper ARM or Intel assembly code, and an entire tool chain (linker, local and remote debuggers, remote platform deployment and code signing and support for deployment on devices, simulators and app stores.
In terms of development model, we have kept our key focus on the RAD model with a rich palette of UI controls, part of the FireMonkey library. We have a pretty unique multi-device designer, allowing you to customize a single form for different devices and preview it in the designer and on the device in real time. Beside the UI, the set of FireMonkey components include support for device features and sensors.
In a different direction, we have pushed Delphi towards the Internet of Things world, by building a technology for rapidly generating components for commonly used IoT devices using different protocols, by supporting Beacons and Beacon Fencing, and integrating IoT support with server side technologies.
The Windows 10 platform is evolving rapidly. In what ways can Delphi and especially Visual Component Library (VCL) be of use when building Windows 10 applications?
What we have tried to achieve with the VCL is allow developers to fully embrace Windows 10 without having to rewrite existing applications from scratch. We improved our support for styling, to have VCL UIs look more modern. We added several new VCL controls specifically designed for Windows 10 UI (and mimicking some of the native WinRT controls). We also introduced a lot of interoperability with the WinRT subsystem, so that VCL applications can call traditional Win32/Win64 APIs, interact with the Windows Shell via COM, and now also invoke WinRT APIs directly. This last is very simple to do, much more than using Microsoft tooling.
Once Microsoft made the Windows Desktop Bridge public, we started supporting it right away in the Delphi IDE, so that building a Windows Store VCL application is really simple.
Let’s turn to the cloud: how can you leverage the power of cloud hosted data and applications from the Delphi perspective?
Delphi has started supporting Cloud data storage by providing ready-to-use components for Azure and AWS many years ago. Later we have pushed to a slightly different direction, which is making sure we have general purpose components for REST APIs. We created a REST Client library, including support for different authentication modes, and an HTTP client library underneath. The idea is with cloud and REST platforms evolving fast, we should focus on the building blocks to enable our customers targeting any service they need.
In terms of hosting your applications on Cloud services, there is nothing special in terms of Delphi compiled applications, but this was a driving factor in building a Linux compiler, given hosted Linux systems are getting more and more popular compared to their Windows counterpart. This is being fostered by Docker and similar technologies, but also by the price difference in hosted VMs.
Last year, Embarcadero went back from a six month update cycle to more regular updates, the first one being Delphi X 10.1 Berlin. What was the motivation behind this decision?
There were two driving factors behind this change. On one side, most of our customers are still largely focused on VCL and on that platform updating your projects and third party components twice a year was received negatively from developers. We had many (justified) complaints for this, and looked for ways to get back to a slower cycle — with more intermediate binary compatible updates in between.
The second driving factor was the switch to mandatory Update Subscription (which is what most other development tools require, even if they might words as as “first year license” and “additional year license extension”). Delivering additional features and support for new operating system in a free update to all customers incurs in revenue recognition issues (a fairly complex US accounting regulation) and delivering those fixes only to the customer on an optional subscription outrages the other developers (yes, we tried it). Now that everyone is entitled to updates and new releases for the first year and as long as they keep renewing, we are free to provide features in updates as much as we like — only issue being the extra effort in maintaining compatibility.
Delphi 10.2 Tokyo was released in March 2017. What are the most important new features and updates from your point of view?
The new Delphi Linux 64-bit compiler was clearly the main feature of the Tokyo release. There was a Delphi compiler in the distant past of Delphi, but a new one was long awaited and it has been very well received by our customers. This is a modern, LLVM-based, optimized compiler producing 64-bit Linux executables and including specific support for building server apps, with Apache HTTP server integration.
There were other changes in the VCL and RTL libraries, some minor but nice IDE improvements, and many fixes alongside. For VCL, with Tokyo we delivered a cleaner version of the Windows 10 and Windows Store support already in Berlin Update 2.
RAD Studio has opened up to the Internet of Things. How does it support developers in connecting smart devices?
As mentioned above, we are addressing the new world of Internet of Things in different ways. The first thing we did was creating libraries (and ready to use components) to interact with Bluetooth LE devices and Beacons. On top of that library, we defined an architecture for building components for specific IoT devices, all directly available for free in the IDE on our GetIt package download manager. The other specific feature we build was BeaconFencing, with components to define beacon maps with zone to track users entering and existing specific area of a mall, airport, stadium, or other indoor location equipped with Beacons. There is nothing comparable out there, and we have been very proud of this architecture.
We have also partnered with Boian Mitov of MitovSoftware to improve the way Delphi applications can work among side Arduino boards and Mitov’s Visuino software (which is written in Delphi, by the way). Boian has done several webinars demonstrating how Delphi applications can interact with Arduino boards. On the Raspberry PI platform, instead, if you install the Android OS you can run your Delphi applications directly on the board.
Finally, we have been pushing for a model of local processing “near the device”, using mobile or desktop apps connected to devices and even local databases like IBLite (the free embedded version of InterBase), rather than the fairly popular idea of mobile devices sending all of the data they collect to cloud system blindly. If you have a thermometer, do you want to store the temperature to a cloud database every minute, when it hardly changes? If makes more sense to have some intelligence (that is, an app) local to the device that can send average data every hour, send instant data when it changes (even more often as needed), and even trigger alerts and alarms in case of unexpected variations. We are calling this model “edge” processing, and have fully enabled our RAD Server architecture to make it easy to support it, but you can easily implement the same logic with any custom architecture.
Needless to say the entire Internet of Things phenomenon is still very much in evolution, and we are ready to add support for its key tenets are they become popular.