Two New Platform Types for Marc Andreesen, How the Salesforce Force Relates, and Some Dissenting Views
Posted by Bob Warfield on September 17, 2007
Pmarca recently wrote an excellent blog post that dilineated what he sees as the three kinds of platforms you meet on the Internet. Briefly, they boil down to:
Level 1, an “Access” API. The key thing for level 1 is the developer’s code lives outside the platform.
Level 2, a Plug-in API. Here, the goal is to add functionality by plugging an extension into an existing app. Facebook has a plug-in API.
Level 3, a Runtime Environment. In Level 3, the developer’s code runs inside the environment.
These distinctions are very programmer specific, but Marc says that in the end, only the programmer’s opinion matters. More on that in a moment.
Let’s tease these apart a little bit first. Another way to look at it is how visible the 3rd party developer’s code is, and this seems to be a little bit of what Andreesen is striving to articulate. With an API, the code may hardly be visible at all within the platform. You’d go to the developer’s site, perhaps, to see something tangible as a user. With a Plug-in API, a little bit, the tip of the iceberg, may be visible within the platform. Call it a “widgets” approach, if you will. With a Runtime Environment, its all about developers being able to build first class applications of their own on the platform. Andrew Chen helpfully points to the viral possibilities that open up for 3rd parties if they can immerse their code in the fast running waters of user adoption that may already exist for a successful platform. This becomes stronger the further up Pmarca’s Level 1, 2, 3 food chain you go.
That distinction, in a nutshell, is what I think Pmarca is most focused on because it tells the message of why his startup Ning has a great idea and other things like Facebook are inferior to it. It’s because Runtime Environments give programmers maximum expressivity, and if programmers are the only opinion makers who matter (according to Marc), won’t they prefer the platform that maximizes their expressivity? Of course, the penultimate (I love that word, sorry) conclusion (pointed out by Fred Wilson in his blog and Read/Write Web in a post) is that the web itself is the Uber Platform that must be the most attractive to all the alpha geeks.
Let’s talk about a couple of alternate platform possibilities. Depending on how you want to look at it, they may not be alternates at all. I can see how to fit them into Pmarca’s framework. However, to me they feel qualitatively different, so I call them out on their own.
The most obvious platform I’m looking at is creating a language. Ruby on Rails is a platform. Java is a platform. They appeal to programmers, you can program all sorts of things in them, they are platforms. Postscript is a platform. It’s a language. You can build printer drivers, Adobe’s Acrobat, and more around Postscript. Languages are powerful platforms if you can get people to embrace them. I would argue they’re more powerful than either Level 1 (API) or Level 2 (Plug-in) style platforms, and are fully on a par with Level 3. However, they are not Level 3 because Marc has gone on to talk about the code running within the Level 3 platform ala Amazon Web Services so that developers don’t need to worry about hosting.
Imagine with me for a moment that someone built a language that was all about Web 2.0 stuff. It wouldn’t be Ruby, which is all about doing CRUD with web UI’s. It wouldn’t be Java, which I view as a portable assembly language that’s probably overused for everything else. Picture a language that is uniquely focused on the needs of Web 2.0. One that would uniquely empower programmers to create new and Web 2.0 offerings as well as to hook into what’s already there. Perhaps it would be something really different like Yahoo’s Pipes on steroids, or maybe its just another redo of the modern curly braced language as a Web 2.0 scripting language. If it really worked well, it would be adept at hooking into all the Web 2.0 Personality Spaces. It would be easy to define whatever sorts of Trust Fabric your community preferred. It would be highly collaborative and very facile at tying into all the standard feeds and services already out there. It’s fascinating to consider!
The other one that tickles the back of my brain is the idea that having a sufficiently powerful infrastructure creates a platform that is not centered around programmability or even technology, but it seems to me that it does let people do in a flexible way things that the platforms creators had not evisioned. It lets 3rd parties profit from those doings. It has the viral characteristics that so many platforms have. And it is somehow more than an application, though I will be the first to back down in the face of strong opposition and admit that these beasts are perhaps not-quite-platforms. Let me give some examples: eBay. Is it a platform? It has API’s, so maybe it’s just a Level 1 platform in the Andreesen School of Platforms. Let’s go further afield. Peer to peer networks. Was Napster a platform? Hmmm, its kinda like eBay isn’t it. Neither fish nor fowl.
Here’s a way to think about this platform type: can you create a platform without requiring the “application creators” to program? Can the manipulation of information itself constitute a platform? Is a Wiki a platform if you don’t program it? Does WordPress have a blogging platform if you take away the widgets? If these things can constitute platforms, it seems to me the friction of adoption is much less. Perhaps we call them proto-platforms and recognize that they don’t flower into real platforms until the requisite API’s/Plug-Ins/Runtime Environments/Languages are available to complete the metamorphosis. Perhaps you have to trick the application creators into programming when they really don’t think that’s what they’re doing. Spreadsheets are the most widely used programming language on the planet because they trick non-programmers into being able to program almost before they realize it.
Now on to the other thing that has nagged at me about Pmarca’s post: his idea that only programmer’s matter for platforms:
lots and lots of people have opinions about platforms, but the people whose opinions matter are programmers, and people who can make decisions about what programmers program.
Marc has left himself an out on this one that I assume you clearly see: “people who can make decisions about what programmers program.” In my experience as a programmer, that would be the whole rest of the known universe. Everyone has an opinion about what should be built, but let me tie in Salesforce.com as I have promised. They certainly have a platform in the newly renamed Force offering. I’ve talked to a lot of people who’ve cozied up to the Salesforce platform, and the impression I get is that most are not building anything of substance on the platform. Wow! Now I have to duck for a minute so the rotten fruit flies overhead, before explaining what I mean.
The Force platform is ideal for building a connection to Salesforce’s CRM applications and the associated community. In this sense, what the Salesforce platform has most often been selected to do is generate sales leads. People tie into it not because programmers are giddy with excitement about how great the platform is, but because they want a piece of the huge amount of attention and customer activity focused on Salesforce.com. Often, the nature of the tie up is use of Salesforce in the Level 1 or Level 2 capacity despite it being suited to Level 3. This happens because the app had either already been built elsewhere and didn’t need rewriting, or someone (possibly it is the programmers then?) made a decision that it didn’t make sense to build the whole thing inside Salesforce.
Don’t get me wrong–the platform doesn’t stink, but it doesn’t break much new ground either, except in giving you access to data inside Salesforce.com and customers who are using Salesforce.com. So in this case, one of the biggest Level 3 platforms out there is getting most of its traction from people who make decisions for what programmers program in order to do something that requires very little programming.