Warning: Most of the information on this page is outdated. Weave has been renamed Firefox Sync and is now part of Firefox 4. Many APIs documented here have evolved.
Weave Services: Developer Home
Weave Services are server-based, always-on services to enhance Firefox users' experience of the web. Our goal is to enable a consistent user experience of the web, whenever our users use the web, while protecting user privacy and choice.
Mozilla Labs has launched these services to Firefox users through the Weave addon. We encourage the developer community to write new applications that work with these services to bring better experiences to their users!
Our services are open-source and have open APIs. Developers are welcome to integrate their software with our services, and anyone is welcome to download the source code for the server software and run their own services if they wish.
- The Weave Identity service maintains an account for users that acts as an identifier for the other Weave services.
- The Weave Sync service maintains an indexed, encrypted data store that provides server storage for history, passwords, bookmarks, form history, preferences, and tabs exported from a web browser. Add-on developers can use a browser-level API to synchronize add-on data between browser instances. By using the Sync Server API, developers can write client software to access the sync data on any platform.
The Weave Sync service is not intended to be a mechanism to share your browser history with other services. To learn more about the plans to enable secure private sharing of personal data, read our Secure Data Sharing plans.
Services Developer FAQ
What sort of applications can I build with Weave Services?
As an add-on developer, you can use the Weave Identity and Sync services to create a consistent experience for your users. Read about how to synchronize add-on preferences here.
As a client software developer, you can use the Weave Identity and Sync services to access users' web experience data to create a consistent user experience between your software and Firefox. Read about how to access browser data in client software here.
As a web developer, you can get the source code for the pure HTML implementation of the Weave client and explore new ways of letting the user interact with their history and bookmarks. (Note that the current Weave services are not appropriate for use in server software: our goal is to make sure servers do not receive information unnecessarily)
What sort of applications shouldn't I build with these services?
Mozilla has made a strong effort to provide a user data storage system that protects our users' privacy. The current system does not store any decrypted data about the user on the server, besides the minimal set of data we need to log the user in and contact them if they lose their password.
Developers should not write applications that erode this privacy guarantee lightly. In particular, we believe that the users' password and passphrase, and the cryptographic resources accessed through those values, should never leave their personal computer or device. This means that you shouldn't write a server that stores these values and accesses the user's personal data from another server.
Also, the Weave Services web services are designed to support a relatively small amount of high-value user data. Users are restricted to a fairly small data quota. Applications should respect this restriction by using the Weave Services web services for relatively small amounts of data (in the neighborhood of tens of kilobytes).
What are the platform features you are planning to offer in the future?
Add-on and search engine sync is under development now.
We have a plan to support Secure Data Sharing that empowers both users and service developers. Your input is welcome!
We are enhancing the Weave Identity service, to be a full-featured OpenID provider and to support profile-exchange and service-discovery features.
Can I write commercial applications or closed-source software that uses these services?
- Design Pattern: How to Synchronize Add-on Preferences
- Design Pattern: How to Access Browser Data in Client Software
- Service API documentation
- Crypto architecture documentation
- Storage Format documentation
- Browser Object documentation
- Load Testing documentation
- Quota Algorithm
- To suggest a new service or a chance to an existing one, please visit the Weave Enhancement Proposal (WEP) page.
- Python: http://hg.mozilla.org/labs/weaveclient-python
- Java: http://code.google.com/p/jweave
- Web based data viewer
- iPhone data viewer
- WebOS data viewer
- Python based command line data viewer
- Java based command line data viewer and Android compatible library
- Weave for DolphinHD on Android
Release Notes for 2010-02-05
- Please do not start adding your own custom data types or storing large quantities of data on our servers. We don't yet have the capacity to handle that and will be monitoring our servers for unusual activity. If you have any doubts or questions as to what is appropriate, contact us on the mailing lists or #labs on irc.mozilla.org and we'll be happy to chat about the best approach.
- We strongly recommend doing your development with your own self-hosted server. Please do not point your prototype code at the production Weave servers, as you will find your API calls failing as we throttle or disable your access. '