Trendy Development

There’s a term I have yet to hear coined in the mainstream development world. Perhaps I should trademark it..

Fellow developers should instantly know what I mean when I say “trendy development”. Think of it as being a little bit like stonewash pants from the 80’s or bellbottoms from the 70’s.  A decade or three ago they were insanely popular, yet most people wouldn’t be caught dead wearing them now (don’t laugh, I know you still have a pair in the back of your closet).  The ideas behind software development styles and directions are subject to similar kinds of ebb and flow.   Sometimes we get lucky they produce new breakthroughs, other times it can lead to a “fashion faux-paux”.

For some time now there has been a big push in development to make everyday apps browser based.  Companies like Google are investing vast amounts of money and resources in developing what were previously client side applications into something accessible in a standard web browser.  So far, the results have been impressive with examples like GMail, Documents, and the like.

Therefore, I am naturally confused when I read about things like Adobe AIR, where the goal is to take these same common applications, continue to re-develop them using current web technologies, yet remove them from the normal web browser (like Firefox) and deliver them as client side executable programs. These programs would run in something very much like a web browser, only it would be specifically customized to run just their respective applications.

Here’s an excerpt from Adobe’s website:

The browser has become the preferred way for delivering many applications because it allows easy deployment across operating systems and simplified application maintenance. Plus, the modern programming languages used in the browser enable rapid application design and development.

The Adobe® AIR™ runtime complements the browser by providing the same application development and deployment benefits while adding desktop integration, local data access, and enhanced branding opportunities. An emerging design pattern for rich Internet applications (RIAs) is to deliver a browser-based version of an RIA in the browser for all users and an RIA on the desktop for more active users.

When I distill all the marketing speak down to it’s most basic concepts, the biggest and most commonly referred to “advantage” they tout is providing the end user with an experience that makes them think they are working on their local machine instead of a web browser. I am still trying to figure out when using a web browser became considered such a bad thing.

Naturally I started wondering when using something like this would be considered a good idea.  Surely there had to be some salient detail that I just wasn’t grasping.  What would motivate a software development house to take a web application and remove it from the common browser? What was the fundamental cog in the wheel that allowed all this to make sense?

Mozilla had a pretty concise explanation on their development labs page for Prism, a potential competitor to AIR:

Prism is a simple XULRunner based browser that hosts web applications without the normal web browser user interface. Prism is based on a concept called Site Specific Browsers (SSB). An SSB is an application with an embedded browser designed to work exclusively with a single web application. It doesn’t have the menus, toolbars and accouterments of a normal web browser. Some people have called it a “distraction free browser” because none of the typical browser chrome is used. An SSB also has a tighter integration with the OS and desktop than a typical web application running through a web browser.

OK, fair enough. However, I have to wonder if this is really a problem, or merely project management paranoia running amok.  Over thinking tends to lead to assumptions, and from that we derive “problems” that don’t really exist, yet the rest of the world immediately adopts.  I mean, I know that back and forward button on my browser keeps jumping up and slapping me in the face when I read my email, but somehow I make due.

Prism appears to have the best of intentions, while Adobe looks to push their proprietary runtime as a basis for running these applications. Prism’s runtime looks like a basic web browser, plus the necessary underpinnings to allow the end-user to “tear-off” a web application and “install” it on their local machine.   As a result,  it opens in a special window without all the browser controls that people seem to find so troubling.  I can get behind this concept a little better than AIR, since rather than reinventing the wheel, Mozilla’s apparent approach is to extend the browser itself to make it more functional.  Prism sounds likes it’s the most sane take on what still appears to be a less than sane problem.

I still wanted to know the nuts and bolts details that make using Adobe AIR a good idea.  Adobe was kind enough to provide a comparison of “features” between AIR and a conventional RIA in the browser.  I examined each point and wrote down what immediately came to mind.

RIAs in the browser RIAs on the desktop
Application delivery Applications can be easily discovered, explored, and used. Installed applications have more persistence, power, and functionality.
Way to be vague. Is this more power and functionality than is currently possible in a browser, or are you playing with the gray areas?
Installation No application installation is necessary. Applications install seamlessly from the browser or download and install like a traditional desktop application.
It’s hard to argue with no installation necessary, and I have yet to see a truly seamless solution that doesn’t require some interaction from the end-user.
Application updates Applications are updated by pushing new content to a website. AIR provides APIs that allow applications to be updated as easily as pushing new content to a website.
Provided nothing goes wrong. The minute you have to ping the end user to take some special action, be prepared for complaints.
Multiple operating system support Applications run on multiple operating systems and browsers. AIR applications are cross-platform, so they can be installed on and run on multiple operating systems.
So where’s the advantage?
Programming languages JavaScript is provided by browsers and ActionScript™ is provided by Adobe Flash® Player. Integrated JavaScript and ActionScript virtual machines are compatible with the browser.
Virtual machine huh? Thanks a lot. You just handed me yet another potential deviation from the norm that I might have to program around. What happens when ActionScript gets updated? What if I want to use Yahoo’s YUI? Can your virtual machine be updated?
Background capability RIAs can run only in a visible browser window. Applications can run in the background or provide notifications like traditional desktop applications.
eating up more of my machines resources in the process. Yippee..
Persistence Activity is limited to the browser session. When the browser is closed, information is lost. RIAs are installed and available on the desktop. They store information locally and operate offline.
Perfect. And what happens if the machine crashes, gets lost or stolen? The best advantage to browser based computing was non-local storage that could be accessed anywhere, regardless of machine.
Desktop integration Applications are sandboxed, so desktop integration is limited. Applications can access a desktop file system, clipboard, drag and drop events, system tray/notifications, and more.
* shrug *
User interface control RIAs run within a browser window that has its own controls, branding, and integration with the desktop. RIAs have a customizable user interface and desktop integration, enabling branded experiences.
because making sure the companies logo appears is of utmost importance, right?
Data storage Applications have limited local storage, which the browser can destroy. Applications have unlimited local storage and access to a local database, plus encrypted local storage.
Again, when something happens to the computer, I’m hosed…

As you can probably tell, I wasn’t all that impressed.  It is important for me to point out that I don’t have any particular dislike for Adobe; in fact it’s quite the opposite.   I have been a longtime user of many of their software applications, and I judge them to be well above average for providing software that is both stable and functional.

Then I realized that AIR was not created for me as a developer.  It was intended for CIO’s, CTO’s etc, the more clueless the better.  Ideally these would be the people with all the decision making power, control of the IT budget, and the least idea of what goes into actually developing a program (believe me, they do exist).  When it comes to marketing, the premise is pretty simple: wow them with pretty pictures and they will buy anything.  In the meantime it’s the grunt developers that have to deal with all the inherent shortcomings that no one bothered to ask about.

I don’t believe AIR is the long-awaited solution to an end-user’s ills.  If the program is written well enough and functions well enough, the end-user really won’t care what they use to access it, just so long as it’s easy and stable.  I am a big proponent of software usability, and have devoted a lot of time toward learning the best ways how.  Creating a rich user experience is not an unobtainable goal when developing a web application to run in a browser, it just requires a bit of planning and forethought. Spending money on a convoluted concept like AIR is not the “turn-key” solution that will solve these development problems.

“Web-centric” computing is a great concept, since it absolves me of having to maintain a vast arsenal of applications on my local machine.  Despite being a laptop owner, I seldom carry my computer with me wherever I go.  If I want to check gmail, create a spreadsheet or search for directions, all these things are possible regardless of what computer I use or where I am located. I don’t buy into the counter arguments of what will I do if I don’t have internet access. These days you pretty much have to go out of your way to find a place without at least some kind of connectivity.

If AIR has its way, your users could STILL have a multitude of mini-programs on their local machine to choose from, and get potentially get lost in.   There are enough commercial applications on the market today that there is already a mental disconnect in a users mind of “which program should I really use?”  Like as not, they are going to use whatever came with the computer in the first place.  With that in mind, the potential adopters of these “higher functionality applications” would most likely reside in the tech-savvy, power user demographic.  However, for most of those people, the supposed problem of “browser distraction” is just silly, and they won’t want to be tied to one particular computer.

The end result is that for all the expense and effort that would go into creating applications with AIR, it would likely get little use.  However, that’s probably not of tremendous concern to Adobe, since that’s most likely not their ultimate intention.  They are not so much interested in the end-users as they are interested in the developers who bought AIR in the first place.  As someone who has had to extract an application’s core functionality from an ill-conceived, proprietary platform before, I can tell you that it’s no easy task.  Those same CIO’s who made the foolish decision to use AIR in the first place will likely turn pale at the time and expense it would take to get rid of it, and put off such a conversion as long as possible.

Things like Adobe AIR have no real practical purpose other than another blatant attempt by companies like Adobe to grab market share on a market that should not even exist in the first place. Tighter desktop integration really shouldn’t be all that that important, since the current goal should be to get as far away from relying on the desktop as possible. Touting features like “rich UI” equally doesn’t impress me, since curved edges and pretty gradients are not the mystical ingredients that provide for a good end-user experience.

Trendy development ideas are very much like poor fashion decisions. They enjoy immense popularity in the short term. However, before long they will be relegated to the back of some obscure application server, never to be used again, much less thought of. Very much like that pair of stonewash pants in my- er your closet.


Comments

Leave a Reply