Labs/Weave/Developer: Difference between revisions

From MozillaWiki
< Labs‎ | Weave
Jump to navigation Jump to search
(Created page with '= Mozilla Services: Developer Home = Mozilla Services are server-based, always-on services to enhance Firefox users' experience of the web. Our goal is to enable a consistent us…')
 
m (fix link)
 
(31 intermediate revisions by 8 users not shown)
Line 1: Line 1:
= Mozilla Services: Developer Home =
'''Warning: Most of the information on this page is outdated. Weave has been renamed [[Services/Sync|Firefox Sync]] and is now part of Firefox 4. Many APIs documented here have evolved.'''


Mozilla 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.
= Weave Services: Developer Home =


Mozilla has launched these services to Firefox users through the [[http://mozillalabs.com/weave|Weave addon]].  
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.  


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.  
Mozilla Labs has launched these services to Firefox users through the [http://mozillalabs.com/weave 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.


= Available Services =
= Available Services =


* The Weave Identity service maintains an account for users that acts as an identifier for the other Mozilla services. [[Labs/Weave/Developer/Identity|Read more about Weave Identity]].
* 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. [[Labs/Weave/Developer/Sync|Read more about Weave Sync]].
* 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 [[Labs/Weave/Developer/SecureDataSharing|Secure Data Sharing]] plans.
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 [[Labs/Weave/Developer/SecureDataSharing|Secure Data Sharing]] plans.
Line 17: Line 19:
= Services Developer FAQ =
= Services Developer FAQ =


* What sort of applications can I build with Mozilla Services?
<b>What sort of applications can I build with Weave Services?</b>


As an add-on developer, you can use the Weave Identity and Sync services to create a consistent experience for your users. Read about Labs/Weave/Developer/HowToWriteSyncAddonPrefs|how to synchronize add-on preferences here.]]
As an add-on developer, you can use the Weave Identity and Sync services to create a consistent experience for your users. Read about [[Labs/Weave/Developer/HowToSynchronizeAddOnPrefs|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 [[Labs/Weave/Developer/HowToWriteClient|how to access browser data in client software 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 [[Labs/Weave/Developer/HowToWriteClient|how to access browser data in client software here]].


* What sort of applications shouldn't I build with these services?
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)
 
<b>What sort of applications shouldn't I build with these services?</b>


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.
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. This means that you shouldn't write a server that stores these values and accesses the user's personal data from another server.
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).


We have a plan to support [[Labs/Weave/Developer/SecureDataSharing|Secure Data Sharing] that empowers both users and service developers. We would welcome your input!
<b>What are the platform features you are planning to offer in the future?</b>


Also, the Mozilla 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 Mozilla Services web services for relatively small amounts of data (in the neighborhood of tens of kilobytes).
Add-on and search engine sync is under development now.


* Can I write commercial applications or closed-source software that uses these services?
We have a plan to support [[Labs/Weave/Developer/SecureDataSharing|Secure Data Sharing]] that empowers both users and service developers.  Your input is welcome!


Yes, you may. You must make certain that your terms of service and privacy policy are compatible with the [[http://mozillalabs.com/projects-2/weave10/tos/|Weave Terms of Service]] and [[http://mozillalabs.com/weave/weave-privacy-policy/|Weave Privacy Policy]]. Note that crawling or otherwise attempting to bulk-extract data from the services is explicitly foribdden, as is trading or reselling any of the Mozilla Services.  
We are enhancing the Weave Identity service, to be a full-featured OpenID provider and to support profile-exchange and service-discovery features.


= Documentation =
<b>Can I write commercial applications or closed-source software that uses these services?</b>


* Introduction to Weave Identity
Yes, you may. You must make certain that your terms of service and privacy policy are compatible with the [https://mozillalabs.com/weave/tos/ Weave Terms of Service] and [http://mozillalabs.com/weave/weave-privacy-policy/ Weave Privacy Policy]. Note that crawling or otherwise attempting to bulk-extract data from the services is explicitly forbidden, as is trading or reselling any of the Weave Services.  The terms of service also have some restrictions on trademarks, which mean that you'll need to name your service in a way that respects those restrictions.
* Introduction to Weave Sync
<!-- transclusion rocks, please don't add to this section! -->
* Design Pattern: How to Synchronize Add-on Preferences
{{:Labs/Weave/Includes/Documentation}}
* Design Pattern: How to Access Browser Data in Client Software
* Service API documentation
* Crypto architecture documentation
* Browser Object documentation
* To suggest a new service or a chance to an existing one, please visit the
[[Labs/Weave/WEPs|Weave Enhancement Proposal]] (WEP) page.


= Libraries =
= Libraries =


* The Javascript implementation is bundled into the Weave addon. A standalone version will be ready soon.
* Javascript: http://hg.mozilla.org/labs/weaveweb/file/tip/weave.js#l163
* A Python implementation is available as weave.py.
* Python: http://hg.mozilla.org/labs/weaveclient-python
* Java: http://code.google.com/p/jweave
 
<!-- transclusion rocks, please don't add to this section! -->
{{:Labs/Weave/Experimental_Clients}}


= Client Applications =
= Release Notes for 2010-02-05 =


* Web-based Weave data viewer: A complete Weave data viewer implemented in Javascript. No server required; all password-based operations and crypto are performed on the client.
* 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 [https://groups.google.com/mozilla-labs-weave-dev mailing lists] or #labs on irc.mozilla.org and we'll be happy to chat about the best approach.
* WebOS-based data viewer - by Les Orchard
* We '''strongly''' recommend doing your development with your own [http://tobyelliott.wordpress.com/2009/09/11/weave-minimal-server/ 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. '
* iPhone data viewer: The AwesomeBar, bookmarks, history, and tabs, on your iPhone. Opens pages in Safari.
* weave.py: Command-line application and library written in Python; search and display all sync data, with export to text, JSON, or XML.

Latest revision as of 17:09, 10 February 2011

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.

Available Services

  • 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?

Yes, you may. You must make certain that your terms of service and privacy policy are compatible with the Weave Terms of Service and Weave Privacy Policy. Note that crawling or otherwise attempting to bulk-extract data from the services is explicitly forbidden, as is trading or reselling any of the Weave Services. The terms of service also have some restrictions on trademarks, which mean that you'll need to name your service in a way that respects those restrictions.

Documentation


Libraries


Experimental Clients


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. '