1Password version 2.5.8 was updated today to include support for the Firefox 3 beta! With over 27 months of development and almost two million lines of code changes made by the Mozilla team, we were really nervous about how much effort would be required to support this new version of Firefox. The 1Password extension is a lot more complex than most extensions and so we were anticipating a lot of pain, but we were pleasantly surprised.
Changes to Support Firefox 3
Thankfully the Mozilla team did a great job of keeping almost everything backwards compatible and the front end of the 1Password extension worked "out of the box" with no changes required. The supporting backend of 1Password, the xpcom component, refused to load, preventing any our the functions to work. Firefox log several errors when trying to load it, but Google searches turned up nothing.
It was unclear why this problem was happening, and Chad and I spend a week chasing various Red Herrings trying to nail the issue down. We thought maybe compiling against Gecko 1.9 was mandatory in Firefox 3. Nope, that was not it. We then thought maybe the compiler settings in Firefox 3 were different, thereby causing a binary incompatibility with our extension. Nope, that was not it either.
It turns out the only thing required to support Firefox 3 was to simply stop linking against libxpcom_core.dylib and instead use libxpcomglue_s.a, plus a little work to make libxpcomglue_s.a a Universal library. That was it! Now 1Password is working in Firefox 3!
In retrospect it would have been much quicker to start with a simple "Hello World" xpcom project and get that working first to verify the base assumptions. Once Chad did this the solution was found quickly.
Upgrading to 1Password 2.5.8
The 1Password 2.5.8 release is still in Beta, so to get to the latest 2.5.8 release you must first install 1Password, and then enable Beta's in the 1Password > Preferences > Update window.
Once Betas are enabled, select File > Check For Updates and 1Password will automatically download and install the latest Beta.