Distributed Social App with CouchDB. Brilliant
victusspiritus.com
victusspiritus.com
Unlike the link submitted it suggests it's intended to be an alternative implementation of Diaspora's protocols, which for my money makes it a bit more interesting than yet another distributed social network.
Course, a friend request changes from a simple button click to getting my local couchdb instance to do a filtered sync with your couchdb instance.
I can think of several disadvantages (though I may be wrong and naive):
1. If you're running a node, and I'm running a node, my data schematics might not be compatible with yours. If I write a uniform backward-compatible RPC, then it'll be a little better.
2. I can't selectively allow you to copy some data (photos) and not others. If you are a user on my database, you can access everything you have permissions to. It's hard to set fine-grained permissions.
3. Push notifications will be hard. I'd have to poll the database for changes.
For that matter, the same can be achieved by putting a giant XML file on Git, and having each person set up a remote, or using a complicated set of shell scripts and rsync. Couch's replication facility is really neat, especially if you want to scale horizontally or if you're adding redundancy, etc.
CouchDB is becoming the new hammer. It'll get tempting to write source control, file backup, etc, using this database because of the data sync, and decent query capabilities. But I feel that building a social network on top of CouchDB's replication might not be the best of ideas.
and it has continous replication with a comet changes feed, so push notifications are also built in.
the data schematics are a bit of a non issue, at some point someone needs to agree with what the data format is.
basically couchdb already has a lot of this functionality baked in as first class citizens, I agree that there is a lot of situations where people will be hammering couch into a hole that doesnt fit (source control would be a good one), but I certainly dont think this is one of them.
As Dale stated, this is a good fit for Couch's replication mechanisms. Protocols like PubSubHubbub are ripe for porting over to Couch.
To your points:
1.) I think the idea of this project is to define a common ground to allow seamless sync.
2.) CouchDB supports filtered replication, so you can define what can be synced and what not.
3.) CouchDB has a push-notification changes feed that does not involve polling.
...ok, back. Right now there appears to be no access control at all. Granting that this is a relatively early-stage project so it doesn't necessarily matter too much, but my question still stands.
But it's not a big jump to setup a "follow" node that replicates only the last X messages from personal friend nodes. At least that was how I was planning to do it, but I hadn't intended to mimic Diaspora's protocol.
What I could do is work with Max's construct and set it up for personal publishing, and distributed following. One node for broadcasting out, and as many different nodes as I want for following updates from other nodes
Besides, we need a platform, something like CouchDB, Diaspora is more of an app on top of the platform (but maybe I'm wrong on this one as well).
In a nutshell, easy/secure push would be a killer platform to build the new Twitter/Facebook/FourSquare on.
Of course, this couldn't be monetized easily, so maybe I'm wrong.
when I came across Max's app that Guinness image was the first thing that popped up.
The Guinness reference is completely lost on me when seeing the picture, and not much clearer when just seeing the title :) I'm sure I'm not the only one...
Admit to the odd reference, it probably doesn't click with everyone. Maybe I watch too much BBC on netflix?
Instead built-in functions of the wonderful CouchDB are used - indeed brilliant.
it's a trap! :-P