Tuesday, January 27, 2009

O'Reilly has offered up two free keys to the rough-cut editition of Relax with CouchDB, so Jan and I decided to find a cool way to give them out.

Here's the plan — we want to hear about your CouchDB project ideas, you can write about them in the comments here, or just link to your own blog. Just an idea isn't enough though, let us know why you think CouchDB would be a good fit for it. You can submit ideas until February 13th, after which Jan and I will look them over and pick out two winners.

17 comments:

I'm planning on building a directed acyclic graph in CouchDB, using docs for vertices, edges, or both, for something like OmniFocus's Sequence/Parralel type structure, but where nodes in the outline could be in multiple parent nodes.

How about a birds-eye-view index of the Wikipedias? Each document would answer things like: how many words, contributers, revisions? Has it been flagged in some way? If it's a special type (with a sidebar box), what data appears there? Then, what kind of design documents will people come up with?

Does this exist already? If not, I'll volunteer to build one when some time frees up this spring.

I'm planning to get a mega-huge set of genome sequence data (3-ple digit GBs), and throw it to couchDB to see how much it can take. Ideally, I might spread the data over a few instances of couchDB across servers. Then query it until the machines start steaming. :-)

I was thinking about one good use just yesterday. A couple guys on my team are about to go off and do some work in the mountains where they won't have internet access.

It would be useful to have a tool like Pivotal Tracker (which is mostly a RESTful client side Ajax application anyway) built as a CouchApp and making use of CouchDB's replication ability. Then, they could work through a bunch of tasks ('stories') and, when they get back in wifi range, sync their progress back up with our internet-hosted tracker.

I realize that the 'task list' is a staple of introducing every new programming environment, right after 'hellow world', but that is the first real world case where I found myself actually wishing for the type of distributed CouchApp you describe in your book!

Also, Couch seems to me like a great fit for graph-oriented data, as others are mentioning on this thread. I could see doing the kinds of graph traversals I learned as a comp sci student (breadth-first search, shortest path, etc) over, say, a social network, without forcing things into a SQL paradigm and incurring a bunch of expensive JOINs.

Create a social backup. You would give us your usernames for each social website you use (flickr, twitter, del.icio.us) and we'd save whatever data it is in a CouchDB database, so you always have one other copy to prevent what happened with ma.gnolia.com a few days ago.

Offering standard ways of getting data out (as well as an API) would be dead simple with CouchDB.

A (distributed) bug tracker for use by distros, contributors, and developers. Currently, each distro and project has its own bugtracker resulting in a lot of extra work needed to escalate issues. CouchDB could be the foundation for a distributed bug tracking system with developers and distro maintainers exchanging reports in a fast and easy manner.

I'm building a simple statistic web service called Zippy Stat. Stats that users create will have X attributes, making it difficult/slow with a relational DB. I've been looking at possibly moving to CouchDB for this.

The CouchDB is a good fit for scientific data, which is semi-structured by nature. I would built an electronic scientific notebook application to let researchers to put in raw experiment data, research protocols/recipes and graphs/images. Each entry in this notebook is signed and dated (as expected for a scientific record-keepting) and changes are tracked by CouchDB's revision mechanism.

The notebooks can be shared by user to scientific peers so that data can be forked/extended to further research efforts. This provides a social network aspect of the scientific notebook app.

The CouchDB replication feature would enable researchers working at remote sites to sync up discovery data with master database node.