I’m head-over-heels with enthusiasm for Mozilla’s Weave project, and see a unique opportunity to make the CouchDB HTTP protocol ubiquitous. I think it’s the best RESTful document API, and a perfect basis for the standard web data store. If someday we all have local CouchDB instances, with which we can grant access to various web services on a document basis, we’ll have all the ingredients we need to “take back the web.”
We should keep the cloud as dumb as possible to ensure that people can setup their own with freely available tools. The idea would be that while Mozilla would provide a basic set of optional services, it would be open and extensible so that individuals, groups, or companies could host their own either in whole (the entire cloud) or in part (a specific service for bookmarks). We should give people the flexibility to have as much or as little control of their own data as they want. —The Space Between
From the moment I heard about Weave I thought the ideal implementation would be generic and web-like. The use cases I’d like to see all revolve around users sharing their data with web services on an a-la-carte basis. Imagine a music-site allowing you to save playlists in a standard format (to your local Weave store). You could then grant other music sites access to that document, and they could provision audio or more recommendations based on the original playlist.
Above bookmark / profile stores, this would require that users could treat Weave as a synced and web-aware “filesystem”. In this case it would be helpful for Weave to annotate documents with type information.
As an implementation proposal, imagine that web sites access the local Weave store via HTTP. Then Javascript programmers could use the standard Ajax toolkit to request documents, and the server could alert users to requests and allow them to grant/deny access. Imagine Weave stores available at special urls like http://weave.local/path/to/document
Specifically, the CouchDB project is ready to be a drop-in document store. It already provides a RESTful API to documents with fine-grained access control. It’s eventual-consistency replication features would be ideal for syncing multiple Weave stores with backup(s) in the cloud (the cloud servers could also use CouchDB). Weave’s business logic could be implemented in an HTTP proxy between the access url and the CouchDB instance itself. Small pieces loosely joined.
I’ve got a lot of enthusiasm about this vision of Weave, but I understand that the project’s roadmap may not mesh with these ideas. I’m curious to know what both Weave and CouchDB developers think, and hope that something close to what I’m proposing will be feasible, if not as the core Weave implementation, as a simple extension.
3 comments on CouchDB and Mozilla Weave
Oh yeah, pretty please with cream on top.
Cheers, Jan
PS: Thanks for coming up with the idea.
Heh, that’s a nice markup for the comment. Sorry about that.
I’d love to see this happen. However, be aware that this plan goes against the interests of most commercial application service providers (including social networks); keeping your data trapped in their system so that you either have to pay rent to use it or look at ads while using it is their modus operandi.
Also, in general users don’t understand security. ACLs, certificates, passwords, and chains of trust are more trouble and complexity than most people are willing to deal with. Some will dismiss any system like this as too insecure, but I think the majority would instead just use it but get the security settings utterly wrong. This would probably mean that it’d be set to be wide open (no security), due to misconfiguration / laziness / some app they wanted to use that insisted that they set things up that way. For that matter, the rationale for privacy escapes many people. The security mechanism for a system like this would need to be dead simple to use.
But if you can overcome the “how to make securing one’s shared data easy” problem, and the “big companies don’t like you” problem, this is an idea with great potential.