I’ve been working on a whitepaper titled “Choosing The Appropriate Web User Interface Technology” for more than a year now, with input from Sun, Adobe, Microsoft and everyone here at EffectiveUI. I’ve rewritten the damn thing four times now and have decided to abandon the effort. The blunt truth is that there is no credible way to articulate, in a simple whitepaper, the complexity of making a platform decision. I could write a book on the subject, but the problem is the book would be out-of-date by the time I wrote the outline.
If today EffectiveUI’s clients were to ask, “Should we look at Flash, Silverlight, HTML5, Objective C, Java FX or some other platform?” my answer would be, “Now, more than ever, it depends.”
What’s worse, many bloggers are adding to the confusion by forecasting the death of some platforms or drawing the wrong comparisons from one to another. So to help clear up some of the confusion (or, perhaps add to it a bit), I thought it would be helpful to review some of the things our clients are thinking about.
There are a matrix of considerations that go into deciding what platform is right for your particular organization. These considerations should be weighed uniquely every time you decide to take on a new software project. They include:
Existing Technology Skills
Choosing the right user interface (UI) platform should start with a simple question: What can my development team execute and maintain?
Although answering this question is critical to the success of a project, you must also consider what platform is best suited to meet the business and end-user requirements. Sometimes it actually makes sense to choose a platform your team is not familiar with because its business and end-users’ needs have outgrown your team’s current skill set.
How long do you believe your platform of choice will be around? In essence, this is a bet you are placing on the platform. This is also one of the most volatile considerations because of new announcements happening every day that change the game and disrupt the playing field.
Legacy systems, data structures, client machines and business processes will all inform the choice of a UI technology. Some platforms integrate better with specific legacy systems than others.
In any software system, scalability must always be a consideration. However, when creating a UI, a scalability discussion can become complicated. This is primarily due to the inherent distributed nature of UIs. In browser-based software, much of the computing and processing can be done either on the client machine or on a server.
An example of this distinction can be seen in the creation of a simple calculator. Developers can write a Web page that takes in user input, sends data back to the server to do the calculations then sends the results back to the client machine. Alternatively, developers can simply create code to run on the client machine, removing the requirement for the extra processing on the server.
If this simple calculator example is applied to more complex tasks, such as sorting a set of data alphabetically, drawing a line chart or validating data entry, one can begin to understand that offloading processes to the client machine will inherently make the system more scalable. Careful architectural planning is extremely important when making decisions between client and server processing.
Software typically needs regular maintenance. Changes in legacy systems, increasing user demands, additional business requirements, bug fixes and improvements in scalability are all reasons for maintenance. The more difficult it is to maintain a software project, the longer it takes to make changes, and the more apt those changes are to break something else in the system.
Security also can pose a challenge. As with scalability, you must decide early on in a project what data clients will see and what data the server will maintain.. Typically, if architected correctly, all UI platforms are equally secure. As long as the application programming interface (API) infrastructure is not exposed to provide unauthenticated data, the site should be reasonably secure.
THERE IS NO COMPLETELY SECURE UI PLATFORM. This is because each may require integration with a back-end service. The UI is only as secure as the API that supports it.
UI security can be broken down into two primary buckets. The first is described above, in what we call “system security.” The second is client security, or the ability for the UI to hack into a client’s machine and run malicious code.
How well does the platform perform under sever-data crunching, multitasking or other CPU intensive operations?
The UI platform needs to be robust enough to handle more sophisticated processes as end-users engage in more complex tasks. In our simple calculator example earlier, any platform would be perfectly fine. Some online systems, however, have higher demands for social interaction, real-time data, video, collaboration, charting, etc. This level of sophistication requires a UI platform that can handle more integrated online interactions.
Strength of the Development Community
How easy will it be to find developers for your project?
You must mitigate the risk of running into platform bugs. There is no way to eliminate the risk of software development issues, but addressing the maturity of the platform will help reduce some of these risks.
Simply put, will the end user have to install something to get the system to work? Every platform, project and line of code has some level of balance that will need to be achieved between system sophistication and system compatibility.
Are the tools used to develop and design your UI sophisticated enough to alleviate frustration among your teams?
We define user experience as a means of driving better user adoption. User experience can be somewhat subjective, but most will agree that software that is pleasurable to use will have a much higher user adoption. Certain UI platforms give design and development teams more flexibility to create better software.
There is a major shift happening in software development — the shift toward user centricity. Most IT projects today are started because of a user adoption pain-point. Building software that focuses on user adoption first and enterprise maintainability second requires nothing short of a religious awakening for most CTOs (and many CIOs and CFOs, too). The platform that is right for your organization may be the one you can actually get adopted companywide. You must consider the religious and political nature of the developers and dev. managers before trumpeting adoption of any technology. By the way — this is where startups have a major advantage over larger enterprises; they get to adopt newer techniques and platforms without religion or legacy issues.
Philosophically, each provider views his or her platforms as uniquely positioned to do things a bit better. But what does “better” mean for you? After considering 20 different ways to slice the data, I decided to look at each from what I believe is its long-term vision.
Write once, deploy anywhere.
Its ubiquity, active developer community and the maturity of the flash player itself
It also has the best designer tools and a great designer/developer workflow model.
One word: Apple. You can view Flash content on almost every device on the planet produced in the last five years with two glaring exceptions: The iPhone/iPod Touch, and now, the iPad. This alone has caused every one of our Flash developers to pick up either an HTML5 book or an Objective C book. Additionally, Apple’s and Adobe’s relationship is strained at best. Neither company is showing a lot of maturity when discussing the other. Watching them fight is a lot like watching two parents squabble in front of their children during a divorce. I wish, for the sake of developers and consumers, they could find a way to get along.
Who will choose the Adobe platform?:
Companies that want the best, cross-platform user experience for browser and desktop applications
Those same companies will see development on the iPhone and iPad as either not relevant or so relevant that they believe they need to develop custom experiences for those devices.
Write everything from the database to the client using the same skills and developers.
The story plays. If I am the CTO of an organization that has invested heavily in Microsoft technology, Silverlight needs to be looked at seriously.
Ubiquity. I know that Silverlight is seeing some great traction, but it still pales in comparison to the Flash player. Additionally, to believe Silverlight would ever appear on the iPhone or iPad is like believing Daisy, our COO, will give me the company credit card and tell me “go have fun in the Apple store” … never gonna happen.
Who will choose the Microsoft platform?:
Silverlight does make a ton of sense for companies that control the whole technology stack. Many organizations have the luxury to enforce a Silverlight download to their sales team so they can view the new sales portal they built in Silverlight (for example).
Sun’s Java FX:
See everything under Microsoft Silverlight and replace “Silverlight” with “Java FX” and “Microsoft” with “Sun.”
Microsoft and Sun are basically competing against Adobe for the client side of computing. I believe they are betting enterprises will want to stick with their Java or .Net developers and deploy on their proprietary runtime. In other words, they are betting that Flash will not be taken seriously by large enterprise IT departments that already have huge Microsoft or Sun investments.
Apple, Objective C and HTML5
All right — I know Apple does not own HTML5, but it is placing huge bets there. Apple’s development model is very clear: Control as much as it can on its own, and rely on a fully open standard for “the rest for the developers out there.” You may also ask “Does Apple even belong in this list?” – Well, they do because of the disruptive impact they are having in our industry right now. You can not have a conversation anymore about software and the web without also talking about the iPhone.
The user always comes first.
A huge headstart on mobile and similar bets on mass consumer computing with the iPad. It Apple values user experience over developer experience which is clearly resonating with the late adopters of technology.
Its challenge is maintaining its leadership position in such a crowded and coveted marketplace. It also is going to be challenged by when its customers realize Club Penguin, NeoPets, Mint, Hulu, Disney or Farmville do not work on the self-proclaimed “Best Way to Experience the Web.”
Who will choose Apple’s platform?:
Simple — those companies that want to reach Apple’s customers.
A little note about HTML 5
HTML 5 is still in its infancy. It is certainly not a Flash or Silverlight Killer. However, it will be a viable option in many circumstances, but will not answer the call for more sophisticated, complex and richer web experiences.
What about Google and Android?
Who? Sorry, but we are rarely asked to participate in building software for the Android. Of course our eyes are on it, and we are building a few interesting things on the platform, but Google has yet to figure out what Apple has down, and that is the unified user experience. From iTunes to the App Store to eBooks to the devices.
Worth a mention, Unity
Where does this leave us?
I asked Brook, our chief software architect, about where he is steering our development team. He put it simply and concisely: “Dexterity.” Right now, all of our clients are realizing how unique their situations are compared to other organizations building online software. Where we have seen the most success is when we help articulate the end-user’s needs, the business challenges, and craft a strategy for each of our clients, specific to their organization’s individuality.