Web 2.0 has many names and a lot of hype – social web, community web, interactive web, and what have you. Nick Gall boiled down the hype quite nicely in his OSCON keynote (see a summary by zdnet) which is listened to on IT conversations. Not exactly news to me, but Nick very nicely boiled down the essence of web 2.0:
- It’s read-write, instead of read-only. OK, Tim had the POST method in his http protocol, and was meaning to make the second version of his browser read-write, but others started cloning his original browser and the read-write functionality was pretty much forgotten for a decade. Now with the help of the POST method and Ajax UI gimmicks, read-write is here to stay – wikis are becoming even wikier (faster) to use.
- Links aren’t one-way, but symmetric. This is what trackbacks are all about – seeing the links from both directions.
- After going global, the web is now extending to processes. So in addition to serving requests made by people, the web now can accomodate calls made by applications and processes (think of web services and xmlrpc). This allows the building of new services as mashups of existing services (like the all-too-popular Google Maps mashups).
What this means for software development? Use the hour-glass metaphor – wide base (build on or accept anything), narrow waist (do a simple thing), wide top (provide results in a generic way so others may take advantage of it). In practice:
- Extend existing services using the hooks they provide via the web. Design your software so that is accepts generic standard formats (like xml, xmlrpc).
- Do something valuable to the data your service has been given. Do only one thing at a time, so that the results can be reused after any phase. Simple is beatiful.
- Provide hooks in your services so others can extend the results you’re producing. Provide the results using standard formats (like xml, xmlrpc).