Web 2.0 has been a very confusing subject for me. Like every other developer, I’ve been reading about it on blogs and in articles, but I’ve never felt like I’ve really understood what it’s all about. “Web 2.0″ is a very non-descript name and many people use it very loosely. Sometimes I almost imagine it’s something Dilbert’s pointy-haired boss invented.
More recently, I’ve come to conclude that Web 2.0 is the revolution caused by people who say, “The web could be improved upon, so let’s turn the world wide web upside-down. Let’s make some drastic changes that make it look and feel more natural. ” In this way, Web 2.0 focuses primarily on foggy end-results and fails to address the means by which these results are reaized.
If my analysis is true, there are two questions that must be answered for Web 2.0 to be meaningful:
- What kind of web applications are we looking for?
- What design models can we use to create such web applications?
The first question is a question for the business people and consumers. Are we looking for better communication tools? Are we looking for better content management, such as a better wiki or an office productivity suite that includes a word processor and spreadsheet? Are we looking for better multimedia networking? Before we march forward, we must have something towards which we march.
The answer to the first question is crucial, but it is the second question that I, as a developer, care the most apart. Just like we use Ajax to refer to a certain model for client/server communication, we need to use specific terms when we’re talking about the development of these revolutionized Web 2.0 applications. Let me offer some examples:
- Ajax. As mentioned, this describes a JavaScript technique for accessing websites without opening a new page. This is core to the Web 2.0 idea.
- Auto-completing edit boxes. This is used in a large number of websites and makes the interface more natural by letting the user see how the server will interpret the information he or she is entering.
- Sortable tables. Almost every web application ties into a server-side datasource. Ajax applications can tap into this data source via SOAP, thus updating the data without refreshing the page.
- Client- or server-side templating. When a user is tweaking the display of some information, it would be faster to do client-side templating instead of submitting the user’s preferences and downloading the newly styled page.
- Drag and drop. This is a very common metaphor for interactive editing.
- User-defined ranking and organization. Allow users to organize information based on their tastes and interests. Is this best done with tags? Outlines?
- Collaboration. Users expect to be able to work together on the web. How do you control access to the same resource? How do you deal with collisions?
- Disconnected data storage. If different Ajax applications require access to the same set of data, they could communicate with a centralized third-party data storage service designed for any interested Ajax applications.
Any of these questions and examples could trigger a meaningful discussion. If we are serious about revolutionizing the web, we must stop merely discussing “Web 2.0″ and start discussing more specific ideas–something that’s tangible, something that can be visualized, something that’s real.
When we start offering practical advice for developers and when we help each other brainstorm about new kinds of applications and new ways of doing things, we can foster a community that will let the Internet be changed, even revolutionized.
Let me tell you: we won’t get it by talking about Web 2.0.