Web 2.0 – the term was originally presented and discussed by Tim O’Reilly and later posted as a white paper back in 2005. See http://oreilly.com/lpt/a/6228.
O’Reilly’s original presentation offers enlightenment on the strategies used by certain companies who survived the internet bubble of 2000, and the companies thriving on the internet at that time. The term web 2.0 never had a simple definition from the beginning and thus was ably hijacked by marketing folks and just about anyone with an opinion of the internet.
If you read my first post on this subject you understand the definitions I presented are intended to foster clarity of communication. I pretty much buy into Tim O’Reilly’s view of Web 2.0; but instead of just summarizing his work I intend to extract a definition that can be discussed constructively. As a starting point, here is his summary from that white paper.
“Let’s close, therefore, by summarizing what we believe to be the core competencies of Web 2.0 companies:
- Services, not packaged software, with cost-effective scalability
- Control over unique, hard-to-recreate data sources that get richer as more people use them
- Trusting users as co-developers
- Harnessing collective intelligence
- Leveraging the long tail through customer self-service
- Software above the level of a single device
- Lightweight user interfaces, development models, AND business models
The next time a company claims that it’s "Web 2.0," test their features against the list above. The more points they score, the more they are worthy of the name. Remember, though, that excellence in one area may be more telling than some small steps in all seven.” – Tim O’Reilly
Tim O’Reilly begins his white paper with a heading for part 1 titled “The Web As Platform”. For me, this is the salient point for the entire “web 2.0” discussion. The remainder of the paper is divided into other “equally weighted” sections, but from my viewpoint those sections logically come out that first sections title. This then foreshadows my own definition – but from a technologist’s viewpoint of course. For now, I begin with a few preliminaries.
What is a platform, and what is supported for a particular application design?
A platform is a set of principals and policies that go into the overall design of a system. With regard to software engineering, a platform establishes a set of boundaries intended to minimize the need to reinvent components that already exist as part of that system. Your design should focus on those components unique to your business needs.
Another very similar idea, called “separation of concerns”, refers to the practice that the application design itself should also be partitioned into clear boundaries. It’s about “you do your part, I’ll do mine” within the code. For example, don’t mix user interface logic with business logic.
Components of your design (including the platform) require a way to communicate with each other during normal production use. So applications and the platforms they live on can accommodate internal routing of messages. This includes orchestrating communications with external entities as well.
Also, does the choice of platform require that you support web servers, or any server for that matter? If you’re creating an application that installs on desktops or mobile devices will you need to support Windows, Linux, BSD, or OSX? How about the iPhone? Is supporting hardware factored into your platform costs? These questions highlight some important considerations when choosing the “correct” platform and application design.
Certain applications and platforms require some initial data to work properly, others do not. For example, computer based adventure games require a tremendous amount of data to automatically construct the worlds that participants inhabit. Office applications do not (beyond simple configurations) – they act as containers for the data you add to them – their job is usually to transform that data into appropriate forms.
Most traditional applications have solid boundaries of functionality they can perform. No matter how much data a user adds to a traditional application it never improves itself or becomes more useful. Of course, the next revision of the application helps in this regard.
A certain class of application, however, does improve as data is added. The best example of this type of application is navigational software. As data is added the ability to find and calculate a specific destination improves. However, like application revisions, the data updates can happen only so often. Certain types of reporting applications (by default) improve by virtue of adding greater volumes data (assuming the data is good)
Together these ideas demarcate and organize the functional areas that make up a traditional application design, and platform choice.
What precisely is “Web 2.0”?
Web 2.0 is the internet treated as an application platform. Here are the relevant properties of that platform from this technologist’s viewpoint.
- Applications utilize “cloud” hosted servers and services (largely, but not always)
- Data and user participation, not application code, takes priority for improving an applications usefulness
- Applications and users can share data effortlessly via established protocols (thus also improving an applications usefulness)
- Information presented to participants maintain semantic “context” (think of Edward Tufte – http://www.edwardtufte.com/tufte/posters , but could also be as simple as displaying a parent/child relationship between two tables of data without leaving the current view)
- Niche ecosystems of network participants drive innovation and change. See “the long tail” http://en.wikipedia.org/wiki/The_Long_Tail
If you read part one of this series you read that web 2.0 is not a Social Network or Social Application. It’s not a set of programmatic tools, or cool page designs. Its understanding how to leverage the internet as a application platform and extract value from the millions of users online every day at a low cost.
The next post in this series will cover a few topics I had promised to cover here. But I think this is enough for now, so will stop. By the way, I picked up a good book you may want to read. Web 2.0: A Strategy Guide
Next time I’ll discuss data discovery – Cheers!