My Delphi era between 1997-2004 was probably my most productive time. I can't even count the number of apps I wrote with it. The compilation speed, VCL, IDE, compiled code performance, they all contributed to its success I believe. I even wrote three different half-finished Norton Commander clones using Delphi. I also wrote the most popular Turkish social platform with it too.
The things that slowed Delphi down was getting distracted by hype: Kylix (Delphi for Linux) and Delphi.NET both contributed to its decline along with the rise of C#. Ironically, I had cheered for both when they came out, but they basically lacked Delphi's magic: fast iteration and native performance. Also, cross-platform dev apparently didn't have big enough market at the time.
Basically, Delphi was Golang of early 2000's: self-contained native binaries with native performance in a language high-level enough. Unfortunately, they got lost on the way.
The downfall of Borland started long before Kylix.
Around 1996-1997 is when you had early signs of things going awry, when Borland tried to rebrand as an "enterprise middleware" company focused on what they called a three-tier architecture, with COM/CORBA clients talking to server middleware and databases. They bought a CORBA company called Visigenic at a time when CORBA was arguably already old hat, while also betting on COM and Microsoft Transaction Server. They were trying to get into the same enterprise space as Microsoft and Oracle, but then the web arrived and everything started moving away from desktop apps. I don't think they had the enterprise DNA as an organization, and renaming Borland to Inprise couldn't magically fix that.
It arguably started long before then. Borland had a messy history of spreading themselves too thin, trying to do too much, constantly betting on the wrong horse, and ultimately never really finding their feet. Buying Ashton-Taste to buy the already-antique dBASE strained the company, and they went off on weird wild goose chases like Borland Office when WordPerfect was already dying, and they missed the web revolution with the whole Inprise thing. They might have survived if they shed some weight and laser-focused on development tools like Delphi, but a lot of the company seemed to have been pulling in multiple directions.
LOL .NET was absolutely chock full of ex-Borland people. They laid off just a ton of people in some late 90s pre-dotcom downturn. Indiscriminately I assume because a lot of them went on to be very prominent at MS and especially in .NET. My first director as a new software engineer in MS VC++ had been 'accidentally' laid off by Borland. Apparently they tried to hit the undo button the next day but he'd already been hired by MS, so Borland fired his manager. I guess that's one way of reducing headcount.
Back in 2005, CORBA was still pretty much the foundation of Nokia Networks products, no idea where they went to nowadays.
And to this day COM's stronghold on Windows APIs only increased, as the Windows team is very much anti-.NET, most Win32 C APIs are from Windows XP days.
Agree on the other Borland stuff, I was a mostly happy customer starting with Turbo Basic 1.0, Turbo Pascal 4.4, Turbo C 2.0 and Turbo C++ 1.0, until 2000's, using most versions of their products.
My point was that not that Borland-as-Inprise failed because of COM/CORBA, but because the attempt to get into the enterprise application server space.
Early Java-based applications servers like iPlanet, NetDynamics, and WebLogic all did CORBA, but they fit into the shift to the web, and that wasn't where Borland were going. In fact, I don't think they had any web tech at all aside from Borland Enterprise Server, which was another J2EE thing competing in the same space.
I did not do many things in Delphi but I have studied the language and VCL architecture for the very purpose of determining why it is so aproachable and productive (as compared to C, Java, JS, Python and the tooling around them).
In my opinion, it is the result of following qualities:
1. The language direcly supports concepts needed for live WYSIWYG editing (i.e. properties and events) while other languages only simulate it by convention (i.e. Java Bean specification)
2. The language syntax is simple enough for the IDE to understand and modify programatically, but powerful. The properties files that define the forms are even simpler, support crucial features (i.e. references and hierarchy) but do not bring unecessary complexity as general-purpose formats do (XML files or JSON)
3. Batteries included - you can do very powerful stuff with the included components (gui, i/o, ipc, sql, tcp/ip, graphics - all the practical stuff) without hunting for libraries
4. Discoverability - the visual component paradigm with Property editor lets you see all your possibilities without reading the documentation.
5. Extensibility - you can build your own components that fully integrate with the IDE. This is my litmus test for low-code and RAD tools: For any built-in feature, can I recreate the same using the provided tools? Many tools fail this, and the built-in components can do things that are inaccessible to user-defined components.
6. Speed - both compilation and runtime, thanks to one-pass compilation and native code. Leads to fast iteration times.
7. The VCL component architecture is a piece of art. The base classes implement all the common functionality: They automatically manage memory, can store and load persistent state, have properties for visual placement (position, size) etc. The language features really help here (I remebmer something about interface delegation) but there is no magical runtime that does this from the outside, it's an actual implementation of the component that can be extended or overriden.
But of couse there are the ugly things as well: alien syntax, forward declarations, strict compiler blocking the Form Designer on any error preventing you to fix the very error and most of all: while there is very good abstraction for the components, there is none for data and state. There is no good tooling for data modelling and working with the data models. That leads to poor practices as having state in the visual components or in global variables.
I've often compared Anvil (it's web-IDE for web-apps in Python https://anvil.works) to Delphi. I'm curious how you'd rate it on those qualities (off the bat it ticks a lot of those boxes
Which is especially sad because their IDE was the best WYSIWYG GUI editor in existence, then and now. The only alternative that got even close was VB6. If they had made the transition to large screens and responsive design I think they could have dominated mobile app development when it rolled around.
They didn’t just get lost, they got sucked into Pan’s labyrinth.
The weird thing is I love Lazarus for the GUI but I'm too used to VS Code to deal with their source code editor. Coupled with the non-C-based language, I kind of feel like I couldn't write a complex program in it if I tried.
For example, if I wanted to display a .webp in a desktop GUI, I'm confident I could manage it in Python, Zig, C++, C#, and even Java although I don't have a lot of experience with it. With Pascal, I won't have my Python libraries, nor my out-of-the-box C interoperability. In fact, I don't think I've even learned how to use a library with Pascal.
I don't know if in Delphi the editor is better, or the documentation is more accessible. It feels like it has a lot of potential but barriers for entry make it not as interesting as just programming something in Python with Qt.
Yeah, Delphi (and for me now, Lazarus) still provides a substantially richer desktop experience than the web framework of the day. After having written some beautiful, rich apps with this tool, tweaking css makes me want to puke.
Even thinking of css makes me want to puke. It’s just unbelieveable how far the DX has fallen, and everyone is okay with it! Imagine starting your project from implementing poor man’s TForm and TDBEdit. And all new devs actually believe that it’s completely normal.
Yeah that's what blows me away about the fpl/laz open source UI framework, along with the whole library from fpl/laz. Labor of love I guess...it is right up there with sqlite and and linux itself as one of the greatest open source projects in history.
Definitely, Delphi, C++ Builder, Qt, Windows Forms, WPF, heck even MFC.
On Web projects I happily focus on backend and devops, every time I touch CSS there is a new tool in town, apparently now everyone is supposed to be using Tailwind.
Nothing beats Delphi for GUIs. Unfortunately, there were more VB4/VB5 jobs and I had to switch :(
Borland was in trouble long before Kylix and .NET. They wanted to be everything: enterprise, Quattro, dBase, Sidekick ... Lack of direction killed Borland.
I agree, but a lot of it was caused by the C# hype, and the FUD that Delphi was dead or dying, that got dragged up by every IT Manager, IT expert, forum, user group, etc I worked with at the time.
Unfortunately Delphi then tried to transition to dot net itself (remember Delphi 8.0!) and became a pile of crap for the next couple of versions. It got better, but by then it was too late and too steep a climb to attract new developers
I have one more big journey in Pascal to take, that is to re-write my Delphi winemaking system as open source when I retire, but at US$1350 for the Delphi professional license, I will be writing it in Lazarus.
The things that slowed Delphi down was getting distracted by hype: Kylix (Delphi for Linux) and Delphi.NET both contributed to its decline along with the rise of C#. Ironically, I had cheered for both when they came out, but they basically lacked Delphi's magic: fast iteration and native performance. Also, cross-platform dev apparently didn't have big enough market at the time.
Basically, Delphi was Golang of early 2000's: self-contained native binaries with native performance in a language high-level enough. Unfortunately, they got lost on the way.