Firefox Affiliate Branding

One of the conversations I had quite a bit at the Firefox Summit was around affiliate branding and my belief that Mozilla should be doing more to allow for custom versions of Firefox for a particular brand. Brand Thunder, a company I’m working with, is publishing a case study that backs up this belief. If you don’t know what Brand Thunder does, they produce custom themes and extensions for brands. So for instance, if you love the Washington Capitals, you can install their custom browser theme for Firefox.

What Brand Thunder has determined is that after the Capitals made the Firefox theme available, the number of visitors to the Capitals website using Firefox went up, and Firefox marketshare couldn’t account for all of it.

We don’t want to give away all the facts that are found in the case study, but one that we’re proud of is we doubled the penetration of Firefox usage on the Capitals web site. OK, we’ll give Firefox its due since it saw 40% growth over that period of time (growing from 16% to 19% over the time frame analyzed). Even giving Firefox credit for a 40% lift, that still leaves 60% that looks an awful lot like Brand Thunder contribution.

So where’s the affiliate branding connection? The problem is that in order to use the Washington Capitals theme, people had to go get Firefox and install it. This step probably eliminated quite a few people. How many more Firefox users would there be if they could have simply downloaded a version of Firefox with the Washington Capitals extension and theme already installed?

Enterprise Firefox Requirements

I was going through some old documents from the office and found the result of a brainstorming session around Enterprise Firefox requirements. I wanted to capture this list somewhere and figured this was the best place. Note that some of these might be done and some of these might not even be clear – this was just a moment in time. It will be interesting to see what other folks think of the list. It is in no particular order.

  • Security (keycards, etc.)
  • MSI Packaging
  • Active Directory Integration
  • Perfect unattended install
  • Allow entire Firefox directory to be specified
  • Roaming profiles
  • CCK for Thunderbird
  • Store preferences in registry?
  • Allow cache to be local with a remote profile
  • Better ActiveX sandbox for Firefox
  • Scalable deployment/management
    • IEAK
    • Active Directory
    • Registry Editing
  • Centralized Management
  • Better enterprise patch deployment tools (Tivoli)
  • WebDAV?
  • LDAP
  • Kiosk mode
  • Whitelisting

What do people think? What on this list is really important?

A Self Cleaning Inbox

Maybe someone has already thought of this, but it was new to me…

I was talking with Myk Melez at the Mozilla Summit and as he described for me how he manages his mail, I realized that one of the problems with mail systems today is that we treat them the same way we treat regular mail. When I receive snail mail, I go through the mail, quickly throw away the junk and then probably leave the rest in a stack on the counter where bills are forgotten or coupons expire. Basically I’m picking out the easy stuff to throw away and keeping the rest. This is how most people treat email as well. Junk mail is easy to get rid of, but a lot of stuff just sits in our inbox for no reason. What if we turned this process on its head?

Imagine an inbox where mail that you’ve read disappears from your inbox after say three days. It could be archived or deleted. The only way to keep it from disappearing is to flag it or file it after you read it. You would be forced to make a decision on mail when you receive it (or within three days) and mail you don’t really care about would simply disappear. And your inbox would only contain very new stuff or stuff you deliberately flagged.

This would probably be a fairly straightforward arrangement to setup in gmail, so I think I am going to try it. Once I empty my inbox of course :).

Time for Something Different (Well Not That Different)

The month of June has some particular milestones in my IBM career. June 29, 1989 was my first day as a co-op. June 7, 1993 was my first day as a full-time employee. And just about every promotion I’ve ever received was in June.

And now it’s time for another one.

Effective June 30, I will be taking a leave of absence from IBM to work on Firefox.

I know what you’re thinking. Isn’t that what I do at IBM? Actually, there is very little Firefox work left in IBM, and most of that is me. What I have determined about myself is that I really enjoying working in the Mozilla community and I want to figure out if there is enough interesting work out there in the Firefox space to keep myself gainfully employed.

So my plan is (with IBM’s approval) to offer consulting/contracting services around Firefox during my leave of absence.

So if you need help with enterprise deployment/customization of Firefox or developing custom Firefox extensions, you can drop me a line – consulting at

And for all you OS/2 users, don’t freak out; the OS/2 builds will continue. I’ll probably setup a tip jar for the extra bandwidth I’ll need at home.

Semantic Web Austin

GeekAustin hosted the Semantic Web Austin launch party last night. I was a speaker and got a chance to talk about Operator, Activities and the Microformats support in Firefox 3. I also took the opportunity to hand out some Firefox stickers. All in all, a very fun event, and a nice chance to meet Austin internet folks. If you want to learn more, Austin 3.0 has some interviews and other info about the event.

Customizing Firefox with the CCK Wizard

New version with fix for search engines not working.

FYI, I’m making a beta of the CCK Wizard available today for Firefox 3.

If you are deploying Firefox in your enterprise, educational institution, or even your household, you’ll want to check out the CCK Wizard (info at that link is a little dated right now).The CCK Wizard is an implementation of the old Netscape CCK that allows you to customize various aspects of Firefox and then contain all of those customizations in a single Firefox extension. Here are some of the things you can do

  • Add an identifier to the user agent string
  • Change the default home page and startup override home page
  • Change the title bar text
  • Change the animated logo
  • Add a web page and tooltip used for the animated logo
  • Add a help menu item that links to a web page
  • Provide sites for which popups and XPInstalls are allowed by default
  • Preinstall browser plug-ins
  • Preinstall search engines
  • Change the default search engine
  • Add folders, bookmarks and live bookmarks to the personal toolbar
  • Add folders, bookmarks and live bookmarks to the bookmarks folder
  • Set default preferences
  • Lock preferences
  • Add registry keys (Windows only)
  • Add certificates (See NOTE below)
  • Set default proxy configurations
  • Package other XPIs with your distribution
  • Disable about:config

Note that if you customize Firefox using the CCK Wizard, there are certain restrictions on redistribution outside of your organization, especially if you add certificates. Read the Mozilla Foundation Trademark policies for more info, or contact

And please let me know if you find any bugs.

The Browser With No Name

(Post updated to remove money reference. I was simply referring to the fact that Mozilla and Firefox have equity in their brand and most brands require royalty payments with the use of their branding.

Also, to be clear, this post is 100% my opinion, not IBM’s or any other company.)

I’ve been thinking more about shipping custom versions of Firefox and I think I finally figured out what bothers me so much about the situation:

If you take away the Firefox name, which Mozilla requires you to do, you are left with no distinguishable identity at all.

And please don’t tell me that “Mozilla” is the identity. Mozilla describes lots of different technology, as well as a foundation and a company. It’s not the core identity of the Firefox browser.

When I look at typical open source projects, I see their “free” identity and their “branded” identity. For instance Apache is the “free” identity, and some of the “branded” identities are Oracle Database or the IBM WebSphere application server. There’s a core Linux/GNU “free” identity and “branded” identities like Red Hat Linux and Ubuntu Linux. StarOffice and Lotus Symphony are “branded” identities for the “free” OpenOffice technology. I could name many more, but in all of these cases, the “branded” identities do not usually hide (and they are certainly not required to hide) the “free” identity that they are based on.

But what about Firefox? Firefox only has a “branded” identity. It does not have a “free” identity. If you take away the Firefox name (I’m not talking about logos here), you are left with software that has no name. Right now it is called Minefield, and in the past it has been Deer Park or Bon Echo, but it doesn’t have a name. You can’t even say it’s based on Mozilla Firefox, even if it is. (I’m not convinced this is enforceable, but it is what Mozilla says you have to do.)

We can better explain this with an example. Let’s say a company like Disney wanted to create version of Firefox that included a Disney extension and had a some custom theming for Disney, as well as some Disney bookmarks. They approach Mozilla first, but Mozilla says “no.” Disney now has two choices. They can either attempt to create “Firefox Community Edition, Disney version” or ship something from Disney called “the Disney Browser.” This browser would be Firefox modified with an extension, some theming and some rebranding, but all Mozilla and Firefox names would have to be removed, and they could not tell anyone that it is based on Firefox.

Now as far as the community edition idea goes, I don’t think this is what Mozilla intended and I believe they would complain. As a matter of fact, I bet you are going to see the whole community edition idea go away because it allows for the misuse of the Firefox trademark. In addition, the idea is so ambiguous, it’s kind of worthless anyway (Change certain preference settings? Where is this documented?).

“The Disney Browser” is a more likely scenario, and I think you will see that in the future, but honestly it’s just kind of sad. Why can’t someone say that the browser they ship is Firefox? Especially if the code inside is 100% Firefox with some theming/branding or extensions?

Mozilla really needs to fix this. The browser IS Firefox. The source code IS Firefox. They simply ship a branded version called “Mozilla Firefox” that uses their logos, their theme and their extensions. Other people should be free to use the name Firefox without Mozilla and without the Firefox logos, since Firefox is the ONLY term that identifies the browser. It’s not Mozilla. It’s Firefox. This is how other open source projects operate, and this is how Mozilla should operate. Unless they can come up with a good name that describes that browser without any branding.

Updating OpenService for Microformats

This post details the ongoing work that Gustavo Garcia and I have been doing at Our stated goal is to figure out the best way to extend Microsoft’s OpenService specification to allow for microformat support (and possibly other functionality). We definitely want to have more discussion on this, so if you are interested, please participate. Note that Microsoft has suggested that any changes we make be in a new name space to allow for good coexistence with IE. We’re investigating that.

This post assumes you have a basic understanding of what OpenService looks like, so you might want to read up on that first. So without further ado, here are our suggested changes to OpenService.

Support for more contexts

Currently IE supports three contexts: selection, link and document. A given action is applied based on the context where the user right clicks. For microformats, we would add support for microformat names as a possible context. We would also allow those microformat names to be followed by an item in the microformat so that actions could be shown based on the availability of data in the microformat. For example,

would indicate that the action would be available for any adr.

would indicate that the action would be available for any adr that also had a postal-code.

Domain scoping of actions

Currently a given action is available on every website. There are some actions that should only be displayed for a given site. For instance, cork’ uses tags to reference their wines, but they really only make sense in the context of their site. To solve this, we would introduce a new attribute to activityAction called domain that would specify which website should have the given action available.

More substitution variables

The substitution variables for the actions would have to be enhanced to allow for the substitution of values in the microformat. Here’s an example:


This action queries the country-name property directly from the adr microformat and substitutes it. If the referenced property is a plural property, all the items are put in one string separated by a space and then substituted.

Scripting Support

Unfortunately, for complex web services, just substituting variables in URLs and parameters is not enough. So to further enhance the functionality of the OpenServices XML files, we propose that scripting be allowed. These scripts would be evaluated in a sandbox with the contents of the microformat available as local variables (possibly prepended with the microformat name) with some additional helper functions added (XMLHTTPRequest, writing to a temporary directory). A simple example of where this is needed is Google Calendar. Google Calendar requires that if there is a dtstart, there must be a dtend. There’s really no way to convey this with simple string substitution. For some web services, some pretty complex JavaScript is needed. Here’s an example of how JavaScript might work.


Here we were able to use JavaScript to create some basic logic around the date and then the correct value is returned.

This idea is probably the most controversial, but I don’t see a better way to get the richness that is needed to interact with certain web services. If anyone has better ideas, I’d love to hear them.

Action Discovery on Web Pages

We’d also like to see the ability for a web page to advertise that they have a service available, similar to how OpenSearch works. For OpenService, it might look something like this:

We’re still working out how this would be discoverable to the user, but we think it should be in the specification.

On a completely unrelated note, if you are the praying kind, please keep the Chapman family in your prayers. They lost their 5 year old daughter yesterday in a tragic accident. My cousin Melissa works for them as their nanny, so she needs your prayers as well. She’s taking this pretty hard. Thanks.