{"id":619,"date":"2010-11-01T20:42:45","date_gmt":"2010-11-02T04:42:45","guid":{"rendered":"http:\/\/www.visophyte.org\/blog\/?p=619"},"modified":"2010-11-01T20:42:45","modified_gmt":"2010-11-02T04:42:45","slug":"thunderbuddy-weave-synchronized-thunderbird-contacts-on-android","status":"publish","type":"post","link":"https:\/\/www.visophyte.org\/blog\/2010\/11\/01\/thunderbuddy-weave-synchronized-thunderbird-contacts-on-android\/","title":{"rendered":"Thunderbuddy: Weave-synchronized Thunderbird contacts on Android"},"content":{"rendered":"<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-620\" title=\"thunderbuddy-on-hardware-half-size\" src=\"http:\/\/www.visophyte.org\/blog\/wp-content\/uploads\/2010\/11\/thunderbuddy-on-hardware-half-size.png\" alt=\"\" width=\"240\" height=\"400\" srcset=\"https:\/\/www.visophyte.org\/blog\/wp-content\/uploads\/2010\/11\/thunderbuddy-on-hardware-half-size.png 240w, https:\/\/www.visophyte.org\/blog\/wp-content\/uploads\/2010\/11\/thunderbuddy-on-hardware-half-size-180x300.png 180w\" sizes=\"auto, (max-width: 240px) 100vw, 240px\" \/><\/p>\n<p>I got my first modern Android phone at the end of last week and I figured it would be a good idea to get over the activation energy hump so it&#8217;s easy to do incremental mozilla hacking on it.\u00a0 Thanks to a lot of work by other people, this turned out to be pretty easy.\u00a0 It would have been even easier if the Android emulator ran at anything remotely close to real time or if my Samsung Galaxy S Vibrant (Bell Canada model) running 2.1 did not have a habit of locking up all the time.\u00a0 (And this is before my code touched it, mind you.\u00a0 I&#8217;m half-hoping my device is a lemon.\u00a0 If anyone knows how to tell a lemon from lockups-as-usual, please let me know.)<\/p>\n<p>The screenshot shows my Android device running the app.\u00a0 It&#8217;s a super trivial wmsy UI showing contacts from my address book pulled down from a weave server that were put there by Thunderbird.<\/p>\n<p>Anywho, props to:<\/p>\n<ul>\n<li><a href=\"http:\/\/www.phonegap.com\/\">Phonegap<\/a>, the HTML\/JS way to write mobile apps!\u00a0 Major awesome.<\/li>\n<li><a href=\"http:\/\/bitbucket.org\/philikon\/weaveclient-chromium\/\">weaveclient-chromium<\/a>, a slightly bitrotted pure JS weave client by <a href=\"http:\/\/philikon.de\/\">Philipp von Weitershausen \/ philikon<\/a> (now of the mozilla weave\/sync team) which built on the <a href=\"https:\/\/wiki.mozilla.org\/Services\/Sync\/Experimental_Clients\/Web\">weaveweb<\/a> project by Anant Narayanan and pure JS crypto work by the people mentioned in the <a href=\"http:\/\/bitbucket.org\/philikon\/weaveclient-chromium\/src\/tip\/README\">README<\/a>.<\/li>\n<li><a href=\"http:\/\/bitbucket.org\/mixedpuppy\/weaver\">weaver<\/a> and <a href=\"http:\/\/bitbucket.org\/mixedpuppy\/weave-ext\">weave-ext<\/a> by <a href=\"http:\/\/shane.caraveo.com\/\">Shane Caraveo<\/a>, which make weave happily run in Thunderbird and have it propagate the contents of the address book.<\/li>\n<li>The Mozilla Weave\/Firefox Sync team who made it easy and practical for software like Thunderbird to partake in the encrypted synchronization revolution.<\/li>\n<li><a href=\"http:\/\/requirejs.org\/\">RequireJS<\/a>, CommonJS loader to the stars.<\/li>\n<\/ul>\n<p>The relevant repos for those interested, are:<\/p>\n<ul>\n<li><a href=\"http:\/\/hg.mozilla.org\/users\/bugmail_asutherland.org\/weaveclient-js\/\">weaveclient-js<\/a>: This is a fork of weaveclient-chromium that ditches the chromium bits, makes things CommonJS\/Asynchronous Module Definition happy, and slightly factors out the encryption so that thunderbuddy can provide &#8216;native&#8217; accelerated encryption support on android.<\/li>\n<li><a href=\"http:\/\/hg.mozilla.org\/users\/bugmail_asutherland.org\/thunderbuddy\/\">thunderbuddy<\/a>: The phonegap android app repo proper.\u00a0 The only really notable thing at this point is the custom Java class that implements and exposes faster &#8216;native&#8217; encryption methods.\u00a0 (Thunderbuddy can also just be used as a webpage on any reasonably capable browser with good JS performance.)<\/li>\n<\/ul>\n<p>It&#8217;s worth noting that the goal is not actually to perform contact synchronization with Android.\u00a0 There are already a ton of ways to synchronize your Thunderbird contacts with gmail and from there your phone.\u00a0 The goal is to let other interesting data and meta-data propagate.\u00a0 I just picked contacts for this example because Shane already had the data propagating.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I got my first modern Android phone at the end of last week and I figured it would be a good idea to get over the activation energy hump so it&#8217;s easy to do incremental mozilla hacking on it.\u00a0 Thanks &hellip; <a href=\"https:\/\/www.visophyte.org\/blog\/2010\/11\/01\/thunderbuddy-weave-synchronized-thunderbird-contacts-on-android\/\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[6],"tags":[95,94,96,75],"class_list":["post-619","post","type-post","status-publish","format-standard","hentry","category-thunderbird","tag-android","tag-phonegap","tag-weave","tag-wmsy"],"_links":{"self":[{"href":"https:\/\/www.visophyte.org\/blog\/wp-json\/wp\/v2\/posts\/619","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.visophyte.org\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.visophyte.org\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.visophyte.org\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.visophyte.org\/blog\/wp-json\/wp\/v2\/comments?post=619"}],"version-history":[{"count":3,"href":"https:\/\/www.visophyte.org\/blog\/wp-json\/wp\/v2\/posts\/619\/revisions"}],"predecessor-version":[{"id":623,"href":"https:\/\/www.visophyte.org\/blog\/wp-json\/wp\/v2\/posts\/619\/revisions\/623"}],"wp:attachment":[{"href":"https:\/\/www.visophyte.org\/blog\/wp-json\/wp\/v2\/media?parent=619"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.visophyte.org\/blog\/wp-json\/wp\/v2\/categories?post=619"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.visophyte.org\/blog\/wp-json\/wp\/v2\/tags?post=619"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}