Microsoft Communities
Posted By: Joshua Allen | Sep 19th, 2007 @ 11:16 PM

Marc Andreessen recently posted a popular analysis of Internet "Platforms", which categorizes platforms by level into "good", "better", and "best" (levels 1 through 3).  As you might suspect, he ranks his company Ning in the "best" category, while most other social platforms end up in the lowest category and only Facebook lands in the middle category.

Internet platforms are a topic we know something about here (who can forget the "one platform to rule them all" conversation between Tim O'Reilly and Bill Gates at MIX06?)  Unfortunately, I think there are some problems with Marc's analysis.

APIs and Runtimes Are Soooo Retro

Marc hinges his analysis on the idea that platforms are about APIs.  Lowest level is an API, middle level is an API that integrates with the site's UI, and highest is an API that is hosted on the site's infrastructure.  He says, "That's how Dad did it, that's how America does it, and it's worked out pretty well so far."  This is a clear allusion to platforms like Windows, where the platform vendor builds network effects and stickiness by getting developers to adopt proprietary APIs.

The problem with this argument is that everyone has seen the movie already, and they know how it ends.  Lock-in via proprietary APIs might work for narrow enterprise-oriented scenarios, but it doesn't work at Internet scale and diversity.

Data is the New Platform

The Internet works because people integrate at the data level, rather than having a mess of competing and incompatible "APIs".  People like Greg Linden and Sam Ruby understand this.  The stickiness in a Facebook comes from the richness and volume of the data stored in their systems.  Amazon has data about past purchases that can be used to suggest purchases, and EBay has data that helps you decide whether a buyer or seller is trustworthy.  The API doesn't matter, as long as it's simple and the data is good.

Marc nods in this direction by lumping REST architectures into his lowest level of APIs, but he places this at the bottom of the heap, hardly worth mentioning.  This is exactly backward.  The most important and most interesting platform scenarios can all be accomplished using simple web standards techniques for data manipulation -- starting with semantic html and microformats, on to GET and POST, JSON, and then only when absolutely necessary to an RPC pattern.  The rule here is that simpler is better.

When data is the platform, you don't categorize things the way Marc does.  A better categorization would be:

  • How big/rich is the data/profile store?
  • How sticky is the data?  For example, migrating all of your invoices out of salesforce.com would be impossible without migrating a major portion of your CRM.
  • How many easy ways are there to make data flow into the system?  This is where APIs come it, but simpler is better.
  • Is the data more valuable when mined in aggregate?  For example, does it help provide better ad targeting?

UX Integration Matters

Again, Marc nods toward important points here, but focuses too much on the technology and makes the point backwards.  He cites the ability to integrate directly with Facebook's UI as a "better" category of integration.  And who wouldn't want to be able to stick their stuff on Google's web page (oh wait, you already can), or integrate with Windows Live Messenger (already can).  But the vast majority of scenarios can already be handled in simple and standard ways (a good name for this pattern might be "syndication oriented architecture").  The web already has an API for extending the web's UI -- it's called HTML+CSS.  A couple of very big fish might be able to get away with proprietary "plug-in APIs", that extend the chrome or but I am skeptical.

Data Locality Matters

Marc defines a level 3, "best" platform as one where your code runs on the same infrastructure as the site.  At first, your reaction might be, "So what? I can get cheap PHP hosting from loads of places".  However, when data is the platform, you often want to be able to run your code as close to the data as possible.  This is why many customers Amazon's S3 needed EC2, for example.  But the fact that you can only run your code on one vendor's infrastructure is an artificial barrier, not a feature.  Some social networking vendors can and do allow people to host their own data and code.  It's obvious what benefit a Ning or Salesforce.com would get from keeping your data and code on their servers; it's less obvious what the benefit to you is.  There are only two real reasons such an arrangement would be a benefit for you

  • If your data, aggregated with data from lots of other customers of the provider, can provide some additional intelligence.
  • If the provider gets dramatic economies of scale beyond what you could get on your own.  In the case of a Ning or a Salesforce.com, this one is dubious.  There are only a handful of companies who buy electricity and bandwidth in enough volume to offer hosting cheaper than Amazon.  Companies like Yahoo!, Google, and Microsoft.

Summary

I am sure Marc understands all of this.  Data is the true platform, and if he can convince people that there is value in taking dependencies on his UI and infrastructure, it will add to the "stickiness" of his data.  But you have to ask yourself if his levels 2 and 3 really are an improvement for you, and is this really the way the industry will evolve?

Re:

Posted By: interstar | Oct 2nd, 2007 @ 3:13 PM

Strange that you say that UI standardization isn't an issue on the web. What about the Jakob Nielsen "users spend more time on other people's sites than yours" school of usability design?

Actually, the world of Facebook apps. and widgets is the first time I've started to see that an old-style platform strategy may be possible. Here the basis is something which which is a hybrid of technology, namespace and social convention. Of which Facebook's "news-feed" is the archetypal example. Facebook's news-feed is not merely technological : which is why other generic data-sharing feeds like RSS or Twitter aren't equivalent. It's also a social convention within a particular namespace and community: I'm willing to look at data that an application writes on my friend's feed, even though I haven't installed the application or explicitly subscribed to it. This is different from the open web - I wouldn't welcome an ordinary web-application that my friend used, randomly spamming my email. (Similarly, if too many bots started writing to Twitter, that would kill that particular community pretty damned quickly, it's not part of its culture either.)

Facebook's platform power ultimately rests on their ownership of this complex but delicate socio-technical hybrid. If they can nurture and grow it, such as giving both users and applications, more and subtler ways to manage it, more nuanced types of relationships between people, with more fine grained privacy control and applications that access these both through the APIs and patterns of software behaviour, then I think they have something that's very hard to escape from or reproduce elsewhere.

This is no longer about just data, or arguments about open access to it. It's data + social data + social conventions.

Tags:
Posted By: Joshua Allen | Sep 21st, 2007 @ 5:35 PM
Thanks Joel, I think we're saying roughly the same thing.

Take your example of copy/pasting from Google to Yahoo (though Spolsky used this as an example of something that to him is *not* a platform).  The way that you enable copy/paste between sites is with Microformats and Live Clipboard, announced by Ray Ozzie at MIX06.  You don't need to install a runtime SDK to do this, since it's just simple data transformation.

Spolsky, like Marc, is describing Microsoft's old strategy for the PC ecosystem; a strategy built on code libraries and UI homogeneity.  There is no evidence that the same strategy will work on the web, and plenty of evidence to the contrary.  In fact, Microsoft abandoned this strategy for the web 7 years ago, so it always surprises me when people use Microsoft's PC strategy as guidance for web strategy.

A few things conspire against a replay of the PC game plan in the web space.
1) The web has a long tradition of separating content from presentation.  There is no trend toward standardized UI metaphors, and in fact a strong trend toward empowering designers to craft the most unique experiences possible.  People are used to coding against the data, then doing the UI separately.
2) People code to the web because they need reach.  If you write for the web, you can reach more people than you could reach by writing for Windows or Mac alone.  To achieve reach, web developers tend to avoid any "platform" features which are not ubiquitous, and furthermore to be suspicious of anything that is vendor proprietary.  This, for good or bad, leads to a sort of "lowest common denominator" result.  Thus, no single vendor will ever control the web platform, and there will be constant pressure to interop and standardize.
3) The web is optimized for sharing data, it is definitely not designed to be a distributed processing cluster.  When people try to think of web systems in terms of executing code libraries and RPCs, they invariably make things very difficult for themselves.  This fundamental philosophy of the web has now become baked into all of the libraries, UI frameworks, and even the network infrastructure.  What this means is that the web is very unfriendly to traditional SDK-style extensibility -- most developers find that it's vastly easier to copy/paste some JavaScript that parses a microformat than to install an SDK.  Data-oriented integration is the path of least resistance, and just because SDKs are more complicated doesn't mean they are better or more deserving of the appelation of "platform"
Tags:
Posted By: Jaykul | Sep 20th, 2007 @ 3:59 PM
It seems pretty clear to me that your deffinition of "platform" and Marc's don't live in the same business world.  There's a pretty big difference between having data accessible, and being extensible.  And there's a HUGE difference between either of those, and being a runtime platform that many websites and applications will be written on.

I haven't been paying alot of attention to Ning since it was announced, but I think you missed the point that a platform isn't "oh look I can pull my email list from gmail into yahoo as an RSS feed, Google must have a platform" ... it's "wouldn't it be nice if I could drag an email from gmail and drop it on to google calendar to schedule a meeting?  In fact, wouldn't it be nice if I could "COPY" it and "PASTE" it into my Yahoo! calendar?"

Have you seen Joel Spolsky's Strategy Letter VI?

--
Joel "Jaykul" Bennett

Tags:

Page Navigation