Mozilla Messaging's Raindrop

By Kshitij Sobti Published Date
16 - Nov - 2009
| Last Updated
16 - Nov - 2009
Mozilla Messaging's Raindrop

Mozilla Raindrop

Let us face it, email just doesn't cut it anymore.

For most people, email is just a minor portion of our social communication, between messages like "xyz is now following you on Twitter" and "New offers from eBay" you are bound to miss out on what is really important and relevant to you. For most people the biggest part while checking their email is to identify the relevant messages, and after reading them it's usually select unread and delete.

Email has stopped being personal.

For the most part all our personal communications now occur on more instantaneous mediums and services such as Twitter and Facebook, where you know for the most part that the messages are coming from your friends. Relevancy is assured.

With the tagline "making your inbox personal again" comes Mozilla Messaging's new Raindrop project. Raindrop defines itself as: "an open design process in building a better, more personal and useful way of participating in your existing communications. Built on a web messaging platform designed to push the limits of browser based applications—we are a Mozilla Labs project."

To accomplish that what Raindrop does is, it "takes messages from Social Networking services, advertisers, and Twitter, and organizes your mailbox according to importance."

Sounds exciting!

Unlike Thunderbird, Raindrop isn't your average software application which you just download, install and run, it is as web platform. It is a messaging application which runs its own server, connects to a database, and is accessed through your browser. Much like many of the web frameworks out there. Yet this one is intended to be used by the average computer user for handling their social interactions.

The setup procedure is rather contrived right now (especially for Windows users), as it requires that you install the Apache CouchDB, and Python, and requires the installation of multiple python modules, some of which need to be tracked down and compiled. It needs you to configure it, and set up your accounts via a text file placed in your home directory, which stores your configuration in an INI-like format. [Instructions available here]

I for instance was in a pickle, with a 64bit version of Python 3.1 and a 64bit version of Python 2.6 neither of which are supported by some of the modules. To further complicate matters, I was using a combination of Cygwin and Microsoft's Visual Studio 2008 Express compilers (the mozilla build system), which further complicated certain build processes (openssl), and required me to manually edit some of the scripts get them to compile (before I realized a pre-compiled package was already available!)

If this sounds too scary, don't worry, the product is still in its very early stages, and as it develops further, it will include an better installer and simpler configuration. Currently the product has just reached version 0.1 and it is likely that if you get the latest version, it will work slightly differently than what is depicted here!

The project is written using Python, and uses Apache's CouchDB as its backend, and the Twisted network communication libraries. The UI uses standard technologies such as HTML, CSS and JavaScript (using the dojo JavaScript Library) to provide a rich interactive experience.

Raindrop deviates even from traditional web-served applications, in its use of a non-relational database called CouchDB. This database server not only stores the message data, but also stores the files composing the UI of the web application. The interface is served by directly from CouchDB's internal webserver!

Unlike traditional relational databases that you might be familiar with, non relational databases usually store data in the form of key / value pairs. Apache CouchDB stores data as JSON strings representing data elements, and the HTML, CSS, and JavaScript files which make up the UI are stored as attachments such that they can be accessed directly from the database.

Being a Mozilla product, you can imaging that extensibility is an important part of Raindrop's design. Most of Raindrop's functionality is provided by "Extenders" which operate on the messages data to create new UI interactions for the frontend, or new interfaces for the backend. Raindrop for example comes with internal support for Twitter, IMAP email, Gmail, and Skype, backend extensions here extract data from these services to create one integrated data source.

These extenders can be added straight from the Raindrop UI itself, and can in-fact be coded right inside the browser using the Bespin code editor which uses an HTML5 canvas to render a rich code editing environment in the browser itself.

For an average computer user, for whom Python is "just a snake", the Raindrop project currently does not offer much. It is too much of a hassle to get it up and running, and it doesn't provide much utility right now. However, as an idea Raindrop is quite alluring, having an integrated social inbox which is actually capable of prioritizing the messages we really want to read.

It still seems difficult to imagine how Raindrop would finally be packaged though. On a Linux system is still common to find Python, and perhaps even CouchDB installed, however, for a Windows user, a software application which requires the installation of a database server, and a programming language interpreter, is sure to be a deal-breaker.

For the developer however, this is another juicy bit of python to sink your teeth in. Who knew all it would take was Python, a couple of Python Eggs, and Couch to make a beautiful Raindrop for the Cloud!

Raindrop's page on Mozilla Labs
Slightly complicated install instructions for Raindrop