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 kaply.com.

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 licensing@mozilla.org.

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 http://microformats.org/wiki/OpenService_Extensions. 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'd.com 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.

Where are the microformats in Firefox 3?

With Firefox 3 RC1 available, I'm getting asked "Where are the microformats?" The answer is that there is a microformats API in Firefox 3, but unfortunately there is nothing available in the UI for this release. There are a couple reasons why this is the case, so I thought I would take some time to explain.

The primary reason that microformats aren't exposed in the Firefox UI is that there was never any agreement as to how to expose them. Originally the idea was to have a "rich media sidebar," but after implementing that in Operator, it was realized that it wouldn't have much content in it most of the time. Plus sidebars take up a lot of real estate. Having a toolbar in Firefox didn't make a lot of sense since, again, there would be a lot of screen real estate needed for something that the user wouldn't use very much (yet). I liked the idea of an icon on the URL bar similar to how RSS feeds work, but the consensus was that noone wanted the awesome bar to become cluttered with small icons on the right. The other option was to make them available only when you right click on microformats, but this wasn't very discoverable and the technical aspects of making it discoverable (icons on hover, etc.) were a little daunting. There was one really good idea related to adding a kind of bar on the left side that showed where the microformats were, but that idea really needed to be prototyped. So in the end, we were left with nothing in the UI.

There was also a second problem that wasn't discussed as much, but was still a big issue - how to plug in new services. Currently Operator uses the concept of user scripts to allow the installation of additional microformats and connections to web services. Unfortunately, the method I chose (raw JavaScript files) introduces security and other issues. It works for Operator, but would not be a good method to put into the core browser.

So where does that leave things? We still haven't solved the UI problem, but Microsoft has come up with a solution for the services problem that I am currently in the process of integrating into Operator. It's called OpenService. I mentioned a few posts ago that I'm extending the specification a little bit so we can define Operator web services connections using XML. Tomorrow, I'll go into some detail as to what I'm doing. Hopefully I can get some good feedback and work with Microsoft to standardize my additions to the specification.