Internet Platforms
In 2007, Marc Andreessen wrote about three levels of internet platforms. The framework still holds up.
Level 1: API access. The platform gives you an API to read/write data. You build your own app that talks to it. Flickr, Twitter, Stripe - you get access to their data or capabilities, but you host everything yourself.
Level 2: Plug-in. Your code runs inside the platform’s UI. Users interact with your app without leaving the platform. Early Facebook apps, Slack integrations, Shopify apps. More reach, but you’re constrained by what the platform allows.
Level 3: Runtime. The platform hosts and runs your code. Salesforce’s Force.com was the original example. Now it’s AWS Lambda, Cloudflare Workers, Vercel. You write the logic, they handle everything else.
The levels differ in who bears the operational burden and who controls the user relationship. Level 1: you do all the work but own the user. Level 3: platform does the work but you’re deeply dependent on them.
Since 2007, a few things have shifted:
- Cloud platforms (AWS, GCP, Azure) have become the default Level 3, but they’re more infrastructure than application platform
- Mobile app stores created a weird hybrid - Level 3 distribution with Level 1/2 technical integration
- Web3/crypto tried to create platforms without platform owners, with mixed results
The core tension remains: platforms create leverage by aggregating users and capabilities, but that leverage cuts both ways. Build on a platform and you get reach; you also get dependent.