I've mentioned this before, but I haven’t been updating my personal website that much lately. There are lots of things I love about owning my own site: I own the database that stores all of my posts (and can move it or delete it whenever I want) and I can easily modify the way it works and looks, and even change my domain name. Despite these features, I find myself posting more frequently on social networking sites. I can post faster and quicker, and receive more feedback in a shorter amount of time. There is no doubt that being able to post a piece of content and knowing that a good percentage of my friends will immediately see it, comment, and share it is a great feeling - a direct appeal to ego. Likewise being on the other end of things and commenting and sharing makes you feel like a part of a conversation.
So this got me thinking, how can I get that level of speed and interaction on my own website that is hosted on my own server? I would like to be able to quickly share content and network my site with a few friends. So I started thinking about if it’d be possible to build an organic social web simply based on unique URLs. If we can assume a unique URL is associated with a person, then we just need a common language that can automatically link people together.
We can look to Twitter as a model for such a language. Twitter’s character limit has caused its users to develop new syntax to express greater amounts of information in 140 characters or less. Ultimately the syntax is just a way of adding another level of meaning and power to a hyperlink - @somebody is not just a link, but specifically a link to a person, and furthermore using it means that the person will get notified when you use it. Similarly #hashtag gives the power to make loose, indirect connections with others to form ad hoc groups and allow a person to join a more global conversation. With those concepts in mind, we have a new shared language that can be adopted by others to allow communication across an open web, independent of the platform.
The first step is to extend the @reply syntax beyond a twitter username. This should be easy, especially if a URL is uniquely associated with a person. Let’s say Eric posts a message to his website, eric.com and references his friend Jerry whose website is jerry.com.
Eric from eric.com posts the following status:
"Reading Blink by Malcom Gladwell. @jerry.com you should check it out! #bookclub"
This status is assigned a unique URL of eric.com/status/640.
Assuming both Eric and Jerry have blogging software that understand this syntax, the blogging software will automatically try to contact or “ping” jerry.com. The whole process might look something like this:
- First eric.com pings jerry.com with a link to the post referencing @jerry.com
- If jerry.com receives the ping but doesn’t know eric.com or can’t verify the ping originates from him, nothing happens.
- If jerry.com receives the ping and is friends with eric.com then jerry.com visits eric.com/status/640 and copies the original post from eric.com to jerry.com and displays it within his status updates (i.e. on his "wall").
Jerry’s website has now copied over Eric’s post and it gets displayed within his status updates (similar to your Facebook Wall). As long as a person can be identified with a single URL and there is a common language shared between the server software for each person, there is no reason we can't just make these kind of links between URLs to create an open, social web.
I hope to have a working demo* of this kind of decentralized microblogging software soon. I think having a proof-of-concept of this will explain things better than I could in a blog entry and I don't want to overanalyze things too much. There is lots more to talk about, especially with the technical side of things but I’ll save that for a later post.
That’s enough for now, but the basic idea is this: the internet is powered by hyperlinks. So far we only think about hyperlinks as representing a piece of information or a computer. But if a link can represent a person, and we have a common language to connect and share these links between people, then it should be possible to create a decentralized social web based on URLs.
*EDIT status.net already proves this kind of thing can sort of work with OStatus protocol. Integrating and generalizing this into a wider publishing platform (not just status updates) with your own hub included seems like the next step.