written about quite a lot over the years here at Read/WriteWeb. Over the weekend, Marc Andreessen put up a lengthy post attempting to sort out the idea of an "Internet platform." Andreessen writes, "One of the hottest of hot topics these days is the topic of Internet platforms, or platforms on the Internet ... 'platform' is turning into a central theme of our industry and one that a lot of people want to think about and talk about. However, the concept of "platform" is also the focus of a swirling vortex of confusion -- lots of platform-related concepts, many of them highly technical, bleeding together; lots of people harboring various incompatible mental images of what's about to happen in our industry as a consequence of various platforms."The web as a platform is something we have
He goes on to identify three types of platforms:
- Access API - where data is pulled from a service and reconstituted to create something new or add value to something else (think Flickr, or Google Maps)
- Plug-in API - where developers plug their applications directly into the platform (think Facebook, Firefox, or, well, Google Maps again (Mapplets))
- Runtime Environment - like a plug-in API but where code is executed directly on the platform, and the "platform itself handles everything required to run your application on your behalf" (think Andreessen's own Ning, Second Life, or Salesforce.com)
Unsurprisingly, according to Andreessen, the third type of platform is the best, but also the most difficult to create. Runtime environments are best for developers, he says, and boils his reasoning down to a major advantage: "you have to commit to never killing your platform." That sounds great, and makes sense, though his argument is a bit confounding:
"Think about it: For a Level 1 or Level 2 platform, if you kill the platform, you still have a working and useful system. If the Google Search API gets killed -- and it was! -- you still have Google Search which is still useful to its users. If the Facebook platform gets killed -- which presumably it won't be -- you still have Facebook which is still useful to users as a social networking service in exactly the same way it was before they introduced their platform.
On the other hand, if you kill a Level 3 platform, you destroy the whole reason people use your system to begin with -- to develop and run custom code. If you remove the platform from Ning, Ning is useless -- applications don't run, and users can't do anything. If you remove the platform from Salesforce, all the users who are using customized apps can't use Salesforce anymore. If you remove the platform from Second Life, none of the objects or experiences in the virtual world work anymore and the whole user experience collapses."
What strikes me as odd about that argument is that the point he makes about Salesforce is equally applicable to Facebook, and vice versa. Salesforce still has value without the apps that third party developers have created -- not nearly as much, but it doesn't lose total value because Salesforce is more than just a platform for third-party apps. In reverse, any user of Facebook who relies on an app built for their platform would no longer find as much appeal in using Facebook if the platform was killed. I'm also not really sure why Firefox is a plug-in API but not a runtime environment. These oddities lead me to believe that Andreessen hasn't quite completely sorted his definition yet (or it a needs a little work).
It further strikes me that there's not a whole lot of difference between these types of platforms. That is, it isn't a huge leap to go from level 1 to level 3. It wouldn't be very hard for Flickr, for example, to allow outside developers to plug applications into their platform and run them on Flickr.com (think of a flash photo editor running inside your account). And, it wouldn't be much of a leap for Facebook to host the applications made for its platform.
The reason they don't do that is because each platform plays to its strengths. Andreessen's Ning is attractive because it makes creating a social network simple, cheap, and quick. Facebook's platform is attractive because it opens developers up to a huge installed user base. Flickr's API is attractive because it opens access to a ton of data (photos). And the common thread between all of them is that they all operate on the platform of the Internet. The services Marc Andreessen talks about are all platforms within a platform. They exist to make creating applications on the web platform easier, or to provide access to data for use in creating web applications.
Nearly two years ago, Fred Wilson, writing about the web as a platform said this: "The Web is a Platform and you must build on top of it and you must be open and you must not try to lock people in. If you do, you are eventually going to regret it." What does that mean in terms of looking at the various platforms cropping up on the web, many of which still exist as closed systems? In a comment today on Andreessen's post, Wilson poses this question, "And isn't it also true that building apps on the web itself, instead of plugged into Facebook, or resident in Ning, is more attractive to developers because the app is less reliant on the owner of the environment to continue to act in good faith toward the developer and their app?"
I think he makes a good point. If the entire web is a platform, why would a developer choose to cede control over his app by locking himself into a single, third-party platform? The answer is that these platforms give developers access to something they can't easily build themselves -- such as users, data, or development tools. The more open the platform, though, and the more in control the developer remains, I think the more attractive they will be to application creators.
As Andreessen concludes, "lots and lots of people have opinions about platforms." So what are yours? Leave your thoughts in the comments below.