sgo.to

User Centric Web

In the past year or so I've been having a recurring discussion around "the app-centric web" and the "user-centric web". Lots of other people have converged in a similar discussion, but I figure it would be constructive to write down my own in case it adds anything to the discussion.

When we moved from the desktop to the cloud in the 2000s we gained a massive amount of good stuff (namely accessibility, backups and security). However, as the paradigm shifted from bringing tools to your computer (e.g. photo editors) to uploading your data (e.g. photos) to the cloud, our data got compartmentalized into containers that don't talk to each other (e.g. you upload/download).

The App-centric Web

The app-centric web keys URLs by app-first and user-second:

http://app/user

For example:

http://facebook.com/samuelgoto http://github.com/samuelgoto http://google.com/+samuelgoto http://twitter.com/samuelgoto

The User-centric Web

The user-centric web, on the other hand, keys URLs user-first and type-second, independently or app.

http://user/data

For example:

http://sgo.to/profile http://sgo.to/posts http://sgo.to/photos

In this formulation, the user is at the center, their data is surrounding and the apps only show up on the backstage.

An interesting property of the "user-centric web" is that the cost of new apps being developed are lowered because its development isn't predicated on bootstraping the user's data. For example, the cost for a user to adopt a new photo editor is lowered if it can be made useful without uploading/download/transferring all of the photos.

The Shape of The Solution

This is primarily an architectural design choice that we made early on the design of the web. Hopefully, we could also try to engineer something that addresses it too.

The best insight I have heard from this problem is to apply some of the same concepts we apply to mapreduces to this problem: move code to data, rather than data to code.

The idea here is to keep data where it is (and solve all of the problems that it entitles, like backup, accessibility and security) and make create the right sandboxing environment to bring code safely to it.

Related Work

The web was designed to be decentralised so that everybody could participate by having their own domain and having their own webserver and this hasn’t worked out. Instead, we’ve got the situation where individual personal data has been locked up in these silos. […] [...] we’re going to use it in such a way that we separate the apps that you use from the data that you use.** @timbl