Why Services?

When I first started contributing to what would become Firefox, eight years ago today, it was crystal clear what the mission was: break IE’s monopoly and push the Internet back towards open standards.  That was a tough ask, especially after AOL spun out the Foundation and laid off most of the Netscape group.  But we carried on, and the world we live in now is very different, with open standards rapidly becoming the building blocks of choice, and multiple browsers (including IE!) pushing the envelope on HTML5 features, JS performance, and user experience.  To someone who was there eight years ago, this is amazing, and a validation of the way we attacked the problem.

Last year, after three and a half years as module owner, and almost seven years of living and breathing Firefox, I stepped down from that position in order to focus on what was then called Weave.  I didn’t write a lot about the decision at the time, mostly because I wanted to focus on building something worth talking about.  But I’m trying to write more, and something I’ve been talking about more lately is why Mozilla is stepping into the services space, so I figured it’d be a good excuse to dust off the old blog.

Admittedly, I was never much of a privacy nerd., even when I needed data recovery. While I wouldn’t give up my SIN for a toque (unlike someone I know…), I never really spent a ton of time thinking about which sites had data about me, or how they used it.  However, the evolution of Facebook, Google, and even Amazon has changed the game, and with it my thinking on the subject.  Much of what we do online today is tracked and used to build a profile of who you are, where you go, and who you know.  Beyond that, there’s all of the information we explicitly put online ourselves, on Facebook, Twitter, Yelp, etc.  Obviously there’s value there to both sides, the ad networks can market more effectively, and users get ads that are more relevant to their interests.  Win-win, right? Well, maybe.

In any exchange, value has to be measured against cost.  It's the same way I think about data recovery costs: if the data is valuable, you pay the price. youA friend deleted his Facebook account a year or so ago because he could not effectively measure either, or make an informed decision about whether the value was worth the cost.  It’s especially hard to reason about cost in this case, because it’s generally not concrete or measurable ahead of time.  But social media and web services can have real-world negative impacts on marriages (and divorces), careers, and even home security.  In the most extreme case, Shi Tao, a Chinese dissident, was imprisioned for 10 years when data from his email account was turned over to the authorities.

And, of course, that’s just what happens without things going wrong.  Sony is right now dealing with the fallout of a massive security breach, where personal data and credit card information for millions of users was obtained.  Facebook made the news last year when apps were leaking user IDs to advertisers, allowing ad networks to directly correlate what they know about you already with who you are on Facebook.  And there’s a long list of security and privacy concerns around more or less any major service you’ve ever used.  I think we can, and should, expect better.

What we’re trying to build with Mozilla Services is a set of products that aim to let you have your cake (privacy) and eat it too (tasty tasty features).  Firefox Sync is our first released product (part of Firefox 4 and up) and uses client side crypto to give users a great user experience without giving Mozilla anything other than encrypted blobs.  The encryption keys are never provided to or stored by Mozilla’s servers, so we simply cannot get to your data.  It’s a great feature, and I’m very excited to build more awesome, privacy-centric services.  It’s a hard problem, both technically and from a UX perspective, but I think it’s important.  That’s why I’m here, and that’s why I’m excited about where we’re going now.  Expect to see/hear more about the next steps soon!

Using Sync on the bleeding edge? Read this!

As of last Friday, users who are using trunk builds of Firefox (desktop and mobile) or 1.5 beta versions of the Firefox Sync add-on (on at least one device) may have been seeing various errors advising users to upgrade, even though there are no upgrades available, depending on what other clients they have installed.

How do I fix this?

New versions of Sync will all work together without any known issues, but if not all of your clients are on the development channels, you may be seeing these errors, depending on your client mix.  If you are using a client that is on one of the development channels, you will need to make sure all of your clients belong to the following list.

  • Firefox Sync 1.5b6 (all add-on users, even beta/nightly users, must upgrade to this version)
  • Firefox 4 beta 7 or higher (Desktop)
  • Firefox 4 beta 1 or higher (Mobile)
  • Firefox 4 nightly builds after 20100924 (Desktop & Mobile)
  • Firefox Home v1.0.2 or higher

How will most users be affected by this change?

Firefox Sync 1.5 and Firefox 4 b7 will be released at the same time, so users who update via normal channels will get the updated Sync versions automatically, around the same time, so we expect this will be a minimal disruption for those users.  Firefox Home 1.0.2, because it is a read-only client, supports both versions, so those users who are already on 1.0.2 should not need to take any action at this time.

Why is this happening?

As all synced data is encrypted first on the client and then uploaded to the server, Sync defines a format for how data is stored.  This is necessary so that older clients can recognize when they won’t be able to read new records.  Long-time users of Sync will remember that each and every version upgrade until v1.2 required all clients to be updated.  This was easier when Sync was a prototype add-on, but not appropriate for a shipping feature, so around six months ago we did our best to stabilize the storage format, and we haven’t changed compatibility since then.  We have since realized that there was one more minor, but incompatible, change required to the format before Firefox 4, which is the change we’ve just made.