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.
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 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
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)
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)
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
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)
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
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
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
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
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
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
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
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)
The following new GNOME software has been announced this week:
You can find more new GNOME software releases at
gnomefiles.org.
Comments (2 posted)
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)
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)
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
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)
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
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)
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)
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)
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)
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
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
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
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 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
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)
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)
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)
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)
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 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)
The February 3, 2010 edition of the Python-URL! is online with
a new collection of Python article links.
Full Story (comments: none)
Shells
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
The January 29, 2010 edition of the Tcl-URL! is online with new
Tcl/Tk articles and resources.
Full Story (comments: none)
Cross Compilers
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
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
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
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>>