Easy software assembly out of pre-existing pieces has been a holy grail of software development for decades. Along these lights, many of us have been tracking the mashup phenomenon and the associated innovation, including the bustling mashup ecosystem that has been one of the big stories of the last year or so. You can see the results yourself by visiting the terrific MashupFeed directory of current mashups, or view the raw material by looking at all the reusable Web services listed on Programmable Web.
Never before in the history of software has such a rich palette of elements been available to so easily assemble new software. But the story is as much a supply side affair as a demand side one. The data and services are finally available in raw form and people are not only building with them, but using them as well. A new article in the New York Times has some very good coverage of the emergence of Web components, particularly the growing trend (yes, still leading edge) away from monolithic, single source PC software to truly federated, componentized software online.
Software reuse and the wiring together of software out of off-the-shelf components is not anything new, of course. But it's never really taken off despite the advent over the years of objects, distributed objects, components, services, and SOAs. Yet something is undeniably happening these days that's making reuse take place at a deeper level than ever before. While GUI widgets were often the biggest practical use of components in previous years, and are again with Ajax libraries (along with something I call the Ajax design spectrum), it seems that at least two forces are at work :
1) Data has become increasingly available and central on the Web as a service and;
2) Cleaner, more lightweight, and easy to use Web service models like JSON, RSS, and REST are making the composition of software in the browser extremely easy.
The Times piece makes the excellent point that corporate software development has often co-opted the component revolution, often successfully diverting work from community and requirements-driven models into ones that are more self-serving to software vendors. You can argue this has indeed happened with distributed objects and SOAs, two technological approaches that work very well but are not flourishing anything like the mashosphere on the Web.
In any case, I do believe we're witnessing a remaking of not only Web-based software but the way in which software is composited. It's being driven by the Web, the large numbers of available services and vast, ready supply of world-class server-side and browser-side components. It's this last piece that's particularly important. Never before in the history of software has such a rich palette of elements been available to so easily assemble new software. It's virtually certain that we're seeing the dawn of a new time in software development.
What do you think? Are Ajax and mashups overblown or just beginning?