The Inside Track on Firefox Development.

« Updating your Extensions and Themes for Firefox 1.0 Preview Release and Thunderbird 0.8 | Main | New Mozilla Website »

August 29, 2004

Buh-bye VersionCheck

Vlad and I talked a bit last night and we think (now) it is a better idea to attempt to unify the Extension Update systems into a single RDF-based system (i.e. ditch the web service).

Here's why:


  • the web service is tricky to set up and administer
  • the web service involves huge amounts of data per request going back and forward to the server - wrapping function calls and their results in globs of XML - using the RDF format involves loading a remote datasource with the function parameters encoded into a GET query string which is quite compact. Data sent back is in the RDF/XML format which we have solid, well tested parsers for (used for all manner of other things over the past few years, such as the local store, mimetypes.rdf, etc)
  • the web services implementation currently does not seem to be able to load WSDL proxies over HTTPS
  • it is very difficult to test update of extensions that use the VersionCheck service, it is relatively much easier to create test cases for extensions that use the custom RDF format
  • the code that uses the web service has not been as tested at all in a production enviroment. Extension authors have individually been using the custom RDF update format and associated parser since 0.9.

Here's why now:


  • If we ship a release that requires VersionCheck, we will (for the period of time that we want to support 0.10) be obliged to keep Tomcat running reliably. It is thus very desirable for us to convert to using this other method before we become locked into doing so. The GET query string data blob will be versioned so that future updates can be discerned.

Work required:


  • remove the Web Services code (ben)
  • make all extension update checks run through the code path currently used for custom RDF update files (better tested than VersionCheck) (ben)
  • make a php script on UMO that generates a RDF file based on versioned query parameters using the umo db (vlad)

I plan on attacking the client side of this this weekend and will roll up my PR+ blocking EM bugs into it. Ultimately I believe this will provide a more reliable environment for extension updating, and will ultimately allow us to ship a quality 0.10 earlier and have a more maintainable server environment moving forward.

Posted by ben at August 29, 2004 3:02 PM