<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Raindrop</title>
	<atom:link href="http://mozillalabs.com/raindrop/feed/" rel="self" type="application/rss+xml" />
	<link>http://mozillalabs.com/raindrop</link>
	<description>An Experiment in Open Messaging</description>
	<lastBuildDate>Wed, 14 Apr 2010 02:48:19 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.0.1</generator>
		<item>
		<title>OAuth support in Raindrop</title>
		<link>http://mozillalabs.com/raindrop/2010/04/13/oauth-support-in-raindrop/</link>
		<comments>http://mozillalabs.com/raindrop/2010/04/13/oauth-support-in-raindrop/#comments</comments>
		<pubDate>Wed, 14 Apr 2010 02:48:19 +0000</pubDate>
		<dc:creator>Mark Hammond</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[oauth]]></category>
		<category><![CDATA[privacy]]></category>
		<category><![CDATA[raindrop]]></category>

		<guid isPermaLink="false">http://mozillalabs.com/raindrop/?p=193</guid>
		<description><![CDATA[Raindrop has always been mindful of security and privacy issues, and even though we have written about this before, we have required your password to access your email and twitter accounts.  We are happy to report that things have changed. A major impediment to working without your password has been accessing your email.  While twitter [...]]]></description>
			<content:encoded><![CDATA[<p>Raindrop has always been mindful of security and privacy issues, and even though we have <a href="https://wiki.mozilla.org/Raindrop/Security">written about this before</a>, we have required your password to access your email and twitter accounts.  We are happy to report that things have changed.</p>
<p>A major impediment to working without your password has been accessing your email.  While twitter supports Open Authentication (OAuth), it was impossible to access your email without a password, so support for a password-less raindrop was put on hold pending some answer to this problem.  Fortunately, Google and Yahoo have recently been <a href="http://tech.groups.yahoo.com/group/sasl_oauth/">working on a spec for OAuth-based IMAP authentication</a>, and with GMail providing a working implementation, raindrop could make that leap.</p>
<p>The raindrop front-end now has support for configuring gmail and twitter accounts using OAuth.  During the account configuration process you are directed to Google or Twitter to authorize raindrop to access your account.  You may need to provide your password to Google or Twitter, and after authorizing raindrop, you are directed back to raindrop to complete the account setup.  On this return step, Google or Twitter provides raindrop with OAuth tokens which raindrop stores on the file-system with the account configuration information.  These tokens can then be used in lieu of the username and password when communicating with Twitter or the Gmail IMAP server.</p>
<p>The key reason this matters is that raindrop never needs to know your password &#8211; let alone store it &#8211; and the user remains in complete control over what operations can be performed by raindrop.  Thus, if raindrop managed to be compromised we might leak enough information for our existing tokens to used temporarily, but at any time the user can visit Twitter or GMail and revoke the tokens making that leaked information useless.  It will be impossible for raindrop to leak your password as raindrop doesn&#8217;t know what it is.</p>
<p>The OAuth support for twitter was fairly easy to implement by following the examples found on the twitter API documentation site.  Raindrop uses the <a href="http://mike.verdone.ca/twitter/">Python <em>twitter</em> library</a>, and although this library doesn&#8217;t currently support OAuth directly, we are in the process of rectifying this by working with the project on the changes necessary for such support.</p>
<p>The OAuth support for GMail was similarly easy given the <a href="http://code.google.com/p/google-mail-xoauth-tools/wiki/XoauthDotPyRunThrough">nice examples provides by Google</a>.  While OAuth support for IMAP is currently in the early stages of becoming a standard, we hope that the appeal of password-less IMAP login will be such that other major IMAP servers will start to support this in the future &#8211; until then, Raindrop will still need to store your password for IMAP servers which do not implement this new functionality.</p>
<p>While raindrop still has work to do in ensuring your private information remains secure, we see OAuth support as a nice step in the right direction.</p>
]]></content:encoded>
			<wfw:commentRss>http://mozillalabs.com/raindrop/2010/04/13/oauth-support-in-raindrop/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Raindrop looking at 2010</title>
		<link>http://mozillalabs.com/raindrop/2010/01/19/raindrop-looking-at-2010/</link>
		<comments>http://mozillalabs.com/raindrop/2010/01/19/raindrop-looking-at-2010/#comments</comments>
		<pubDate>Tue, 19 Jan 2010 19:52:41 +0000</pubDate>
		<dc:creator>Bryan</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://mozillalabs.com/raindrop/?p=171</guid>
		<description><![CDATA[It&#8217;s a new year and the Raindrop team is looking forward, deciding what we want to become in this 2010. We successfully unmasked ourselves and launched a project driven by innovation to change what has become a stale world of messaging. I don&#8217;t want to repeat anything that avid readers have already seen so here [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s a new year and the Raindrop team is looking forward, deciding what we want to become in this 2010.  We successfully unmasked ourselves and launched a project driven by innovation to change what has become a stale world of messaging.</p>
<p>I don&#8217;t want to repeat anything that avid readers have already seen so here are some quick highlights and some news for the future.</p>
<p><strong>Design</strong></p>
<p>If you&#8217;ve been reading the <a href="http://blogs.mozillamessaging.com/raindropdesign/">Raindrop Design Blog</a> you&#8217;d have already seen the latest mockups from <a href="http://blogs.mozillamessaging.com/raindropdesign/2009/11/10/thinking-mobile/">Mobile</a> to <a href="http://blogs.mozillamessaging.com/raindropdesign/2009/11/19/a-personal-message/">Attachments</a>.</p>
<p>Be sure to take a look at the latest design blog entry, <strong><a href="http://blogs.mozillamessaging.com/raindropdesign/2010/01/19/raindrop-design-status/">Raindrop Design Status</a></strong></p>
<p>Here&#8217;s a quick video demo of some of the new interactions guided by our Graphic Designer Andy :</p>
<p><object width="540" height="304"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=8834509&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=00D6C6&amp;fullscreen=1" /><embed src="http://vimeo.com/moogaloop.swf?clip_id=8834509&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=00D6C6&amp;fullscreen=1" type="application/x-shockwave-flash" width="540" height="304"></embed></object></p>
<p><span id="more-171"></span></p>
<p><strong>Vimeo</strong></p>
<p>For all of our latest videos check out <a href="http://vimeo.com/mozillamessaging">Mozilla Messaging on Vimeo</a>.  Here are a few more of the latest videos:</p>
<ul>
<li><a href="http://vimeo.com/8772031">File Attachments</a></li>
<li><a href="http://vimeo.com/8771552">Really Cool Video</a></li>
</ul>
<p><strong>Twitter</strong></p>
<p>On Twitter you can now follow <a href="http://twitter.com/MozillaRaindrop">@MozillaRaindrop</a> for all the latest screenshots and news about Raindrop design and development.  To catch you up, here are some of the tweets you&#8217;ve missed.</p>
<ul>
<li>#raindrop now pulls out GPS information from EXIF data on images so you can see where that photo was taken <a href="http://twitter.com/clarkbw/status/7726948467">$</a></li>
<li>Flickr link expanding landed in raindrop, <a href="http://i.imgur.com/OY0JL.png">http://i.imgur.com/OY0JL.png</a> How does that look? <a href="http://twitter.com/clarkbw/status/7497174647">$</a></li>
<li>Vimeo links are now data mined inside raindrop too, check it out: <a href="http://i.imgur.com/f4fRg.png">http://i.imgur.com/f4fRg.png</a> (@_andychung) <a href="http://twitter.com/clarkbw/status/7500019007">$</a></li>
<li>NYT API (@timesopen) getting link info for NYT links in Raindrop, <a href="http://i.imgur.com/uWv3w.png">http://i.imgur.com/uWv3w.png</a> maybe @donohoe will get it running now <a href="http://twitter.com/clarkbw/status/7643353126">$</a></li>
<li><a href="http://vimeo.com/8771552">http://vimeo.com/8771552</a> &#8211; Quick video of me clicking through some attached links in #Raindrop <a href="http://twitter.com/_andychung/status/7807486122">$</a></li>
<li><a href="http://vimeo.com/8772031">http://vimeo.com/8772031</a> &#8211; one more quick video showing file attachments being clicked through. @jrburke is pumping good stuff out today! <a href="http://twitter.com/_andychung/status/7808542580">$</a></li>
<li><a href="http://i.imgur.com/ekReU.png">http://i.imgur.com/ekReU.png</a> &#8211; having some fun with our metrics prompt <a href="http://twitter.com/_andychung/status/7728226660">$</a></li>
<li>Cool! First link to Raindrop from the nytimes (a blog, but still!) <a href="http://bit.ly/5w4CiB">http://bit.ly/5w4CiB</a> <a href="http://twitter.com/davidascher/status/7644484557">$</a></li>
<li>Kittens inspired by kittens in #raindrop: <a href="http://i.imgur.com/RMqJ9.png">http://i.imgur.com/RMqJ9.png</a><a href="http://twitter.com/_andychung/status/7643602369">$</a></li>
<li>Now with super paper clip action! <a href="http://i.imgur.com/bJt9u.png">http://i.imgur.com/bJt9u.png</a> (@clarkbw) <a href="http://twitter.com/_andychung/status/7498486002">$</a></li>
</ul>
<p><strong>Flickr</strong></p>
<p>Our <a href="http://www.flickr.com/groups/raindropdesign/pool/">Raindrop Flickr Design Group</a> continues to be an excellent place for comments and ideas on new mockups posted for fun and for blogging.</p>
<table style="border:none;width:100%">
<tr>
<td style="text-align:center">
<a href="http://www.flickr.com/photos/43332657@N06/4222378019/" title="Bulk actions by Raindrop Andy, on Flickr"><img src="http://farm3.static.flickr.com/2743/4222378019_a938d20215_m.jpg" width="240" height="130" alt="Bulk actions" /></a>
</td>
<td style="text-align:center">
<a href="http://www.flickr.com/photos/43332657@N06/4267700856/" title="links by Raindrop Andy, on Flickr"><img src="http://farm5.static.flickr.com/4020/4267700856_1ce42970d5_m.jpg" width="240" height="194" alt="links" /></a>
</td>
</tr>
<tr>
<td style="text-align:center">
<a href="http://www.flickr.com/photos/43332657@N06/4252109194/" title="Full Message by Raindrop Andy, on Flickr"><img src="http://farm3.static.flickr.com/2684/4252109194_ba795640e8_m.jpg" width="240" height="199" alt="Full Message" /></a>
</td>
<td style="text-align:center">
<a href="http://www.flickr.com/photos/43332657@N06/4177060185/" title="contact_info by Raindrop Andy, on Flickr"><img src="http://farm3.static.flickr.com/2642/4177060185_44864d1a72_m.jpg" width="240" height="202" alt="contact_info" /></a>
</td>
</tr>
</table>
<p><strong>Development Discussions</strong></p>
<p>To continue to keep pace with Raindrop Development you&#8217;ll want to subscribe to the <a href="http://groups.google.com/group/raindrop">Raindrop Development mailing list</a> on Google Groups.  It&#8217;s necessary to at least watch the group if you&#8217;re developing along so you know when new code has landed and it&#8217;s time to reprocess your development raindrop.</p>
<p>If you&#8217;re not interested in the <a href="http://groups.google.com/group/raindrop/browse_thread/thread/d187d7896960e106#">development discussion</a> or latest code to <a href="http://groups.google.com/group/raindrop/browse_thread/thread/689a09c0d38b2f59#">index links from the new york times</a> then you&#8217;ll at least want to watch for Jame&#8217;s weekly design and developer emails to keep pace with what&#8217;s happening without following the <a href="http://hg.mozilla.org/labs/raindrop/">source code</a>.</p>
<p>For more in depth development discussion, check out Mark&#8217;s latest entry <strong><a href="http://mozillalabs.com/raindrop/2010/01/18/dynamic-dependencies-in-the-raindrop-data-model/">Dynamic dependencies in the raindrop data-model</a></strong></p>
<p><strong>2010</strong></p>
<p>We have several goals for the coming year, I&#8217;ll list them briefly, check back here on on the <a href="https://wiki.mozilla.org/Raindrop">Raindrop wiki</a> if you&#8217;re looking for more details and specific <a href="https://wiki.mozilla.org/Raindrop/Milestone_Planning">milestones</a> of when these will come out.</p>
<ol>
<li>Polish, clean up our existing experiences to get ready for more</li>
<li>Clarity, better conversation layout and attachment support</li>
<li>Find, a simple, new, and innovative way to provide search that actually works</li>
<li>Actions, quick and easy ways to process and handle your conversations</li>
<li>Relationships, real and unique communication relationship assistance</li>
</ol>
<p><strong>Can we say &#8220;One more thing&#8230;&#8221; ?</strong></p>
<p>A hosted preview version of Raindrop targeting availability for alpha testers by the end of Q2.</p>
<p>More details to follow as we build out a hosted version and of course invitations quickly there after.  Stay tuned.</p>
<p>And if you&#8217;re wondering how we keep up with all these different channels, we use Raindrop <img src='http://mozillalabs.com/raindrop/wp-includes/images/smilies/icon_smile.gif' alt=':)' class='wp-smiley' /> </p>
]]></content:encoded>
			<wfw:commentRss>http://mozillalabs.com/raindrop/2010/01/19/raindrop-looking-at-2010/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Dynamic dependencies in the raindrop data-model</title>
		<link>http://mozillalabs.com/raindrop/2010/01/18/dynamic-dependencies-in-the-raindrop-data-model/</link>
		<comments>http://mozillalabs.com/raindrop/2010/01/18/dynamic-dependencies-in-the-raindrop-data-model/#comments</comments>
		<pubDate>Tue, 19 Jan 2010 04:25:26 +0000</pubDate>
		<dc:creator>Mark Hammond</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://mozillalabs.com/raindrop/?p=167</guid>
		<description><![CDATA[A brief introduction to 'dynamic dependencies' in raindrop]]></description>
			<content:encoded><![CDATA[<p>We have recently landed some changes to the raindrop data-model designed to support &#8216;dynamic dependencies&#8217; in the data-model.  A &#8216;dynamic&#8217;  dependency is a dependency that exists due to the content of an item &#8211; for example, consider an extension which is processing a message, but needs to query attributes of the message &#8216;sender&#8217; to determine its output &#8211; this message has a dependency on that sender&#8217;s attribute; if the sender&#8217;s attribute changes, the extension needs to re-run over the message to pick up the new value.  As each message has a different sender, each message has different potential dependencies all determined at runtime based on the content of the message; we call these &#8216;dynamic&#8217; dependencies.</p>
<p>To support this requirement, we have added new meta-data to each raindrop schema &#8211; a field called <em>rd_deps</em>.  This item is an array of tuples, which each tuple holding an <em>rd_key</em> and a schema ID.  In our example above, the <em>rd_deps</em> on the message object would list the <em>rd_key</em> of the sender, and the schema ID which holds the attribute being examined.  There can be any number of <em>rd_deps</em> entries for an item.  As raindrop processes the work queue, it checks to see if the document being processed is listed in the <em>rd_deps</em> for any items and if so, all these items are re-processed as if they themselves have changed, thereby picking up the new values.</p>
<p>We currently use this dependency model in two places:</p>
<p><strong>Moving a message to &#8220;bulk&#8221;:</strong></p>
<p>Raindrop now supports the ability to nominate a particular sender of a message (eg, an email address) as being a &#8220;bulk sender&#8221;.  When a message from a bulk sender is received, it is always marked as a &#8220;bulk&#8221; message, regardless of how the message itself is addressed.  This means that if a particular sender is marked as being a bulk sender <em>after</em> messages have been classified, all messages from that sender must be re-processed so the message is correctly classified with the new attribute.  This is done by marking the document with this classification as depending on the identity sending the message.  Thus, whenever the attribute on an email address is changed, all messages with that dependency are re-run.  Note that this works even though the &#8220;bulk&#8221; attribute on the email address may not yet exist; it may be created in the future.</p>
<p><strong>Conversation summaries:</strong></p>
<p>A conversation summary is a schema which summarizes the messages in a conversation to apply a number of classifications to the conversation as a whole.  For example, while each message has an attribute to indicate whether the message is a &#8220;personal&#8221; message, we also need to classify the conversation itself as being personal or non-personal based on the attributes of the individual messages.  Therefore, the conversation summary schema lists as dependencies the schema holding the &#8220;personal&#8221; attribute of each message.  In other words, there will be as many dependencies on the conversation summary schema as there are messages in the conversation.  If the &#8216;personal&#8217; attribute on any message in the conversation changes, the conversation summary extension is re-run.</p>
<p>You may notice some potential &#8220;chaining&#8221; between these 2 examples; if the sender of an email is marked as a bulk sender, the classification for all messages sent by that user will be re-calculated.  This message re-calculation will then independently cause the conversation summary extension to be re-executed as one of its dependencies (the attribute on the message) changed.</p>
<p>Note that these dependencies must be explicitly nominated by the extension author &#8211; only they know what was used in the determination of the values.  Thus, the extension which classifies the message must explicitly list the key for the sender, while the conversation summary extension must explicitly list the keys of the messages in the conversation.  See the <em>rd.ext.core.convo-to-summary</em> and <em>rd.ext.core.msg-email-to-recip-target</em> extensions for examples.</p>
]]></content:encoded>
			<wfw:commentRss>http://mozillalabs.com/raindrop/2010/01/18/dynamic-dependencies-in-the-raindrop-data-model/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Raindrop End of Year Update 2009</title>
		<link>http://mozillalabs.com/raindrop/2009/12/22/raindrop-end-of-year-update-2009/</link>
		<comments>http://mozillalabs.com/raindrop/2009/12/22/raindrop-end-of-year-update-2009/#comments</comments>
		<pubDate>Tue, 22 Dec 2009 22:35:15 +0000</pubDate>
		<dc:creator>James Burke</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://mozillalabs.com/raindrop/?p=151</guid>
		<description><![CDATA[2009 has been an exciting year for us. We introduced Raindrop, then immediately started to improve it using open design and open source practices. Since launching, we started a server-side API, and converted the Inflow experiment to a third design iteration. The basic design is really firming up now. We have set the basic structure, [...]]]></description>
			<content:encoded><![CDATA[<p>2009 has been an exciting year for us. We <a href="http://mozillalabs.com/raindrop/2009/10/22/introducing-raindrop/">introduced Raindrop</a>, then immediately started to improve it using open design and open source practices.</p>
<p>Since launching, we <a href="http://mozillalabs.com/raindrop/2009/12/02/the-raindrop-api/">started a server-side API</a>, and converted the Inflow experiment to a third design iteration. The basic design is really firming up now. We have set the basic structure, and now we are crafting each component as part of that structure.</p>
<p>Here is how Inflow looks today. This is a picture of actual working code from the latest Raindrop source. It is a picture of a mailing list view:</p>
<p><a title="inflow2009-12-21 by JR Burke BC, on Flickr" href="http://www.flickr.com/photos/42810323@N08/4204183467/"><img src="http://farm3.static.flickr.com/2493/4204183467_7dfa45e157.jpg" alt="inflow2009-12-21" width="500" height="412" /></a></p>
<p>Note how the Summary area at the top of the second column is used to show information about the list and actions you can take related to the list. If the Unsubscribe button is pressed, then Raindrop will do all the email work to unsubscribe you, and if you keep this view open, the status will change to &#8220;unsubscribe pending&#8221; then eventually to &#8220;unsubscribed&#8221;.</p>
<p>This view highlights where we want to take the Summary area &#8212; showing specific information about the list of conversations you are viewing, and certain actions you can take related to the list of conversations or the context around them. Andy did a<a href="http://www.flickr.com/photos/43332657@N06/4177060185/sizes/o/in/pool-1279790@N22/"> person-focused conversation view mock-up</a> that also demonstrates this concept.</p>
<p>Since launching, we have focused on designing an &#8220;emotional sense of relief&#8221;. We have been using the code as a way to try out those designs.</p>
<p>As a result, making Raindrop easy to install or run has not been a priority. The  foundations were still being established, and we wanted an experience that was more useful than the 0.1 launch version before tackling ease of installation.</p>
<p>In 2009 we made great progress on the foundations and design. Expect to see an even more useful Raindrop in 2010, along with an easier way to try it out. Our <a href="https://wiki.mozilla.org/Raindrop/Milestone_Planning">Milestone Planning</a> page lists out the three major goals we are pursuing in 2010:</p>
<ul>
<li><strong>Emotional feeling of better organization</strong>: Make sure the experience gives the user a sense of relief via easy setup and automatic filtering/grouping done for the user.</li>
<li><strong>Dog Food</strong>: The inflow app should be usable by all the team members on a day-to-day basis.</li>
<li><strong>Cloud enabled</strong>: Raindrop is runnable in the cloud, with clear instructions on how to set it up to make it secure.</li>
</ul>
<p>The <a href="https://wiki.mozilla.org/Raindrop/Milestone_Planning">Milestone Planning page</a> lists out our milestones and current work, so check it out periodically to track our progress. If you see something on that list that really interests you, <a href="https://wiki.mozilla.org/Raindrop/Community">get involved in the community</a> and contribute!</p>
]]></content:encoded>
			<wfw:commentRss>http://mozillalabs.com/raindrop/2009/12/22/raindrop-end-of-year-update-2009/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Raindrop API</title>
		<link>http://mozillalabs.com/raindrop/2009/12/02/the-raindrop-api/</link>
		<comments>http://mozillalabs.com/raindrop/2009/12/02/the-raindrop-api/#comments</comments>
		<pubDate>Thu, 03 Dec 2009 03:39:27 +0000</pubDate>
		<dc:creator>Mark Hammond</dc:creator>
				<category><![CDATA[Uncategorized]]></category>
		<category><![CDATA[raindrop]]></category>

		<guid isPermaLink="false">http://mozillalabs.com/raindrop/?p=144</guid>
		<description><![CDATA[Introducing the Raindrop REST API.]]></description>
			<content:encoded><![CDATA[<p>When we announced raindrop, we had a CouchDB based data-model in place but no API for accessing the data &#8211; the front-end Javascript application was forced to issue CouchDB API requests (ie, query views and fetch documents by ID) directly.  This presented us with a few problems:</p>
<ul>
<li>The front-end code had to perform a fair bit of &#8216;data munging&#8217; &#8211; for example, given CouchDB has no concept of a &#8216;join&#8217;, multiple requests are often necessary to obtain the required data.</li>
<li>The front-end code became complicated &#8211; instead of focusing on the user-experience, the Javascript developer was forced to deal with low-level couch API calls and how documents and schemas relate to each other.</li>
<li>The front-end code was exposed to the storage details; if we wanted to change how documents are related or managed, alot of front-end code needed modification.</li>
<li>The front-end code was processor-intensive; as we move towards Raindrop on mobile platforms, the platform may not have the memory nor processing capabilities to be usable.</li>
</ul>
<p>We have made a move towards solving these issues by creating a Raindrop REST API layer.  This API layer can expose the data used by Raindrop in a format targeted at the specific requirements of the front-end application, while consuming the resources of a &#8216;server&#8217; instead of the client.  A few key features of the API implementation are outlined below:</p>
<h2>Extensible API</h2>
<p>As the API needs to meet the specific requirements of a front-end application, and as Raindrop is intended to be a platform instead of a single application, we have allowed for the application itself to simply define new API end-points.  APIs are implemented using the same basic mechanism as all extensions; a single couchdb document can be introduced, and the API end-points it implements are automatically made available.  This same technique can be used by both the application and its extensions &#8211; for example, the &#8216;inflow&#8217; application will provide a number of entry-points suitable for the core inflow application &#8211; but extension authors are free to install both back-end extensions, and new API end-points which target their extension.  For example, a complex raindrop extension could provide a back-end extension to capture additional meta-data about each message, a front-end extension to render things based on this extra meta-data, plus a new API end-point targeted specifically at the front-end extension&#8217;s requirements so that extension can push some of its work back to the server.</p>
<h2>Leveraging CouchDB</h2>
<p>CouchDB provides a powerful facility called &#8216;externals&#8217;.  These externals are defined in terms of operating-system processes (ie, a command-line couchdb executes), and when a request is made to such an external, CouchDB itself manages the spawning of this process and exchanging data with it.  A key benefit of this approach is that raindrop need not implement a &#8220;network facing&#8221; REST server to expose the API; the normal CouchDB front-end still handles all requests, so the external can focus on the job at hand rather than directly managing outside connections.</p>
<p>Currently CouchDB has a slight scaling issue with these externals (specifically, only one request at a time can be handled; subsequent requests are &#8220;queued&#8221;), it is expected CouchDB will grow to support &#8220;process pooling&#8221;, and ideally may even support such pooling across machines to offer serious scalability.</p>
<h2>Data suited to the application</h2>
<p>The current raindrop implementation defines a series of &#8216;inflow&#8217; related end-points, and these end-points are all focused on the requirements of this application.  For example, one API end-point can be accessed via <a href="http://127.0.0.1:5984/raindrop/_api/inflow/conversations/personal?limit=30">http://127.0.0.1:5984/raindrop/_api/inflow/conversations/personal?limit=30</a>.  This end-point is defined as returning the 30 most recent conversations which include messages sent directly to you.  Each conversation object has a list of messages, pre-sorted by time, and with all the schemas which make up each message unified into a single &#8220;container&#8221; object.  While the format of the result is quite different than the format of data in the database, it is very suitable for the inflow application&#8217;s requirements.</p>
<p>In a later post, we will explore the API in more detail, including a look at the request parameters and the objects returned.</p>
]]></content:encoded>
			<wfw:commentRss>http://mozillalabs.com/raindrop/2009/12/02/the-raindrop-api/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>The Skinny on Raindrop&#8217;s Mailing List Extensions</title>
		<link>http://mozillalabs.com/raindrop/2009/11/17/the-skinny-on-raindrops-mailing-list-extensions/</link>
		<comments>http://mozillalabs.com/raindrop/2009/11/17/the-skinny-on-raindrops-mailing-list-extensions/#comments</comments>
		<pubDate>Wed, 18 Nov 2009 01:28:10 +0000</pubDate>
		<dc:creator>mykmelez</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false">http://mozillalabs.com/raindrop/?p=137</guid>
		<description><![CDATA[Raindrop is an exploration of messaging innovation that strives to intelligently assist people in managing their flood of incoming messages. And mailing lists are a common source of messages you need to manage. So, with assistance from the Raindrop hackers, I wrote extensions that make it easier to deal with messages from mailing lists. Read [...]]]></description>
			<content:encoded><![CDATA[<p>Raindrop is an exploration of messaging innovation that strives to intelligently assist people in managing their flood of incoming messages. And mailing lists are a common source of messages you need to manage. So, with assistance from the Raindrop hackers, I wrote extensions that make it easier to deal with messages from mailing lists.</p>
<p><a href="http://www.melez.com/mykzilla/2009/11/skinny-on-raindrops-mailing-list.html">Read the original blog post for all the details.</a></p>
]]></content:encoded>
			<wfw:commentRss>http://mozillalabs.com/raindrop/2009/11/17/the-skinny-on-raindrops-mailing-list-extensions/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Thinking mobile</title>
		<link>http://mozillalabs.com/raindrop/2009/11/12/thinking-mobile/</link>
		<comments>http://mozillalabs.com/raindrop/2009/11/12/thinking-mobile/#comments</comments>
		<pubDate>Fri, 13 Nov 2009 00:38:43 +0000</pubDate>
		<dc:creator>achung</dc:creator>
				<category><![CDATA[Mobile]]></category>

		<guid isPermaLink="false">http://mozillalabs.com/raindrop/?p=132</guid>
		<description><![CDATA[A couple days ago I began creating the first iterations for the Raindrop mobile web app. I&#8217;ve posted an article on these first directions up on the Raindrop design page, as well as all of the images on the Raindrop flickr group. Check them out and let us know what you think!]]></description>
			<content:encoded><![CDATA[<p><img class="alignnone" src="http://blogs.mozillamessaging.com/raindropdesign/files/2009/11/rd_mobile1.png" alt="" width="481" height="181" /></p>
<p>A couple days ago I began creating the first iterations for the Raindrop mobile web app. I&#8217;ve posted an article on these first directions up on the <a href="http://blogs.mozillamessaging.com/raindropdesign/2009/11/10/thinking-mobile/" target="_blank">Raindrop design page</a>, as well as all of the images on the <a href="http://www.flickr.com/groups/raindropdesign" target="_blank">Raindrop flickr group</a>. Check them out and let us know what you think!</p>
]]></content:encoded>
			<wfw:commentRss>http://mozillalabs.com/raindrop/2009/11/12/thinking-mobile/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Introducing Raindrop</title>
		<link>http://mozillalabs.com/raindrop/2009/10/22/introducing-raindrop/</link>
		<comments>http://mozillalabs.com/raindrop/2009/10/22/introducing-raindrop/#comments</comments>
		<pubDate>Thu, 22 Oct 2009 17:00:42 +0000</pubDate>
		<dc:creator>The Raindrop Team</dc:creator>
				<category><![CDATA[Uncategorized]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Today we&#8217;re introducing Raindrop, an exploration in messaging innovation being led by the team responsible for Thunderbird, to explore new ways to use Open Web technologies to create useful, compelling messaging experiences. We hope to lead and spur the development of extensible applications that help users easily and enjoyably manage their conversations, notifications, and messages [...]]]></description>
			<content:encoded><![CDATA[<p>Today we&#8217;re introducing <a href="http://labs.mozilla.com/raindrop">Raindrop</a>, an exploration in messaging innovation being led by <a href="http://www.mozillamessaging.com">the team responsible for Thunderbird</a>, to explore new ways to use Open Web technologies to create useful, compelling messaging experiences.</p>
<p>We hope to lead and spur the development of extensible applications that help users easily and enjoyably manage their conversations, notifications, and messages across a variety of online services.  A central principle behind Raindrop is that messaging should be personal &#8212; we want Raindrop to be people-centric both in how we process messages, and in how we can help give people control over their personal data and experiences.</p>
<p>When a friend&#8217;s link from YouTube or flickr arrives, your messaging client should be able to show the video or photos near or as part of the message, rather than rudely kicking you over to a separate browser tab. Notifications from computers and mailing lists should be organized for you, not clutter your Inbox or require tedious manual filter setup. It should be easy to smoothly integrate new web services into your conversation viewer entirely using open web technologies.</p>
<h2>Raindrop 0.1: A Prototype</h2>
<p>To this end, we&#8217;ve started Raindrop, which we hope will become both a customizable product and a platform for a variety of innovative messaging applications on the Web.  We&#8217;ve also drafted a <a href="http://labs.mozilla.com/raindrop/guiding-principles/">set of   principles</a> that we believe will help ensure that it is as  useful, usable, and compelling as possible. Today, we&#8217;re releasing version 0.1, which is very much an iterating prototype, not yet ready for everyday use. Join us and help drive it there!</p>
<div>
<h2>Design</h2>
<p>What does a conversation on today&#8217;s web look like? Email used to house the bulk of the conversations that took place on the internet, but that&#8217;s no longer the case today. In today&#8217;s world people use a combination of Twitter, IM, Skype, Facebook, Google Docs,  Email, etc. to communicate. For many of us this means that we have to keep an eye on an ever-growing number of places we might get new messages. As a result, we never know that we&#8217;ve actually processed all the important messages, because our email has been overwhelmed by noise which obscures the real messages from real people.</p>
<p>Raindrop is an effort that starts by trying to understand today&#8217;s web of conversations, and aims to design an interface that helps people get a handle on their digital world.  At the same time, it creates a programming interface (API) that helps designers and developers extend our work and create new systems on top of that data. We aren&#8217;t trying to invent new protocols or build new messaging systems, rather focusing on building a product that lets users get a handle on the systems we already use.</p>
<p>The Raindrop team has already gone through 2 initial iterations which demonstrate the power of the platform we already have and the possibilities that lay ahead.</p>
<p>The following video discusses some of the fundamental ideas in today&#8217;s Raindrop.</p>
<p><object width="482" height="265"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=7197666&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=00D6C6&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="482" height="265" src="http://vimeo.com/moogaloop.swf?clip_id=7197666&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=00D6C6&amp;fullscreen=1"></embed></object></p>
<div class="wp-caption alignnone" style="width: 410px"><a href="http://www.flickr.com/photos/43332657@N06/3996189794/in/pool-raindropdesign"><img src="http://farm4.static.flickr.com/3488/3996189794_b0c19a69ab_d.jpg" alt="" width="400" height="307" /></a><p class="wp-caption-text">First iteration of the Raindrop user interface</p></div>
<div class="wp-caption alignnone" style="width: 510px"><a href="http://www.flickr.com/photos/43332657@N06/3996205806/in/pool-raindropdesign"><img class=" " src="http://farm3.static.flickr.com/2607/3996205806_0a0d318ca9_d.jpg" alt="Second iteration of the Raindrop design" width="500" height="311" /></a><p class="wp-caption-text">Second iteration of the Raindrop design</p></div>
<h2>Development Platform</h2>
<p>We intend to support front-end applications of various kinds (including mobile), but our flagship applications will be built entirely for any modern web browser that supports Open Web technologies.  Version 0.1 of our prototype embeds <a href="http://bespin.mozilla.com/">Bespin</a> to support a fast, iterative development style.  It also provides front-end widgets and back-end code that supports important high-level concepts such as people, conversations, and mailing lists, with more to come.  <a href="http://couchdb.apache.org/">CouchDB</a> and Python are key parts of our prototype <a href="https://wiki.mozilla.org/Raindrop/SoftwareArchitecture">architecture</a> as well.</p>
<p><object width="482" height="271"><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="http://vimeo.com/moogaloop.swf?clip_id=7155471&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=00D6C6&amp;fullscreen=1" /><embed type="application/x-shockwave-flash" width="482" height="271" src="http://vimeo.com/moogaloop.swf?clip_id=7155471&amp;server=vimeo.com&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=00D6C6&amp;fullscreen=1"></embed></object></p>
<h2>What&#8217;s Next</h2>
<p>We&#8217;re just getting started and expect Raindrop to evolve quickly.</p>
<p>One of our first priorities is to make downloadable installers or setup a hosted installation that anyone can use to try things out &#8212; making it easier for non-developers to check it out.</p>
<p>Because Raindrop is very much iterative and design-driven, another priority is to implement a default configuration that asks (but does not require!) each  user to contribute anonymized usage data back to the Mozilla design  community in a way that respects your <a href="https://testpilot.mozillalabs.com/privacy.html">privacy</a>.</p>
<p>We&#8217;re tracking other priorities in <a href="https://wiki.mozilla.org/Raindrop/Roadmap">our  evolving roadmap</a>.</p>
<h2>Get Involved</h2>
<p><a href="http://labs.mozilla.com">Mozilla Labs</a> is a virtual lab where people come together online to create, experiment and play with Web innovations for the public benefit. The Raindrop exploration is still in its infancy and just getting started.</p>
<p>All of the <a href="http://hg.mozilla.org/labs/raindrop">source code</a> underlying the Raindrop exploration &amp; prototype is being released as open source software under the the MPL.</p>
<p>There are many ways to join the team and get involved:</p>
<ul>
<li>Ask questions and contribute ideas at our <a href="http://getsatisfaction.com/mozilla_messaging/products/mozilla_raindrop">GetSatisfaction community</a>.</li>
<li>Upload a mock-up or design to the <a href="http://www.flickr.com/groups/raindropdesign/">Raindrop Design group</a> on Flickr.</li>
<li><a href="https://wiki.mozilla.org/Raindrop/Hacking">Pull the source code</a> and start hacking.</li>
<li>Join us in our <a href="http://chat.mozillamessaging.com/?room=raindrop">chat room</a>.</li>
</ul>
<p>We&#8217;ll also be using the <tt>#raindrop</tt> hashtag on twitter.  Our <a href="https://wiki.mozilla.org/Raindrop/Community">community  page</a> has more details about these and other ways to connect.</div>
<p><em><a href="http://blogs.mozillamessaging.com/raindropdesign/">&#8211; Andy Chung</a>, <a href="http://clarkbw.net/blog/">Bryan Clark</a>, <a href="http://weblogs.mozillazine.org/dmose/">Dan Mosedale</a>, <a href="http://ascher.ca/blog">David Ascher</a>, <a href="http://twitter.com/skippyhammond/">Mark Hammond</a>, and <a href="http://tagneto.blogspot.com/">James Burke</a> on behalf of the Raindrop development team</em></p>
]]></content:encoded>
			<wfw:commentRss>http://mozillalabs.com/raindrop/2009/10/22/introducing-raindrop/feed/</wfw:commentRss>
		<slash:comments>146</slash:comments>
		</item>
	</channel>
</rss>
