Opportunistic developers Week March 2010 - CouchDB support in your app with Desktop``Couch - Stuart Langridge - Mar 1 2010

(12:01:09 PM) aquarius: thanks very much, jono!
(12:01:12 PM) aquarius: Hi, all. Welcome to CouchDB support in your app with DesktopCouch.
(12:01:25 PM) aquarius: I'm Stuart Langridge, desktopcouch architect. Normally I'm in disguise as a cool guy, but today I'm going to drop that disguise and talk about databases.
(12:01:43 PM) aquarius: Over the next hour I'm going to explain what desktopcouch is, how to use it, who else is using it, and some of the things you will find useful to know about the project.
(12:01:55 PM) aquarius: [SLIDE 1]
(12:02:08 PM) aquarius: If you were part of Ubuntu Developer Week, you might find you know a lot of this!
(12:02:38 PM) aquarius: but this is *opportunistic* developer week :)
(12:02:42 PM) aquarius: I'll talk for a section, and then stop for questions.
(12:02:43 PM) aquarius: Please feel free to ask questions in #ubuntu-classroom-chat, and I'll look at the end of each section to see which questions have been posted. Ask at any time; you don't have to wait until the end of a section.
(12:02:57 PM) aquarius: You should prefix your question in #ubuntu-classroom-chat with QUESTION: so that I notice it :-)
(12:03:02 PM) aquarius: Since I'm talking about databases, some of this is necessarily a bit technical. Do please ask questions or ask me to go over something again.
(12:03:15 PM) aquarius: So, firstly, what's desktopcouch?
(12:03:21 PM) aquarius: Well, it's giving every Ubuntu user a CouchDB on their desktop.
(12:03:23 PM) aquarius: CouchDB is a "document-oriented database". If you're familiar with SQL databases, where you define a table and then a table has a number of rows and each row has the same columns in it...this is not like that.
(12:03:39 PM) aquarius: In fact, CouchDB spearheads the "NoSQL" movement, which is all about new database stuff that isn't mired in a mass of SQL that belongs in the 1980s.
(12:03:50 PM) aquarius: SQL was good for its time. Like, say, Purple Rain by Prince. Now, though...there's something better.
(12:04:18 PM) aquarius: [SLIDE 1]
(12:04:40 PM) aquarius: Instead of regimented tables and rows, in CouchDB you store "documents", where each document is a set of key/value pairs. Think of this like a Python dictionary, or a JSON document.
(12:04:52 PM) carlos is now known as Guest92650
(12:04:55 PM) aquarius: So you can store one document like this:
(12:04:57 PM) aquarius: { "name": "Stuart Langridge", "project": "Desktop Couch", "hair_colour": "red" }
(12:05:06 PM) aquarius: and another document which is completely different:
(12:05:07 PM) aquarius: { "name": "Stuart Langridge",
(12:05:07 PM) aquarius:   "outgoings": [
(12:05:08 PM) aquarius:     { "shop": "In and Out Burger", "cost": "$12.99" } ,
(12:05:18 PM) aquarius:     { "shop": "Ferrari dealership", "cost": "$175000" }
(12:05:20 PM) aquarius:   ]
(12:05:22 PM) aquarius: }
(12:05:37 PM) aquarius: The interface to CouchDB is pure HTTP. Just like the web. It's RESTful, for those of you who are familiar with web development.
(12:05:52 PM) aquarius: This means that every programming language already knows how to speak it, at least in basic terms.
(12:05:55 PM) aquarius: [SLIDE 2]
(12:06:05 PM) aquarius: CouchDB also comes with an in-built in-browser editor, so you can look at and browse around and edit all the data stored in it.
(12:06:32 PM) aquarius: So, the desktopcouch project is all about providing these databases for every user, so each user's applications can store their data all in one place.
(12:07:16 PM) aquarius: You can have as many databases in your desktop Couch as you or your applications want, and storage is unlimited.
(12:07:37 PM) aquarius: well, assuming you have an infinitely large hard drive, anyway.
(12:07:51 PM) aquarius: Desktop Couch is built to do "replication", synchronizing your data between different machines. So if you have, say, Firefox storing your bookmarks in your desktop Couch on your laptop, those bookmarks could be automatically synchronized to your Mini 9 netbook, or to your desktop computer.
(12:08:13 PM) aquarius: They can also be synchronized to Ubuntu One, or another running-in-the-cloud service, so you can see that data on the web, or synchronize between two machines that aren't on the same network.
(12:08:40 PM) aquarius: [SLIDE 3]
(12:09:23 PM) aquarius: So you've got your bookmarks everywhere. Your own personal, but it's your data, not locked up solely on anyone else's servers.
(12:09:43 PM) w1nGNUtz_ is now known as w1nGNUtz
(12:09:49 PM) aquarius: Imagine if your apps stored their preferences in desktop Couch. Santa Claus brings you a new laptop, you plug it in, pair it with your existing machine, and all your apps are set up. No work.
(12:10:15 PM) aquarius: But sharing data between machines is only half the win. The other half is sharing data between applications.
(12:10:31 PM) aquarius: I want all my stuff to collaborate. I don't want to have to "import" data from one program to another, if I switch from Thunderbird to Evolution to KMail to mutt.
(12:10:53 PM) aquarius: I want any application to know about my address book, to allow any application to easily add "send this to another person", so that I can work with people I know.
(12:11:11 PM) aquarius: I want to be able to store my songs in Banshee and rate them in Rhythmbox if I want -- when people say that the Ubuntu desktop is about choice, that shouldn't mean choosing between different incompatible data silos. I can choose one application and then choose another, you can choose a third, and we can all cooperate on the data.
(12:11:32 PM) aquarius: My choice should be how I use my applications, and how they work; I shouldn't have to choose between underlying data storage. With apps using desktopcouch I don't have to.
(12:11:44 PM) aquarius: All my data is stored in a unified place in a singular way -- and I can look at my data any time I want, no matter which application put it there! Collaboration is what the open source desktop is good at, because we're all working together. It should be easy to collaborate on data.
(12:11:59 PM) aquarius: That's a brief summary of what desktopcouch *is*: any questions so far before we get on to the meat: how do you actually Use This Thing?
(12:12:13 PM) aquarius: pecisk> QUESTION: How CouchDB stores data? Multiple files, or something else?
(12:12:48 PM) aquarius: each database is stored in a separate file, but you never, ever have to care about that :) Like how you don't have to care exactly how MySQL stores your databases
(12:12:59 PM) aquarius: brunogirin> QUESTION: how do you control what apps see what data?
(12:13:06 PM) cjohnston|cell_ is now known as cjohnston|cell
(12:13:57 PM) aquarius: brunogirin, at the moment you can't limit which apps can see which databases, but it woul dbe possible to add that if there was a need for it -- authentication to desktopcouch is done with OAuth specifically for ths sort of thing
(12:14:47 PM) aquarius: osteenbergen> QUESTION: Which programs are supported today??
(12:14:58 PM) aquarius: any program that wants to use desktopcouch can do so!
(12:15:05 PM) aquarius: danielbell> QUESTION: is there any limits on what kind of data you can store in a couchdb? can you store whole paragraphs of text - will it retain formatting like linebreaks and stuff like that?
(12:15:28 PM) aquarius: no limit to what you can store. Line breaks will be retained.
(12:15:40 PM) aquarius: ab28> QUESTION: Data migration and replication is possible with CouchDB?
(12:16:01 PM) aquarius: yep. That's what I meant above by talking about how you can share data between machines
(12:16:09 PM) aquarius: alanbelll> QUESTION: can I share a desktop couch database with someone else?
(12:16:23 PM) aquarius: there's no built-in way to do that with desktopcouch at the moment. I have Plans, though. :)
(12:16:31 PM) aquarius: fredo> QUESTION: Is desktopcouch intended to replace gconf?
(12:16:37 PM) mode (+v ClassBot) by ChanServ
(12:17:09 PM) aquarius: no. gconf is about configuration. desktopcouch is about information. It ought to be possible to implement a desktopcouch back-end to gconf, though, and it's something that I've thought about and thought would be interesting
(12:17:24 PM) aquarius: titeuf_87> QUESTION: how well does it work on other systems like Windows when you try to make an app cross-platform?
(12:17:26 PM) ClassBot: titeuf_87 asked: how well does it work on other systems like Windows when you try to make an app cross-platform?
(12:17:36 PM) aquarius: shut up, classbot. :)
(12:18:09 PM) aquarius: there's an ongoing effort to port desktopcouch to Windows, led by mandel, who's doing an excellent job. I'm sure he'd be happy to get some help, though :)
(12:18:24 PM) aquarius: webwurst> QUESTION: could you put this link to te panel top left? ;)
(12:18:25 PM) aquarius: sure :)
(12:18:33 PM) aquarius: damo35> QUESTION: Who defines the standards for how a music player should store it's data, for example? Would Rhythmbox and Banshee each have plugins to convert to CouchDB?
(12:19:15 PM) aquarius: yes. there's a mailing list where this sort of thing is discussed; it's about rough consensus and running code, rather than schemas which are inscribed on stone tablets and Must Be Obeyed. What we want is for people to get together and talk through this stuff.
(12:20:00 PM) aquarius: OK, I'll carry on now
(12:20:02 PM) aquarius: The easiest way to use desktopcouch is from Python, using the desktopcouch.records module.
(12:20:23 PM) aquarius: [SLIDE 4]
(12:20:29 PM) aquarius: This is installed by default in Karmic and Lucid.
(12:20:39 PM) aquarius: An individual "document" in desktop Couch is called a "record", because there are certain extra things that are in a record over and above what stock CouchDB requires, and desktopcouch.records takes care of this for you.
(12:20:49 PM) aquarius: First, a bit of example Python code! This is taken from the docs at /usr/share/doc/python-desktopcouch-records/api/records.txt.
(12:20:53 PM) aquarius: >>> from desktopcouch.records.server import CouchDatabase
(12:20:56 PM) aquarius: >>> from desktopcouch.records.record import Record
(12:20:58 PM) aquarius: >>> my_database = CouchDatabase("testing", create=True)
(12:21:07 PM) aquarius: # get the "testing" database. In your desktop Couch you can have many databases; each application can have its own with whatever name it wants. If it doesn't exist already, this creates it.
(12:21:22 PM) aquarius: >>> my_record = Record({ "name": "Stuart Langridge", "project": "Desktop Couch", "hair_colour": "red" }, record_type='')
(12:21:25 PM) aquarius: # Create a record, currently not stored anywhere. Records must have a "record type", a URL which is unique to this sort of record.
(12:21:47 PM) aquarius: >>> my_record["weight"] = "too high!"
(12:21:49 PM) aquarius: # A record works just like a Python dictionary, so you can add and remove keys from it.
(12:22:09 PM) aquarius: >>> my_record_id = my_database.put_record(my_record)
(12:22:12 PM) aquarius: # Actually save the record into the database. Records each have a unique ID; if you don't specify one, the records API will choose one for you, and return it.
(12:22:31 PM) aquarius: >>> fetched_record = my_database.get_record(my_record_id)
(12:22:34 PM) aquarius: # You can retrieve records by ID
(12:22:44 PM) aquarius: >>> print fetched_record["name"]
(12:22:46 PM) aquarius: "Stuart Langridge"
(12:22:53 PM) aquarius: # and the record you get back is a dictionary, just like when you're creating it.
(12:23:18 PM) aquarius: That's some very basic code for working with desktop Couch; it's dead easy to save records into the database.
(12:23:31 PM) aquarius: You can work with it like any key/value pair database.
(12:23:40 PM) aquarius: And then desktopcouch itself takes care of things like replicating your data to your netbook and your desktop without you having to do anything at all.
(12:23:48 PM) aquarius: And the users of your application can see their data directly by using the web interface; no more grovelling around in dotfiles or sqlite3 databases from the command line to work out what an application has stored.
(12:24:05 PM) aquarius: You can get at the web interface by browsing to file:///home/aquarius/.local/share/desktop-couch/couchdb.html in a web browser, which will take you to the right place.
(12:24:45 PM) aquarius: I'll stop there for some questions about this section!
(12:24:58 PM) aquarius: (but first I'll fix the browser in lernid. Sorry about that, all. )
(12:25:19 PM) aquarius: azathothgr> why a url ?
(12:25:52 PM) aquarius: Two reasons: the first is that a URL is an easy way to ensure that record types are unique and don't clash (if you call your record type "recipe", someone else might independently pick that name)
(12:26:41 PM) aquarius: and secondly, because you are encouraged (but not required!) to write something about the fields you expect in the record at that URL, so when someone else thinks "I would like my app to collaborate with yours on data", they can look at the detail of the record to find out why it's like it is.
(12:26:50 PM) aquarius: virkang> QUESTION: can we store an entire file in a database record ?
(12:27:14 PM) aquarius: sure. I mean, I wouldn't just dump the whole file in, I'd store it in some sort of structured way, but you can do so.
(12:27:22 PM) aquarius: nadako70> QUESTION: how to configure the actual replication? :)
(12:27:45 PM) aquarius: replication between machines on your network is set up with desktopcouch-pair, which is in the desktopcouch-tools package
(12:27:58 PM) aquarius: replication to Ubuntu One is set up for you if you're an Ubuntu One user
(12:28:12 PM) aquarius: danielbell> QUESTION: does record type have to be a single "word" can you have spaces in record types?
(12:28:19 PM) aquarius: it needs to be a valid URL
(12:28:33 PM) aquarius: something you can visit in your web browser.
(12:28:57 PM) aquarius: brunogirin> QUESTION: can you limit replication to specific databases?
(12:29:28 PM) aquarius: yes. At the moment it's harder than it should be, though. You need to edit the paired-server records in the management database in desktopcouch and add to excluded_names.
(12:29:42 PM) aquarius: there's a Launchpad Answers question about this which should cover all the detail.
(12:29:49 PM) aquarius: nvsbl91> QUESTION: does it matter what that url is?
(12:30:01 PM) aquarius: nope, as long as it's unique to that record type.
(12:30:13 PM) aquarius: OK, I shall carry on!
(12:30:18 PM) aquarius: Next, on to views.
(12:30:20 PM) aquarius: Being able to retrieve records one at a time is nice, but it's not what you want to do most of the time.
(12:30:32 PM) aquarius: To get records that match some criteria, use views.
(12:30:42 PM) aquarius: Views are sort of like SQL queries and sort of not. Don't try and think in terms of a relational database.
(12:30:50 PM) aquarius: The best reference on views is the CouchDB book, available for free online (and still being worked on): the views chapter is at
(12:31:02 PM) aquarius: Basically, a view is a JavaScript function.
(12:31:30 PM) aquarius: When you request the records from a view, desktopcouch runs your view function against every document in the database and returns the results.
(12:32:13 PM) aquarius: So, to return all documents with "name": "Stuart Langridge", the view function would look like this:
(12:32:24 PM) aquarius: function(doc) { if ( == "Stuart Langridge") emit(doc._id, doc) }
(12:32:55 PM) aquarius: This sort of thinking takes a little getting used to, but you can do anything you want with it once you get into it
(12:33:15 PM) aquarius: desktopcouch.records helps you create views and request them
(12:33:54 PM) aquarius: # creating a view
(12:33:56 PM) aquarius: >>> map_js = """function(doc) { emit(doc._id, null) }"""
(12:33:59 PM) aquarius: >>> db.add_view("name of my view", map_js, None, "name of the view container")
(12:34:24 PM) aquarius: # requesting the records that the view returns
(12:34:25 PM) aquarius: >>> result = db.execute_view("name of my view", "name of the view container")
(12:34:41 PM) aquarius: The "view container", called a "design doc", is a collection of views. So you can group your views together into different design docs.
(12:35:01 PM) aquarius: Advanced people who know about map/reduce should know that this is a map/reduce approach.
(12:35:04 PM) aquarius: You can also specify a reduce function (that's the None parameter in the add_view function above)
(12:35:06 PM) aquarius: The CouchDB book has all the information you'll need on views and the complexities of them.
(12:35:09 PM) aquarius: Questions on views? :-)
(12:35:24 PM) aquarius: hemanth> QUESTION: can CouchDB used for webbased apps, like different user different db with the same login page?
(12:36:14 PM) aquarius: It could be, yeah. That's a CouchDB question about running it on the server, which is a jolly useful thing to do, but desktopcouch isn't really about that; desktopcouch is about using the CouchDB technology to give people a cool DB on their desktop for their apps to use
(12:36:33 PM) aquarius: so, it's a good question, I'm just not going to go into it here ;)
(12:36:38 PM) aquarius: w1ngnutz> QUESTION:  You mentioned "record_type='". Does this need to be unique?
(12:36:46 PM) aquarius: it's unique for a *type* of record.
(12:37:25 PM) aquarius: so if you're writing an app which helps you remember recipes, and your app stores each recipe you want to remember as a record, then they'd all have the same record type
(12:37:56 PM) aquarius: if your app stores a few different kinds of record, each kind of record would have a different record type
(12:38:02 PM) aquarius: rovax31> QUESTION: is couchdb oython engine on for view parsing with desktop couch for js haters?
(12:38:11 PM) aquarius: er, Crovax31, that was
(12:38:28 PM) aquarius: it's not on by default (has mikeal finished writing it yet? :))
(12:38:43 PM) aquarius: there's no reason why you couldn't install it and use it for your apps, though.
(12:38:54 PM) aquarius: nadako70> QUESTION: oh, what about indexing, running a js function for every record seems not too optimal for frequent requests
(12:39:47 PM) aquarius: it doesn't *really* run it every go. Instead, couchdb keeps cached versions of the values around, sort of, and when new records are added, they're added to the result sets for views at the same time. Sort of. But this is deep techie stuff. The Couch book has all the detail you could want about this.
(12:39:56 PM) aquarius: osteenbergen> QUESTION: Why triple quotes?
(12:40:09 PM) aquarius: so I can be lazy and not care if my JS code has quotes in. ;)
(12:40:36 PM) aquarius: OK,I shall continue
(12:40:45 PM) aquarius: There is an Even Easier way to have applications use desktop Couch for data storage.
(12:40:46 PM) aquarius: One of the really cool things in karmic is Quickly:
(12:41:00 PM) aquarius: quickly helps you make applications...quickly. :-)
(12:41:02 PM) aquarius: and apps created with Quickly use desktopcouch for data storage.
(12:41:07 PM) aquarius: If you haven't seen Quickly, it's a way of easily handling all the boilerplate stuff you have to do to get a project going; "quickly create ubuntu-project myproject" gives you a "myproject" folder containing a Python project that works but doesn't do anything.
(12:41:19 PM) aquarius: So you can concentrate on writing the code to do what you want, rather than boilerplate to get started.
(12:41:21 PM) aquarius: Quickly is gonna come up a lot this week. It's designed for opportunistic programming.
(12:41:23 PM) aquarius: It's dead neat :)
(12:41:31 PM) ssd7 is now known as Guest65382
(12:41:51 PM) aquarius: jono's already covered quickly a bit in his introduction, and there's a session on it later in the week
(12:41:52 PM) aquarius: Anyway, quickly projects are set up to save application preferences into desktop Couch by default. So you get the advantages of using desktop Couch (replication, browsing of data) for every quickly project automatically.
(12:42:18 PM) aquarius: The quickly guys have also contributed CouchGrid:
(12:42:21 PM) aquarius: >>> from desktopcouch.records.couchgrid import CouchGrid
(12:42:22 PM) aquarius: >>> keys=["key","another key"] # to label the columns
(12:42:24 PM) aquarius: >>> couchgrid = CouchGrid(db_name, record_type=record_type, keys=keys)
(12:42:27 PM) aquarius: >>> mywindow.pack_start(couchgrid)
(12:42:37 PM) aquarius: and then you have a CouchGrid, which is a data table where all the data is automatically retrieved from desktopcouch and stored back into desktopcouch when changed
(12:42:57 PM) aquarius: has a video demonstrating couchgrids
(12:43:32 PM) aquarius: oops, now everyone can hear rickspencer3 talking in the video ;)
(12:43:33 PM) niko is now known as Guest79188
(12:43:53 PM) nik0 is now known as niko
(12:44:10 PM) aquarius: CouchGrid is moving out of the desktopcouch core and into quidgets, a cool set of widgets deliberately designed to work well in quickly apps and be just as cool as quickly itself
(12:44:25 PM) aquarius: You don't have to know anything about desktopcouch at all for this! Just use the widget and your data will be saved to the database and synced to your different machines with no effort or code on your part at all.
(12:44:51 PM) aquarius: "quickly tutorial ubuntu-project" has lots of information about CouchGrid and how to use it.
(12:45:13 PM) aquarius: Any questions about quickly? (I can't guarantee to be able to answer them, but #quickly is great for this.)
(12:45:58 PM) aquarius: (specifically, questions about using quickly with desktopcouch. If you have questions about quickly itself, you'll be best asking them in the Quickly session, next)
(12:46:32 PM) aquarius: So, who's already using desktopcouch?
(12:46:39 PM) aquarius: Quickly, as mentioned, uses desktopcouch for preferences in projects it creates.
(12:46:51 PM) aquarius: The Gwibber team are working on using desktopcouch for data storage
(12:47:23 PM) aquarius: and that's working in the latest lucid, which is way, way cool
(12:47:25 PM) aquarius: Bindwood ( is a Firefox extension to store bookmarks in desktopcouch
(12:47:43 PM) aquarius: Macaco-contacts is transitioning to work with desktopcouch for contacts storage (
(12:48:00 PM) aquarius: Evolution can now, in the evolution-couchdb package, store all contacts in desktopcouch
(12:48:15 PM) aquarius: Akonadi, the KDE project's contacts and PIM server, can also store contacts in desktopcouch
(12:48:26 PM) aquarius: These last three are interesting, because everyone's collaborating on a standard record type and record format for "contacts", so Evolution and Akonadi and Macaco-contacts will all share information.
(12:48:43 PM) aquarius: So if you switch from Gnome to KDE, you won't lose your address book.
(12:48:54 PM) aquarius: I'm really keen that this happens, that applications that store similar data (think of mail clients and addressbooks, as above, or media players storing metadata and ratings, for example) should collaborate on standard formats.
(12:49:19 PM) aquarius: lamalex_2> Is this as an alternative to gconf?
(12:49:45 PM) aquarius:  no. gconf is about configuration. desktopcouch is about information. It ought to be possible to implement a desktopcouch back-end to gconf, though, and it's something that I've thought about and thought would be interesting
(12:49:56 PM) aquarius: rickspencer3> A wiki space with existing record types would be nice
(12:50:17 PM) aquarius: has a few
(12:50:37 PM) aquarius: but I do not want to give the impression that you have to get "approval" or anything, or be listed in a central repository
(12:50:59 PM) aquarius: you can invent your own record types. Point them to whatever URL you choose. Get together with people and decide between yourselves.
(12:51:18 PM) aquarius: There's no overall control. It's all about enabling people to work together. You don't have to "register" with the desktopcouch team or anything.
(12:51:30 PM) aquarius: virkang> QUESTION: How are DesktopCouch and Ubuntu One related ?
(12:52:27 PM) aquarius: Ubuntu One provides a home in the cloud for your desktopcouch data. This makes it easy to synchronize data between machines that aren't on the same network. You don't need to use Ubuntu One to use desktopcouch, and you can synchronize data between desktopcouches on your network without using Ubuntu One at all.
(12:52:56 PM) aquarius: nilsr47> QUESTION: Any ideas for collaborating on record types?
(12:53:32 PM) aquarius: if you've got an idea for a record type that you think that your app would use, and you think that others might want the same record type so you can all collaborate, get in touch with them and talk it over
(12:53:42 PM) aquarius: the desktopcouch mailing list is a good place to have that discussion
(12:53:46 PM) aquarius: (link shortly :))
(12:53:53 PM) aquarius: [SLIDE 5]
(12:53:56 PM) aquarius: so, why use desktopcouch? This is what you should take away from this talk.
(12:54:05 PM) aquarius: It's an easy way to store data. You don't have to think about SQL statements. Just make a Python dictionary, which you already know how to do, and then store it.
(12:54:16 PM) aquarius: Storing your data in desktopcouch means that it's everywhere, on all your machines. That's no extra work at all; we take care of all of that for you.
(12:54:36 PM) aquarius: You get the web editor for free. It's so, so much easier to work with and play with and see what your application is doing if you can see all the data that it's storing.
(12:54:50 PM) aquarius: And, where should you find more out?
(12:54:51 PM) aquarius: [SLIDE 6]
(12:54:57 PM) aquarius: Details about the desktopcouch project can be found at
(12:55:46 PM) aquarius: the documentation is also helpful (well, I hope it is), and is particularly relevant to this group
(12:55:54 PM) aquarius: There's a mailing list at
(12:56:02 PM) aquarius: The code is developed in Launchpad:
(12:56:08 PM) aquarius: The best place to ask questions generally is the #ubuntuone channel; all the desktopcouch developers are hanging out there
(12:56:12 PM) aquarius: The best place to ask questions that you have right now is...right now, so go ahead and ask in #ubuntu-classroom-chat, and I'll answer any other questions you have!
(12:56:37 PM) aquarius: I've got about 3 minutes before rickspencer3 blows us all away with the sheer coolness of quickly :)
(12:57:41 PM) aquarius: nilsr47> QUESTION: Do you have to do something special to run CouchDB?
(12:57:59 PM) aquarius: NilsR47, no. Just use desktopcouch.records and it gets run for you. You never have to start it up manually.
(12:58:10 PM) aquarius: titeuf_87> QUESTION if gconf is more for application configuration, why does quickly uses desktopcouch as default for storing settings?
(12:58:24 PM) aquarius: that's a quickly question, that is ;)
(12:58:55 PM) aquarius: there are benefits to using desktopcouch, like that you get the synchronization for free
(12:59:22 PM) aquarius: it would be great if gconf had that, but that's quite a lot of work -- as mentioned earlier, one way to do that would be to implement a desktopcouch backend for gconf
(01:00:19 PM) aquarius: <rickspencer3> mostly writing to gconf is too hard; writing to desktopcouch is dead simple; also, you get syncing
(01:00:24 PM) aquarius: evrick67> hmm how do you get desktoopcouch to sync between computers on a network?
(01:00:41 PM) aquarius: if you're not using Ubuntu One, then check out the desktopcouch-pair program in the desktopcouch-tools package

MeetingLogs/OpWeek1003/CouchDB (last edited 2010-03-01 18:43:07 by pool-71-182-100-128)