This is a brief history of UI development within the broader topic of software development and reflects my personal journey to build a chessvariant application for fun. The UI matters a lot because it dominates the code in most professional/commercial applications.
Typically, the code that controls how you interact with your application takes up most of the program. It is often called ‘plumbing’ and most programmers re-write this part repeatedly in every application, ideally with only small changes, whereas the part of the program concerned with the core application may be just 10% to 20% of the whole code.
Picking up the story just before the internet (pre-1994), it was quite simple then, Microsoft and its Windows OS dominated, and the user interface was for the PC. The World Wide Web brought in a major change in UI development. Post 1994, UIs had to contend with browsers and connecting to applications that were running on a remote server in the data center. Web applications had to deal with being offline and synchronizing when online.
My interest and frustration with the UI came with my pastime desire to code a chess variant with a multi-player interface. I programmed in Java and hence the UI came in the form of Java applets that could run on any browser. The problem was that soon after I developed this application, running applets was considered a security risk and they needed a security certificate, and then they were banned altogether. Back to the drawing board for me.
Then in 2007 Apple launched the first smart-phone, the iPhone, and gave developers another UI to build for. In the wake of Apple’s success sprang a smartphone industry of copycats and we all watched with keen interest the fragmented mobile OS wars. Eventually out of that war emerged two winners: Apple’s iOS and Google’s Android.
By this point UI development could be done relatively painlessly if you stuck to one platform (i.e., one OS and device form factor) but with the fragmentation of platforms, wishing to cover more than one meant re-writing your application. Writing once and deploying multiple times became desirable if you wanted an application with the broadest reach. Enter the RIA evolution (circa 2010) that led to cross-browser/cross-platform UI engines targeting desktop and mobile, and there were three main contenders: Adobe Flash, Microsoft Silverlight, and Oracle JavaFX. However, Apple wanted a closed shop, and was against supporting any cross-platform engine. Security had a part to play in that policy; Flash was continually being updated with security patches. Oracle, the new owner of Java, was internally divided on whether to grow JavaFX or not, and eventually decided not to, giving it over to an open source community where it continues to have a life today.
Circa 2016-2017, I had not appreciated how powerful Apple’s position was, as the mobile space was still fragmented. After considering the options, I decided my next step with my chess variant was to opt for Adobe Flash. Many months passed and Adobe announced it was abandoning Flash. The mobile wars were over, and Apple was a winner. Microsoft also abandoned its cross-platform engine. And back to the chess drawing board for me.
Today we have JavaScript as the dominant browser UI scripting language with technology options such as node.js and Angular and others too many to mention. There is a separation today between programming core applications and programming the UI, as each has its own set of technologies.
This fragmentation has also played nicely for the low code/no code (LCNC) players. LCNC will release a pent-up demand to build applications that line-of-business departments desire and which many central IT departments often have no capacity to satisfy. LCNC today can play the role of a cross-platform UI builder, but solutions vary as to which platforms are supported.
UX has been the prime driver of change for the UI: the web browser gained adoption because it made navigating the internet easier, and the iPhone revolution was all about UX, it expanded the mobile phone into a handheld computer running multiple apps in an easy intuitive way. These technology waves made the UX better.
At the same time, they created new barriers for any programmer wanting to create a cross-channel UI-rich application. So, it is no surprise to me to see the rise of LCNC, taking the burden out of cross-platform UI development is a great opportunity, I think this sector of appdev will continue to grow.