Gregor's Ramblings
Home Patterns Ramblings Articles Talks Download Links Books Contact

Web 2.0 Patterns

Aug 24, 2006

Recent Ramblings
Explaining Stuff
DDD - Diagram Driven Design
What Does It Mean to Use Messaging?
A Chapter a Day...
EIP Visions
Clouds and Integration Patterns at JavaOne
My First Google Wave Robot
Google I/O
Into the Clouds on New Acid
Design Patterns: More than meets the eye
Reflecting on Enterprise Integration Patterns
Google Gears Live From Japan
Double-Dipping: OOPSLA and Colorado Software Summit
Bubble 2.0
Enterprise Mashup Summit
Facebook Developer Garage
Mashups Tools Market
Mashups == EAI 2.0?
Mashup Camp

I confess. I am a groupie. When Tim O'Reilly invited me to be part of on a workshop on Web 2.0 patterns I was quite excited. First, because I was going to meet the exalted one in person. Second, because I would have a chance to learn a lot about Web 2.0 as I am pretty much starting from zero (working for Google does not automatically mean working on super-secret next generation massive computing projects). Lucky for me, the other participants are quite entrenched in the Web 2.0 phenomeon. Amongst others we had Bill Scott from Yahoo!, Jennifer Tidwell, Cal Henderson from Flickr, John Musser who runs ProgrammableWeb, Martin Fowler, and Sandy from Meebo.

The goal of the workshop was to build on Tim's paper What is Web 2.0. The paper cites a few examples that demonstrate the shift in thinking from Web 1.0 to Web 2.0:

These examples alone show a clear shift from publishing towards sharing and participation, a richer user interaction, and a stronger focus on sharing data. Our day-long workshop aimed to distill values, principles, and patterns of Web 2.0 (Martin recommended that we "borrow" this structure from Kent Beck's XP book).

Attributes of Web 2.0

We started by brainstorming what Web 2.0 means to us. As expected we ended up with a wide spectrum of ideas, which we then sorted into categories. One of the most interesting parts for me were the many examples that I had not yet heard about, such as:


We tried to compile a set of values, along the lines of the Agile Manifesto. The key with the agile values is that is used a "X over Y" format where Y by itself is a fairly reasonable goal. For example, the value is not "Working Software over Broken Software" (duh!) but "Working Software over Comprehensive Documentation". Here are some of our candidates:

Other Cool Stuff

John from ProgrammableWeb shared a beer over visualizing complex integration systems. His team actually won an award once for a system that could visualize a complex integration solution consisting of messaging, file transfer, and many other technologies. His side links to a fun game GuessTheGoogle.

Martin taught me a new acronym: POX = Plain Old XML (as opposed to SOAP + WS-*) is an open source map/reduce implementation.

Someone pointed me to BlueOrganizer - a Firefox plugin that allows the creation of semantically rich bookmarks that can be shared. For example, if you mark one of the supported sites (e.g. Amazon) the tool will bookmark the specific product (as opposed to simply the URL) and file it under the proper category (e.g., books, electronics).


Gregor is a software architect with Google. He is a frequent speaker on asynchronous messaging and service-oriented architectures and co-authored Enterprise Integration Patterns (Addison-Wesley). His mission is to make integration and distributed system development easier by harvesting common patterns and best practices from many different technologies.