LWN.net Logo

Development

Mozilla Weave 1.0 makes the browser experience portable

February 3, 2010

This article was contributed by Koen Vervloesem

After two years of development, Mozilla Labs has released Weave 1.0, a Firefox add-on that synchronizes browser data among desktops, laptops and smartphones that are running the open source web browser. This is a perfect solution for users who want to take their bookmarks, history, passwords, filled-in forms, and open tabs with them on multiple devices or for dual-boot environments.

The Weave project is aimed at increasing the user's control over their data and personal information. Users can tap into these possibilities by installing the Weave Sync add-on for Firefox on their desktop, laptop, or mobile phone. Weave Sync 1.0 requires Firefox 3.5 or later or the newly released Firefox Mobile 1.0, also known as Fennec, for Maemo.

By installing the Weave Sync add-on on different devices, users can have their Firefox experience synchronized on all their devices. For example, they can visit several web sites on their Windows desktop at work, go home, open Firefox on their Linux desktop and have everything waiting for them as they left it at work: browsing history, open tabs, bookmarks, the contents of the Awesome Bar, and so on. When they leave the house with their Nokia N900 device to go out for a drink, they have all this in their pocket.

Hands-on

After installing the Weave Sync add-on, Firefox shows the Sync preferences and asks the user to create a Mozilla Weave account (on the first device) or to sign in with a username and password that was previously created (on the other devices). When creating a new account, the user has to choose a username and a password, solve a CAPTCHA (which your author failed miserably at, as always), and then enter a secret passphrase, which must be at least 12 characters long and cannot match the account password.

[Weave Options]

The user then has different options to synchronize the browser's data. The recommended option is to merge the browser's data with data on the Weave server (from devices that already synced with Weave). The other two options are more destructive, but could come in handy in some situations: one replaces all Weave data on the browser with data on the Weave server, and the other replaces all data on devices using the same Weave account with the local data.

The release notes warn of problems with stale data. If a device that has been inactive for a while reconnects to the Weave Server, the server's current data could be overwritten by stale data from that device. As a result, an old password or an older collection of bookmarks might reappear on other devices even though they have been changed. This is one of the circumstances where the user should choose "Start Over" in the preferences and replace the local data of the stale device with data from the Weave server.

After Weave is set up, it shows an icon with the user's account name at the right side of the status bar. A notification will be shown there while the Weave Sync add-on is synchronizing with the Weave Server. In the menu that pops out when clicking on the icon the user has the possibility to disconnect from the server (to stop synchronizing), to trigger a synchronization manually, to read the (very verbose) activity log, or to change the add-on's preferences.

Weave has a preferences pane in the Firefox settings, where users can manage their account and select which types of data they want to synchronize. By default, Weave synchronizes bookmarks, passwords, preferences, history, and tabs, but they can be ticked off individually. The user can also disconnect here and click on "Start Over" to create another account or shift to different one. This makes it possible to use one Weave account for work and another one for personal browsing.

Weave synchronization doesn't happen continuously. The FAQ mentions that, for most users that are synchronizing multiple devices, the Weave Sync add-on connects to the server every hour. If Firefox is heavily used, synchronization happens more frequently. Of course, the user can always trigger synchronization manually. Bookmarks and history items are synchronized in chunks for better performance, but because of this, uploading the complete set could take hours. Favicons for the bookmarks are currently not synchronized to the server. [Weave Tabs] Weave synchronizes the 25 most recently-used tabs from other synchronized computers and does this in a non-intrusive way. That is, the local tabs are not changed to the synchronized tabs, but the tabs from other computers are shown in the menu "History -> Tabs From Other Computers".

Encryption

The Weave Sync add-on encrypts all user data before uploading it to Mozilla's servers and the secret passphrase the data are encrypted with is only known by the browser and not stored on the server. This means that the server cannot read the contents of the data. For example, the server can't read the bookmarks a user has synchronized, but it can tell how many bookmarks the user has. When the user sets up a new browser to synchronize with his Weave account, the secret passphrase has to be entered again, to decrypt the data stored on the Weave server and give the browser the ability to read it.

The low-level details of the encryption Weave uses can be found on the Mozilla wiki. In short, when a user first signs up for Weave, the Weave Sync add-on generates a random pair of public and private keys, 2048-bit RSA. Then, the PBKDF2 (Password Key Derivation Function) algorithm uses the user's passphrase to create a symmetric key, 256-bit AES. This symmetric key is used to encrypt the user's private key and the result is uploaded along with the public key to the Weave server.

Whenever a particular data engine like Bookmarks or History is to be synchronized, Weave Sync generates a random symmetric key for the engine. The key is then encrypted using the user's public key and uploaded to the Weave server. All entries in that engine, such as individual bookmarks, are encrypted with the engine's symmetric key. Because the Weave server only holds the encrypted symmetric key, only the user with the private key corresponding to the public key that was used to encrypt the symmetric key is able to retrieve the original symmetric key.

If this all sounds needlessly complex, it is because the Weave developers have a bigger purpose in the pipeline. With this cryptographic scheme in place, it should be possible for Weave users to share items securely. For example, a user that wants to share his bookmarks just has to encrypt the corresponding symmetric key with the public key of the person he wants it to share with. This is even granular to the level of an individual synchronizable item, such as a specific bookmark.

A private Weave server

Concerned users that don't feel comfortable with their data on Mozilla's servers (even if they are encrypted and the passphrase is never stored on the server) will be happy to hear that there is also a standalone server component, the Weave Server, that can be installed on their own private server. By default, the Weave Sync extension synchronizes with Mozilla's server, but users can point the client to their own server by selecting "Use a custom server" in the Weave preferences and point it to the URI of their own Weave server.

The Mozilla wiki has some documentation about the Server APIs and some instructions to set up the synchronization and user registration parts of the server. Because the Weave Server uses standard HTTP authentication, it should be set up over HTTPS to prevent the password from being sent in the clear. Moreover, the server should have Apache, PHP with PDO, UTF-8, and JSON support installed, and it should have MySQL available for storage.

Setting up a Weave server is not rocket science, but it's a fairly laborious task and can break in a lot of ways. It's also overkill for users that want to have synchronization for themselves or their household. Therefore, the developers have made available a Weave Minimal Server which they recommend over a full install. It requires just one alias line in the Apache configuration and sets up a SQLite database. Creating and deleting users is done manually on the server by a PHP script.

If even this is too difficult, Felix Hummel has written an almost foolproof installation script for the minimal Weave server. Your author tested this by setting up an Apache server on his home network, downloading Hummel's script and changing some variables there. After running the installation script, it shows the steps to configure the Weave client to work with this Weave server. One important thing to remember here is that the user first has to visit the URI of the private Weave server, to accept the SSL certificate, before entering the custom server URI in the Weave Sync preferences. After this, working with a private Weave server is exactly the same as working with Mozilla's Weave server, except that creating users doesn't work from the Weave Sync preferences but requires running a commandline script on the server.

Protect your passwords

But even when users install their own private Weave server, the mere user-friendliness of the synchronization of passwords with Weave poses a risk. As Michael Froomkin mentions on his blog:

Since I travel with my laptop, and there's always a chance it might get stolen, I don't want to have my password-protected data accessible to someone who gets a hold of the machine.

And this risk is real, Froomkin adds:

I often hibernate my machine instead of turning it off. What worries me is that this sync will become so seamless that I'll forget my passwords are accessible. Either that, or I'll have to always at least close the browser between sessions.

This is of course not a problem specific to Weave, but is a more general issue for hibernating laptops: the concerned user should encrypt the laptop's hard drive and turn it off before leaving it unattended. However, there is one tip that can reduce the risk substantially: use a master password in Firefox and shut down Firefox before hibernating or leaving the computer alone. After setting up a master password and restarting Firefox, the user will be asked for this master password the first time he goes to a page with a saved password. This ensures that no one else is logging onto the user's web site accounts without explicit authorization. Moreover, the master password only has to be entered once a session.

Mozilla Weave taps into the master password feature to protect the synchronization of the user's data: if Firefox is configured with a master password, Weave Sync stays disconnected until the user enters the master password for another site or chooses to connect to the Weave server manually (after which the master password is asked for). But one warning: the master password itself is not synced, so to protect the passwords on all computers that are synchronized with Weave, they each have to be protected by a master password.

More synchronization in the pipeline

The current incarnation of the Weave Sync add-on is just a first step in a bigger vision. In the long run, the Weave project aims to integrate all kinds of other services more closely with the browser. For example, the roadmap mentions that Weave Sync 1.2 should bring synchronization of installed add-ons and search engines. And some of the ideas for the more distant future are syncing Jetpacks and preferences.

The Weave wiki also publishes a Client API, which can be used to write 'sync engines' to synchronize new data types. This can be anything that the extension JavaScript code has access to through any Mozilla API. To add synchronization of a new data type, the programmer writes an engine class and some helper classes and registers them with Weave. One of the helper classes called CryptoWrapper handles all the encryption and decryption of the new data type. It's also possible to add a check-box to the Weave preferences screen to let the user turn the engine on and off.

Conclusion

Mozilla Weave is a very user-friendly way to synchronize the user's browser experience between different computers with Firefox. The API is set up in such a way that other browser add-on writers can add support for their own data types to Weave and the security architecture hints at a future that allows granular sharing of data between users. A lesser visible, but in your author's opinion nonetheless important, feature is that the Weave server code is also available and can be set up on a private web server. In the spirit of the open web, this is an example that should be followed by other services that handle user's private data.

Comments (7 posted)

System Applications

Database Software

MySQL Community Server 5.0.90 released

Version 5.0.90 of MySQL Community Server has been announced. "Please note that the active maintenance of 5.0 has ended,and this version is mostly provided because of the fix to security bug#50227 as described below."

Full Story (comments: none)

MySQL Community Server 5.1.43 released

Version 5.1.43 of MySQL Community Server has been announced. "MySQL 5.1.43 is recommended for use on production systems. For an overview of what's new in MySQL 5.1, please see http://dev.mysql.com/doc/refman/5.1/en/mysql-nutshell.html".

Full Story (comments: none)

PostgreSQL Weekly News

The January 31, 2010 edition of the PostgreSQL Weekly News is online with the latest PostgreSQL DBMS articles and resources.

Full Story (comments: none)

Embedded Systems

BusyBox 1.16.0 released

Version 1.16.0 of BusyBox, a collection of command line utilities for embedded systems, has been announced. This version adds several new applets and includes a long list of bug fixes.

Comments (none posted)

CE Linux Forum Newsletter

The January, 2010 edition of the CE Linux Forum Newsletter is out with the latest news from the embedded Linux software development community. Topics include: 2009 CELF Annual Report, CELF Soliciting Bids for 2010 Contract Work and 2010 Japan Technical Jamboree Schedule.

Full Story (comments: none)

Filesystem Utilities

Tahoe 1.6 released

Version 1.6 of the Tahoe cloud storage system has been announced. "Tahoe-LAFS v1.6.0 is the successor to v1.5.0, which was released August 1, 2009. This release includes major performance improvements, usability improvements, and one major new feature: deep-immutable directories (cryptographically unalterable permanent snapshots)."

Full Story (comments: none)

Telecom

Symbian source released

The Symbian Foundation has announced that the source code release for Symbian is now complete. "All 108 packages containing the source code of the Symbian platform can now be downloaded from Symbian's developer web site (tiny.symbian.org/open), under the terms of the Eclipse Public License and other open source licenses. Also available for download are the complete development kits for creating applications (the Symbian Developer Kit) and mobile devices (the Product Development Kit)." See developer.symbian.org for more information.

Comments (22 posted)

Web Site Development

Apache HTTP server 1.3.42 released

Version 1.3.42 of the apache server is out. It contains a security fix, but the real news is this: "Apache 1.3.42 is the final stable release of the Apache 1.3 family. We strongly recommend that users of all earlier versions, including 1.3 family releases, upgrade to to the current 2.2 version as soon as possible."

Full Story (comments: 7)

Miscellaneous

flashrom 0.9.1 is out

Version 0.9.1 of flashrom has been announced. "flashrom is a utility for reading, writing, erasing and verifying flash ROM chips on mainboards, SATA/network controller cards and external programmers. flashrom is often used to flash BIOS/EFI/coreboot/firmware images because it allows you to update your BIOS/EFI/coreboot/firmware without opening the computer and without any special boot procedures. After nine years of development and constant improvement, we have added support for every BIOS flash ROM technology present on x86 mainboards and every flash ROM chip we ever saw in the wild."

Full Story (comments: none)

Desktop Applications

Accessibility

Mozilla Sponsors GNOME Accessibility Efforts

The GNOME foundation has announced that Mozilla has granted the project $10,000 for 2010 to work on accessibility. "'The direct impact of the Mozilla funding has allowed GNOME to add Accessible Rich Internet Applications (ARIA) support to the Orca screen reader and other accessibility enhancements in GNOME,' said Willie Walker, lead of the GNOME Accessibility Team. 'All these helped make GNOME/Firefox a compelling free alternative to commercial products for the visually impaired. As a result, we're seeing users around the world using GNOME as their every day solution.'"

Comments (1 posted)

Audio Applications

Non DAW and Non Mixer 1.0.0 released

Version 1.0.0 of Non DAW and Non Mixer have been announced. "I'm pleased to announce the release of Non-DAW and Non-Mixer version 1.0.0. Some version numbers have been skipped, as a lot time as gone without an official release. Those who have followed Non-DAW via git will only notice a few changes, most of them pushed very recently. The chief advancement provided by this release is the long overdue inclusion of the Non-Mixer."

Full Story (comments: none)

Desktop Environments

GNOME 2.29.6 released

Version 2.29.6 of the GNOME desktop environment has been announced. "Here is the second GNOME release for year 2010 and sixth development release towards our 2.30 release that will happen in March; we are quickly getting there! Your mission, it never changes: Go download it. Go compile it. Go test it. And go hack on it, document it, translate it, fix it. And come to FOSDEM! There will be both a booth and a developer room for GNOME, and tons of hackers to hug."

Full Story (comments: none)

GNOME Software Announcements

The following new GNOME software has been announced this week: You can find more new GNOME software releases at gnomefiles.org.

Comments (2 posted)

KDE SC 4.4 RC3

Version 4.4 RC3 of the KDE software compilation is out. "Today KDE has issued another release candidate for the 4.4.0 release (planned 9th February)".

Full Story (comments: none)

KDE Software Announcements

The following new KDE software has been announced this week: You can find more new KDE software releases at kde-apps.org.

Comments (none posted)

Xorg Software Announcements

The following new Xorg software has been announced this week: More information can be found on the X.Org Foundation wiki.

Comments (none posted)

Mail Clients

Claws Mail 3.7.5 released

Version 3.7.5 of Claws Mail has been announced. "This is a bug-fix release, there is a claws-mail-extra-plugins 3.7.5 release but it is simply a repackaged claws-mail-extra-plugins 3.7.4 with no changes. Therefore, you can use the claws-mail-extra-plugins 3.7.4 release with this, but please remember that you will have to rebuild the plugins after installing this version."

Full Story (comments: none)

Sylpheed 3.0 beta 7 (development) released

Development version 3.0 beta 7 of the Sylpheed mail client has been announced, it includes new features and bug fixes.

Comments (none posted)

Music Applications

Aqualung 0.9 beta 11 released

Version 0.9 beta 11 of Aqualung has been announced. "It is my pleasure to announce the latest release of Aqualung, an advanced, cross-platform, gapless music player. This release adds some features and many bugfixes - all users are encouraged to upgrade."

Full Story (comments: none)

KMid2 0.2.0 released

Version 0.2.0 of KMid2 has been announced, it includes several new capabilities. "KMid2 is a MIDI/Karaoke player for KDE4. It runs in Linux, using the ALSA Sequencer. KMid2 plays to hardware MIDI devices or software synthesizers. It supports playlists, MIDI mapper, tempo (speed), volume and pitch (transpose) controls and configurable character encoding, font and color for lyrics."

Full Story (comments: none)

Lashstudio release 4 is out

Release 4 of Lashstudio has been announced. "This new release adds two more applications to the usual lash-centred suite, they are: dino sequencer and specimen sampler. Lashstudio is a quick and dirty, LASH centered, suite of applications. It is packed as a squashfs module for Puppy Linux."

Full Story (comments: none)

Linux Audio Plugin Update (Linux Journal)

Dave Phillips covers the state of Linux audio plugins in a Linux Journal article. "Audio processing and synthesis plugins are always a lively topic for musicians. Many contemporary music-makers rely completely upon their plugin collection for all their sound sources and processing routines, and it is not at all uncommon to discover that some of these composers have never learned to play a traditional instrument. However you feel about audio plugins they are a fact of life in modern music production. In the Win/Mac worlds the VST standard rules, thanks to the Steinberg Company's liberal policy regarding the use of their VST SDK (systems development kit), but the VST flag is not the only one waving over those worlds."

Comments (none posted)

Minicomputer 1.4 released

Version 1.4 of Minicomputer has been announced. "just released the version 1.4 of the software synthesizer Minicomputer for Linux. Its mainly a bugfix release: - fix: names of patches and multis were displayed wrong, only the last letters which are usually blanks - fix: change so that it can be now compiled without being in C99 mode - new: using alsaseq eventfilter to receive only events that are processed".

Full Story (comments: none)

Office Applications

Leo 4.7 b3 released

Version 4.7 b3 of Leo has been announced. "Leo 4.7 beta 3 fixes all known serious bugs in Leo. Leo is a text editor, data organizer, project manager and much more."

Full Story (comments: none)

Web Browsers

Mozilla releases first mobile Firefox browser (CNET)

CNET looks at Mozilla's release of Firefox 1.0 for Maemo (aka "Fennec"). "Firefox for the Maemo 5 platform has a few interesting conceits that set it apart from other mobile browsers, like Opera Mobile and Opera Mini. Mozilla is banking on the uniqueness of its claim to fame—third-party, customizable browser extensions—to help its browser win mobile market share. Add-ons, after all, helped make Firefox the top browser alternative to Internet Explorer in the desktop space."

Comments (8 posted)

Languages and Tools

Caml

Caml Weekly News

The February 2, 2010 edition of the Caml Weekly News is out with new articles about the Caml language.

Full Story (comments: none)

PHP

Facebook's "HipHop" PHP translator

Facebook has announced the release of its "HipHop" tool under the PHP license. "HipHop for PHP isn't technically a compiler itself. Rather it is a source code transformer. HipHop programmatically transforms your PHP source code into highly optimized C++ and then uses g++ to compile it. HipHop executes the source code in a semantically equivalent manner and sacrifices some rarely used features - such as eval() - in exchange for improved performance. HipHop includes a code transformer, a reimplementation of PHP's runtime system, and a rewrite of many common PHP Extensions to take advantage of these performance optimizations." These optimizations are said to double the speed of PHP code.

Comments (109 posted)

Python

acora 1.1 - 'fgrep' for Python

Version 1.1 of acora has been announced. "Acora is 'fgrep' for Python, a fast multi-keyword text search engine. Based on a set of keywords, it generates a search automaton (DFA) and runs it over string input, either unicode or bytes. It is based on the Aho-Corasick algorithm and an NFA-to-DFA powerset construction. Acora comes with both a pure Python implementation and a fast binary module written in Cython."

Full Story (comments: none)

blist 1.1.1 released

Version 1.1.1 of blist has been announced, some new capabilities have been added. "The blist is a drop-in replacement for the Python list the provides better performance when modifying large lists. Python's built-in list is a dynamically-sized array; to insert or removal an item from the beginning or middle of the list, it has to move most of the list in memory, i.e., O(n) operations. The blist uses a flexible, hybrid array/tree structure and only needs to move a small portion of items in memory, specifically using O(log n) operations."

Full Story (comments: none)

circuits 1.2.1 released

Version 1.2.1 of circuits has been announced. "This is a minor bug fix release. circuits is a Lightweight Event driven Framework for the Python Programming Language, with a strong Component Architecture. circuits also includes a lightweight, high performance and scalable HTTP/WSGI web server (with some similar features to CherryPy) as well as various I/O and Networking components."

Full Story (comments: none)

Cython 0.12.1 released

Version 0.12.1 of Cython has been announced, it includes new features and bug fixes. "Cython is a language that makes writing C extensions for the Python language as easy as Python itself. Cython is based on the well-known Pyrex, but supports more cutting edge functionality and optimizations."

Full Story (comments: none)

GMPY 1.11 released

Version 1.11 of GMPY has been announced. "GMPY is a wrapper for the MPIR or GMP multiple-precision arithmetic library. In addition to support for Python 3.x, there are several new features in this release..."

Full Story (comments: none)

The Python: Rag February issue

The February, 2010 edition of the Python:Rag is available. "The Python: Rag is a monthly newsletter covering any aspect of the Python programming language."

Comments (none posted)

Python-URL! - weekly Python news and links

The February 3, 2010 edition of the Python-URL! is online with a new collection of Python article links.

Full Story (comments: none)

Shells

Scripy released

The initial release of Scripy, a Pythonic shell-scripting solution, has been announced. "Whatever administrator without great knowledge about programming can built basic scripts fastly after of read the tutorial. Its sintaxis is as pseudo-code so it's very easy to code. The basic errors --as syntax errors and exceptions-- help to debug together to the error logging system implemented in logging module. In addition Python comes with an extensive standard library of useful modules which will help to speed up the development of scripts, and if you need some another module could be searched in the PyPi repository."

Full Story (comments: none)

Tcl/Tk

Tcl-URL! - weekly Tcl news and links

The January 29, 2010 edition of the Tcl-URL! is online with new Tcl/Tk articles and resources.

Full Story (comments: none)

Cross Compilers

Arduino 0018 released

Version 0018 of Arduino, an open-source development system for Atmel AVR microprocessors, is available. See the release notes for more information.

Comments (none posted)

Libraries

libfishsound 1.0.0 released

Version 1.0.0 of libfishsound has been announced. "libfishsound provides a simple programming interface for decoding and encoding audio data using Xiph.org codecs (FLAC, Speex and Vorbis)... This is a stable maintenance release including the result of security review and bug fixes included in the Mozilla Firefox 3.5 release."

Full Story (comments: none)

Test Suites

PyModel 0.8 released

Version 0.8 of PyModel has been announced. "PyModel is an open-source model-based testing framework in Python. Code, documents, and downloads are available".

Full Story (comments: none)

Version Control

Mercurial 1.4.3 released

Version 1.4.3 of the Mercurial source code management system has been announced. "This is a scheduled bugfix release. Full details here: http://mercurial.selenic.com/wiki/WhatsNew".

Full Story (comments: none)

Page editor: Forrest Cook
Next page: Announcements>>

Copyright © 2010, Eklektix, Inc.
Comments and public postings are copyrighted by their creators.
Linux is a registered trademark of Linus Torvalds