Developers on Mac have now been enjoying Fire, our amazing development environment for Elements, for a while.
In 2018, we're taking the next step, and bringing the future of development experience to Windows, with Water.
We've taken all the best ideas from Fire, and created a new, truly Windows-specific app experience around it to let developers on Windows reap all the benefits of a fast, lightweight and unobtrusive IDE.
While being a full native Windows application created using WPF, under the hood Water shares a lot of code and infrastructure with Fire, based on shared code written for (or "upgraded" from what was in) Fire – heavily leveraging our new Elements RTL cross-platform library.
Fire and Water share a single core code base that drives all their smarts and features, written in 100% Elements code and cross-compiled for native Cocoa and for .NET, respectively. Over 90% of code is shared between the two IDEs, and only the user interface, and any operating-system specific features and experiences are created, designed and implemented separately for Windows and for the Mac.
The result are apps that fit in great on both platforms, while still allowing us to focus on implementing all future changes, fixes and innovations in a shared code base. With no cross-platform weirdness or clunky Swing or GTK UI.
It was actually a lot easier than it sounds, and than we originally thought. Over the course of about three months, beginning shortly after the Elements 9 release in November 2016, we started converting Fire's core code base – essentially anything that is not directly tied to UI – from Cocoa APIs over to Elements RTL.
Think mainly replacing
List<T>, and so on. It was straight-forward work even for a code-base as large as Fire, and it actually helped us clean the code up and stream-line it more in the process. It also helped us really drive Elements RTL forward, the benefits of which you are seeing in the new 9.1 release. Early 2017, we essentially had all of Fire's internal logic – the project system, debug engine, all the platform support, all the logic that drives the navigation, even the underpinnings of Fire's native code editor (FCE) running on .NET.
Now it was (and still is) just a matter of adding back the actual GUI layer on top. Because we are not going to switch Fire/Water to use some cross-platform GUI framework (ugh!) and become non-native on both platforms, we're rewriting those parts from scratch using WPF (and we're finding that with the proper abstraction, even there a lot of logic can be shared). And we're also not just porting the existing UI across, we're rethinking every aspect, to make sure we keep what makes Fire great, but also end up with a truly great Windows-specific experience.
While the results are not quite at the stage where we want to share them in a preview just yet, this is coming along great – and Water already is in a place where Fire users can feel right at home, yet Visual Studio users can have a refreshing dip in a simpler, more streamlined and – dare we say – better-performing environment.
We positively cannot wait to share Water with you. A previews have available to all users with an active subscription for a while now, as part of our weekly Elements 10 builds.