What I miss in the internet is the notion of being able to control what my apps access for data.
Why can’t a chat application just connect to a neighborhood- or community-server, and why can’t the activity-stream come from the people I know — and query only their systems, like jabber does?
Almost all geolocation services should be implementable over direct friend-to-friend connections like jabber, and I don’t really see why my local identi.ca program can’t also get the news from my local jabber contacts.
Or why I can’t set a local info-provider as geolocation source and have a “phone-book” of info-providers in each town.
And when it can do that, why can’t I have a general info-server which serves as synchronization and aggregation service for any of my devices, so all my programs on any device know which sources to use?
And why can’t I tell that server to allow my friends to access a subset of my data — selected by me?
Sadly I assume that the answer is “power”. Google and Apple don’t want to lose their control on synchronization and sharing. Otherwise most of the control and centralization (=moneymaking monopoly) of the internet would fade away.
For example I’d like to be able to select whose information I get, and I’d like to be able to also get the information my friends and their get. Without anyone outside knowing that I access that data (because I ask them directly). And ideally also without me knowing from which of their friends the data originates, but still being able to block those individually.
Then I could allow certain product information providers (=good advertisers) inside my network, so I get news about stuff I might like to spend money on. And automatically get information about the info-providers from my friends — or my community.
And all that without direct dependency on a single company or system.
It would make it infeasible to monopolize the services without making everyone trust you — and having to make sure most people trust you creates a reverse-dependency which could help to keep the information-providers honest.
And I think one key to that is to make that service less like a full-storage and more like update-collecting and synchronization services.
There’s no reason why a synchro-server should keep any data I already pulled to all my devices.
This would be similar to using a Mercurial push-cache of kinds: When I push data to a service, it just stores a bundle against the revision of the data on my least up-to-date device. All my devices can access that bundle, and when all are up to at least a certain state, the now useless data gets stripped out and only the new data remains.
Not yet pulled information could be stored as snapshots, until the first of my devices pulls it. Then it could get replaced by synchronization data — a compressed update-bundle. That would also make sure that incoming data has to be integrated and parsed only once.
→ http://mercurial-scm.org/ [1]
…
Maybe Akonadi (from KDE) can someday accomplish something like that.
→ http://userbase.kde.org/Glossary#Akonadi [2]
→ http://en.wikipedia.org/wiki/Akonadi [3]
PS: Originally this started as a comment to The state of the internet operating system [4] by O’Reilly.
Links:
[1] http://mercurial-scm.org/
[2] http://userbase.kde.org/Glossary#Akonadi
[3] http://en.wikipedia.org/wiki/Akonadi
[4] http://radar.oreilly.com/2010/03/state-of-internet-operating-system.html