The web 3.0 model has been whispered about in abstractions and confusing metaphors: the "contextual" web, or the "semantic" web, where there aren't data warehouses (like Twitter and Facebook, where you must log in to get to your stuff) but instead data objects that are cached and decentralized. People, with enough money, can currently begin to touch these new ideals, but they are slapped on top of the existing internet model. You can use CloudFront to keep a cache of your site, decentralizing its content and "ensuring" its uptime by making the origin server (your website) largely superfluous. Good developers usually have some kind of cache layer in their applications to ease the load on application servers. This isn't crazy, but it's a half-measure.

Most APIs as they exist today are likewise solutions slapped on top of complex systems. Most importantly, APIs are currently source specific. There's an API for Twitter, an API for Facebook, an API for LinkedIn, etc. There is no singular "social media API" that shares data objects in a standardized fashion. What would it even look like? Why would we trust it, and who would we trust to build it in the first place? How would it be monetized? These are all pressing questions if we are going to re-imagine the way the internet works, to turn the current internet of warehouses into an internet of things which exist in standardized contexts.

Ironically, these "higher-level" APIs are already in use for essential internet services. The internet itself was actually built as one such meta-API, bringing together several standards of communication under one roof, so that you can have a choice between Chrome and Firefox, or Apache and Lighttpd. DNS is one such standardized, agreed-upon API, and nobody makes money off of the protocol or the traffic, but you can make money off of making the service easier to use. Anyone can set up a DNS server if they want, though. Likewise, anyone can serve web pages using whatever utility they want, as long as it conforms to the "meta-API" of the HTTP standard.

RSS is one of the very few "higher-level" APIs that standard users are aware of in their daily lives. Everyone has their own individual blogs, on different platforms, but they all agree on one standard: RSS. Think about how magical that is. You can't really monetize reading a blog via RSS, so why do the vast majority of bloggers agree to have RSS feeds? Using services like Google Reader or Feedly or whatever, we decouple the source from the data object through the higher-level API called RSS. It's extremely simple and only has one "feature": the feed. It actively preserves the content but without the presentation model, branding, or advertising of the original source. The result is an easier way to read a lot of blogs in one standardized fashion. Why can't we do something similar with social networking?

It is simply the case that too much money stands to be made by building walls around social data and using one's own proprietary API to control it further. With Facebook, especially, their API became a means of actively monitoring the traffic patterns of "real" people. (One could argue that Facebook makes it users more "real" than Google since users willingly put social data on Facebook. Why do you think Google built Plus?) However, the internet as a whole could benefit if social media services like Facebook decoupled their data objects from their platform. What could this look like?

Well, what data object types are really on Facebook and Twitter, and even Tumblr? It's very simple: people, connections, and posts. That's really it. It's not as simple as "the feed" with RSS, but it's only three data types. All somebody has to do is draft a standard for the data types, and have major corporations agree on it, and support it. People data objects have a first name, last name, user name, unique identifier, date of birth, etc, as well as a bunch of variable metadata like a person's interests. Connection data types are simply one person object connected to another. Posts are almost totally variable, but can still be standardized. Text posts, image posts, event posts, whatever. They all have common metadata.

This way, any social media platform using this higher-level API can share data, build new data, aggregate data, decentralize its data, and allow users to manipulate their data. Anyone would be able to build an app to go through this data. In the same way that we have internet browsers which utilize the standard APIs of HTTP and DNS, we could have social media browsers which utilize the standard APIs of social data objects. It would allow anyone to build their own social network, just like they can currently build their own blog, without needing to worry about being just another island in the sea of social media islands. The Facebook and Twitter islands just happen to be really big.

This is a pressing problem that won't be solved anytime soon, most likely. The critical mass of the existing system doesn't lend itself to any foundational change. It may be too late, and the truly semantic, contextual internet will have to wait until the complete collapse of Facebook and/or Twitter to begin seeing real progress. In the mean time, it may be useful for the smaller islands to begin chaining together with standard higher-level APIs like RSS once brought together all blogs. Some day there'll be an API for anything and everything as more and more of our everyday objects become physically connected to the internet.

(Note: this post was originally published on April 7th, 2013, on my other blog, fuck advocacy, here.)