Before we get started, we acknowledge some concerns Larry Wall (of PERL fame) expressed last year at OSCON. Wall identified an emerging condition during his speech; he noticed that many developers seemed more interested in going out and inventing their own new version of the wheel rather than in improving one of the many versions already available. Since then, an increasing number people have observed the situation and confirmed the condition. They agree that it contributes to an elongation of this primordial stage of development. For example, we were struck by how many groups of people at this event are investing substantial time and effort to reinvent the basic calendar. Of course, they all have different bells and whistles, but when we ask them to explain real, new functions, they throw up their hands and say, “That’s a tough use case. We will need time before we can get there.” Imagine if the hundreds of developers working on new calendars all focused instead on solving the hard problems with the existing ones?
In addition, the data suggests that the vast majority of open source projects are driven almost entirely by one or two people rather than by the many contributors often listed on the project. Every observes that many of the promising Web 2.0 technology companies are snapped up in the M&A fray long before they can even flirt with an IPO. It leaves the heavy lifting and major opportunities to the established players, rather than to the startups. The Game Developer’s Conference recently experienced a parallel condition as the major distributors cried out for fewer, more developed mobile games—rather than an ever-expanding catalog.
Conversely, thanks to a relative lack of innovation on the browser world, the industry finally as a pretty stable deployment environment for web applications, at least for desktop operating systems.
Development & Deployment Technology
Google Maps challenged Yahoo! and the rest of the Internet food chain to recast their interfaces to exploit the obvious benefits of AJAX-based interfaces; these AJAX-based interfaces are already set to become a common feature of leading websites. Toolkits and back-end support for this interaction model are improving, and this model is probably the new baseline for web development today.
The relative stability of the client landscape (at least in non-mobile settings) means that web-based applications can be written to a feature set that is widely supported across browsers. In particular, Dynamic HTML—introduced some time ago by Microsoft—is now commonly supported. New implementations and innovations can be adopted more quickly today because developers can view the source to see how things are working and expand on the work that’s already been done.
These new technologies make it possible to open categories that were considered closed and owned by existing players. Most felt that we had seen the limits of what web-based mail and map information systems could do, and then Google introduced versions that changed our thinking. We would expect to see the same kind of disruption in other areas including travel, job posting, financial information and payments to name just the obvious ones.
Fortunately, there is also an improving sense of design and architecture for web applications. Back-end constructs like the Document Object Model (DOM) are becoming a common element of many development conversations. There is also growing recognition that development should be approached from both the perspective of the application and the hypertext system. These are some of the newer key elements:
- Discoverability – Because the number of systems we touch on a daily basis has skyrocketed, it has become critical that the features supported, particularly new and innovative ones, are obvious to the user at a glance. As we evolve past the fill-in-a-form-and-hit-go model of interaction, we will find new metaphors being used to provide functions like drag-and-drop and type-ahead.
- Recoverability – The potentially high cost of a wrong click today has created a level of “link anxiety” that discourages exploration and discovery. Many sites will be incorporating sliders and other controls to encourage free exploration. Sending users back to their original search query screen will be finally a thing of the past.
- Context Awareness – Helping users understand where they are inside a web-application process is important, especially as the when delivering more advanced functions. The most common example of this appearing now is the process navigation map at the top of the page showing an active step-by-step illustration of the process.
- Instant Feedback – Thanks to AJAX, the ability to provide instant feedback for the user as they perform operations on a page makes for a far superior experience. Now, when selecting something like a username, the system can check for availability as you type rather than make you guess an available name and wait for a response each time.
The combination of these techniques can vastly improve user experience and productivity online. One cited example of a traditional application using some of these techniques can be found at www.kayak.com, but in the coming months, there will be many more.