Client Software Development – 3 Added Degrees of Complexity


There is no doubt that the classic Computing World is fragmenting. No more the Wintel monopoly as it is losing its 90% market share dominance of the personal computing client scene to upstart Apple iDevices, Android smartphones plus a wave of RIM,Dell, Samsung, Archos and other tablets. The PC, even in laptop form, is no longer the default computing platform of choice.

This proliferation of computing gadgets will increase as games, TV consoles, cameras, GPS and other personal devices gain WiFi access to the Web, touchscreen functionality and app development capabilities. And just as the PC market is fragmenting, inevitably client side software UIs, app software, and development tools have been fragmenting as well. But in this case, client UIs have been changing for more than a decade. So if CIOs thought their task load was bad – it has just doubled if not redoubled in complexity and new development burdens as client side development fractures into dozens of crystal crazy pieces.

It started with real time and remote control devices for logistics in themid 1990s. But the massive push away from Windows software to Web and then gadget apps has come with the emergence of Web, AJAX and Flash apps, and now gadget OS. Consider that the Web UI is now capable of delivering equal to or greater than ease of use and high powered interface functionality of the best desktop/laptop PC apps. Ditto for touchscreen enabled portable device apps. Suddenly software developers and CIOs are faced with a dozen or more new client platforms. But almost just-in-time, AJAX/HTML5, Java/JavaFX and Flash AIR apps are starting to deliver the software Holy Grail – cross platform, online and offline capable apps.

Why Cross Platform, Online/Offline Apps + Tools Are The Old and New Holy Grail of Software

The problem confronting organizations large and small is the wretched 80-20% computer budget rule. Over 80% of an organization’s computing budget is spent making the existing computer operations work – – so 20% or less is available to deliver new technology and software that will give an organization a competitive advantage in the marketplace.But software fragmentation on the server side [with incompatible silos of information and fractured/redundant middleware solutions] has now spread to the client side as well – and with a vengeance.

Thus, cross-platform in client software now does not mean just developing for Linux, Mac, Windows and HTML. Add to those Apple’s iOS, Google’s Android and Chrome, RIM’s BBOS 6 and QNX , HP’s webOS, Nokia’s Symbian and Meego, Microsoft’s Phone 7 to name just a few of the major competing client side operating systems. Now add to these the gaming environs like Sony PS3, Microsoft’s new Kinect and Nintendo’s Wii as game systems get connected and compete for home computing market share[consider Microsoft’s Kinect, despite its gaming background ,to be the next great UI advance beyond multi-touch].

The result of this proliferation of so many and radically different client side development platforms is that professional software coders are looking for relief. Currently developers have to carefully pick what platforms they will develop for. And even then, the coding and testing effort is tedious and redundant among so many new client OS platforms. So these savvy developers are looking for development tools that deliver cross platform solutions – one codebase , many target platforms. The savings in costs and development effort can be substantial. But even more important it can mean big market opportunities for your app because the app can be brought to market much more quickly and over a wider selection of gadget/devices. Hence the drive to find feature rich, reliable and speedy cross platform development tools .

Cue the entry of cross platform tools. Think Web 2 + HTML5, Adobe`s Flash+ Air , Java/JavaFX, plus a small nucleus of cross platform C/C++ development systems like Qt or Qnx plus other generator cross platform tools like Appcelerator. These tools often covered the traditional client platforms [Linux, Mac, Windows plus some flavors of Unix]; but only partially for the new smartphone and tablet based interfaces with 3 notable exceptions. Browser based HTML, Adobe Flash often piggybacking on browser implementations, and some Java/JavaFx plus C/C++ systems depending on the history of the platform. For example, Google’s Android through Java-based Dalvik has Chrome browser, Flash+AIR, and the groundworks for Java apps. RIM’s QNX has a Webkit browser, Flash, Java, plus some cross platform C/C++ systems.

But, Apple has taken a contrarian approach and has forbidden Flash and Java systems for iOS4 development requiring coders to use a new and not identical version of its Mac-primarily Objective C language. Apple says HTML5 will be the cross platform language of choice. But HTML5 has some serious problems including lack of any approved standards on multi-touch screen APIs, web databases standards, and offline support while no browser vendor passes 60% of the HTML5 implementation tests [and most are significantly less]. So given the status of HTML5 plus moves by key competitors like Google and RIM, Apple in the past few months has relaxed its stand somewhat allowing cross platform program generators like Appcelerator and hints of Adobe AIR [but not Flash]being allowed in the iOS4 development tools. However, cross platform is not the whole story.

The other magic ingredient for software success is online+offline operation. The defining characteristic of the new gadget devices are that they are mobile, untethered and often deliver a full day or better of battery life. Their utility is that they can conveniently go anywhere yet link onto the Web to allow users to connect and communicate socially or for business. But offline operations are important too. Gadgets are great to read a book, play a game, or read those downloaded files, etc. Offline operations are important when a connection to the Web is impossible or too expensive [particularly with new telecom “pay as you go” versus “all you can eat” Web connection fees] or just not wanted [moments of privacy]. So being able to deliver robust offline operations is as important as the online connections.

But cross platform, multi-touch operations available online or offline are not easy to do from software development point of view. But add one more ingredient – users want to be able to customize those applications with their own styling and special extensions. Now the enormity of client-side software is completely revealed. And so developers are scrambling for robust cross platform development tools with a lot of extras. But working against developers is the problem of modest interoperability.

With the advent of the Web , RAIA – Rich Anywhere Interface Apps are within reach using software such as Adobe AIR+Flash, JavaFX, and HTML5. And so major software providers from IBM, Oracle, Microsoft to SAP (to name just the major vendors) are rushing to provide not just cross platform but also online+offline functionality for their enterprise software. But there is a fundamental flaw-fly in the ointment – those same software suppliers to date have at best provided Modest Interoperability.

Modest Interoperability

Want to know the number one technical reason for sometimes glacial software development and delivery? Yep, Modest Interoperability. Take Microsoft Windows for a telling example. Many is the time at a Redmond software presentation the attendant IT Press reporters would ask whether Redmond would make their shiny new software like SQL Server or Visio available cross platform. The inevitable answer has been “Well, No. We have the superior client OS and by concentrating our development efforts on the Windows platform we can deliver the best solutions to our customers … in fact, we are concentrating on making our software run best on the Windows Line-up from Windows server through to Windows CE”.

There are two major problems with this response. First, that server to mobile OS presents a lot of “modest interoperability” problems. Just ask any developer that has to port programs along the line-up. Even data interchange can present major hassles – hence the attraction of SharePoint Server. But interoperable problems get much worse when Windows programs need to be ported to Linux, Mac or even the Web. But as just noted above, Apple with its new iOS4 operating environ has made cross platform portability problematic as well and has just begun with Mac Lion OS to address the issue of portability between Mac and iOS4.

Finally, other Enterprise software vendors like IBM, Oracle, SAP, and dozens of others are confronted with the same problem as organizational IT shops. What new and fast growing client gadgets/devices to support ? Which smartphone and how many tablets? And where are the cross platform development tools that will allow them to port interfaces to the selected devices quickly and efficiently?

Summary

Software has always been fragmented – there are literally thousands of programming languages, databases and middleware software solutions. But there always has been a very few dominant OS to reduce the fragmentation [IBM MVS, DEC VMS, DOS and then Windows, now Web HTML]. Likewise there have been a few leading programming languages and set of tools from Cobol and Fortran to C/C++ and then HTML+JavaScript which allowed some degree of cross platform development – modest interoperability. But now with the stunning success of mobile devices, the number of client platforms is sprouting rapidly and the client software APIs are becoming ever more complex. Consider what is upcoming for client UI software – multi-touch UI, online/offline operation, Wii and Kinect-like presence and motion detection to be incorporated into user interfaces. Think of the new software environ as presenting three degrees of added complexity:
1)a dozen or more new device APIs and OS to be integrated with the standard lineup of Linux, Mac and Windows operating systems;
2)challenging new UI features such as multi-touch screens, offline/online operation, and motion/presence plus other sensor detections to respond to;
3)the existing client and server side software only supply modest interoperability.
This 3D of complexity comes at a time when development and IT operations are stretched to the limits in many organizations. Software fragmentation is a serious problem.

Finally consider that major software vendors such as Apple, Microsoft, Oracle and others have used proprietary software to gain significant market share in various IT sectors. Thus you have the GOP Conundrum. The GOP is advocating cutbacks and reducing the deficit as its number one goal after the midterm elections. But by the simple expedient of eliminating the Bush tax cuts for the wealthy , the deficit could be reduced by $700 billion over 10 years. The GOP will have none of it. Likewise, software and hardware vendors are content to offer modest interoperability at best while some like Apple and Microsoft fight against robust cross platform interoperability in the face of crying need. In future postings, ye Keep an Open Eye editor shall look in more detail at who is helping and who is hindering on achieving robust software interoperability – particularly on the rapidly expanding client software side.