June 9, 2006
So what’s all the fuss about? Google throws a bucket of AJAX (not the Colgate-Palmolive variety) on some empty Web page and people go “they must be doing something genius!” and then on and on goes the blogosphere in its analysis of Google’s latest move.
The Problem with Google’s Spreadsheets and Writely
First of all, for those who are not acquainted with the decades old concept of CVS (concurrent versioning system), being able to have multiple users edit the same document and enjoy all the benefits of version control is nothing new. Programmers have been relying on such systems for several decades now. And Wikipedia’s multi-user document editing and version control capabilities is just one popular example of CVS being applied it to Web documents.
What I find unusual/weird is that fact that Google’s Spreadsheet and Writely do not follow the established CVS model where a given document is protected from being edited at the same time by more than one user.
In CVS-like applications, like Wikipedia, many users may edit a given document but not all at the same time. Having multiple users edit a document, a program’s source file or an Excel spreadsheet at the same time (where there are many logical and semantic inter-dependencies across the document) can result in conflicting changes that create a mess. Changing an input value or formula in one cell or changing a global variable or a method in a program file (that’s called by other methods elsewhere in the program) will have effects elsewhere in the spreadsheet or program. If one person makes the changes then they’ll be able to track all places in the code that would get affected and make sure that their changes do not create bugs in the program or the spreadsheet. They would also comment it so that others understand what the change is. But if two people are making changes at the same time to the same spreadsheet or program (or document) and one person makes changes in one area that affects another area that the other person happens to be making changes to directly or indirectly, then you could see how that would lead to bugs being created due conflicting changes.
For example, let’s say I change A from 1 to 2 in area AA which I expect to change the value of B (which is defined as A + C and has an acceptable range of 0-4) from 3 to 4 in area BB but at the same time you (the second person editing the document) change C from 2 to 3 in area CC which you expect to change the value of B from 3 to 4 in area BB, then we would end up with B = 5, which neither of us would expect and which is outside the acceptable range of B, i.e. any value for B larger than 4 would break the calculation/program, thus creating a bug. This is the most simple case. In real practice the “multiple simultaneous changes” scenarios would be much more complicated and involve more logical and semantic inter-connections. In the scenario where two or more people can edit the same spreadsheet, document or program at the same time, if one cannot see the changes that the other person is making and understand their effect on all related parts of the program, spreadsheet or document then one should not be making any changes of their own at the same time, or else they would be creating havoc, especially as the number of people editing at the same time goes beyond two people. With two people it is conceivable that a system or process can be worked out where people can synchronize their editing. With three or more people the interaction process grows in complexity so much that it would require implementing a strict synchronization process (or a more evolved model) in the editing application to coordinate the work of the simultaneous editors so that mess can be avoided.
The CVS model, which is used by Wikipedia and other multi-user editing applications, avoids the mess that would be created by “too many chefs in the kitchen” by letting each document (or each “dish” in this case) be worked on by only one chef at a time, with each chef leaving notes for the others as to what he did, and with rollback and labeling capabilities. I find it unbelievable that a company like Google with such concentration of rocket scientists cannot see the silliness in letting “too many chefs work on the same dish” (not just in the same kitchen) without implementing the synchronization process that would be needed to avoid a certain, predictable mess.
What people really want for multi-user document editing is what Wikipedia already offers, which is consistent with the CVS scheme that has been so successful in the context of software development teams.
What people really want for multi-user spreadsheet editing is what DabbleDB already offers, i.e. to be able to create multiple views of the same dataset, and I would say also to be able to leverage the CVS scheme for multi-user editing where users may edit the same document but not at the same time!
The Problem with Google’s Strategy
In trying to understand Google’s strategy, I can think of three possible theories:
1. The “short range chaos vs. long range order” theory. This implies that Google is striving towards more and more order, i.e. decreasing entropy, as a long range trend, just like the process of evolution in nature. This means that Google leverages evolving strategies (as in self-organization, complextity and chaos) to generate long range order. This is a plausible way to explain Google’s moves so far. Knowing what we know about the creative people they’ve hired, I’m tempted to conclude that this is what they’re doing.
2. The “complicated but orderly” theory. Think of this as a parametric function vs. a chaotic pattern or a linear or cyclical one. This type of strategy has the property of being both confusing as well as constructive. Several bloggers have pointed to this possibility. But who are they distracting? Microsoft? Do they really think Microsoft is so naive to fall for it? I doubt it. So I don’t understand why they would prefer complicated over simple when it comes to their strategy.
3. The “total uninhibited decline” theory. This implies chaos in both the short and the long ranges of their strategy. Few people would consider this a possibility at this time.
It would seem that Google’s strategy falls under theory number one, i.e. they work with a large set of evolving strategies, trying to mimic nature itself. But whether or not they recognize this about themselves I have no clue.
So what if I was to convince a bunch of kids to take the Firefox source code and ideas from the GreaseMonkey and Platypus plugins and produce a version of FireFox that automatically removes all AdSense ads from Web pages and reformats the page so that there would be no empty white areas (where the Ads are removed from) … What would that do to Google’s ad-suported business model? I think it could do a lot of damage to Google’s model as most users hate having their view of the Web cluttered with mostly useless ads.
However, some say that Google Base is the Next Big Thing, and that’s an ad-supported model where people actually want to see the ads. In that case, it would seem that those bloggers who say Google’s strategy fits under theory number two (complicated but predictable) are correct.
Personally, I believe that Google’s strategy is a mix of both complex as well as complicated behaviors (i.e. theories number one and two), which is a sure way to get lost in the game.
Beating Google in Software as a Service (Saas)
As far as I can tell, Google 2.0 (or Google 2.71828 as I like to call it) has been mostly about SaaS.
Google is now to the SaaS industry what Microsoft has been to the desktop software industry. VCs are afraid to invest in something that Google may copy and co-opt.
However, just like how MS had failed to beat Quicken with MS Money and how they’ve failed to beat Adobe and Macromedia (which are one now) Google will fail to beat those who know how to run circles around it. One exit strategy for such companies may be a sale to Yahoo (just kidding, but why not!)
In general here is what SaaS companies can do to run circles around the likes of Google and Yahoo.
1. Let Google and Yahoo spend billions to expand their share of the general consumer market. You can’t beat them there. Focus on a market niche.
2. Provide unique value through product differentiation.
3. Provide higher value through integration with partners’ products and services.
4. Cater to the needs of your niche market on much more personal basis than Google or Yahoo can ever hope to accomplish.
5. Offer vertical applications that Google and Yahoo would not be interested in offering (too small a market for them) to enhance your offering.
Posted by Marc Fawzi
Enjoyed this analysis? Share it with others on:
Web 2.0, Ajax, Flex 2, Web strandards, Trends, RIA, Rich Internet applications, product management, innovation, tagging, social networking, user generated content, Software as a Service (Saas), chaos theory, Startup, Evolution, Google Writely, Google Spreadsheets, Google, DabbleDB, Google Base