Also, I'm making major progress on using openService files to create Operator actions. I should have something for people to see in the next week or so.
The discussion of how to brand products that use Mozilla technology has come up again. (1 2 3 4 5) This discussion has actually come up repeatedly over the years, with no conclusion. In the past I've given my opinion to Mozilla directly, but now I have a blog. So here's my opinion.
I believe there are at least two very distinct situations here:
- Shipping Mozilla technology (for instance, embedding Mozilla)
- Shipping a customized version of the Firefox browser
Unfortunately both these things have all been lumped into "powered by Mozilla," but customizing Firefox is not "powered by Mozilla," it is "powered by Firefox".
(Incidentally the term "powered by Firefox" has been used before to describe the Joga.com Companion extension which was "developed in partnership by Mozilla and Joga.com" and "chang[es] the browser's look and feel.")
But what would "powered by Firefox" mean in practice? I believe that it would mean a customized version of Firefox that adds to Firefox, but does not take away (more detail on that later). Here are some browsers that are "powered by Firefox."
- Firefox with Google Toolbar is Firefox with one extension, the Google Toolbar extension.
- Firefox eBay Edition is Firefox with one extension, the eBay Companion.
- Firefox Campus Edition is Firefox with three extensions, FoxyTunes, StumbleUpon and Zotero.
You'll notice that these are all produced by Google or Mozilla. So why doesn't Mozilla allow someone other than Google and themselves to ship customized versions of Firefox that are labeled as such? They certainly indicate that it is possible, but clearly it is not happening. I think I know why. It's because of Mozilla's Distribution Trademark Policy.
I understand that Mozilla Corporation owns the Firefox trademarks and as such, they have the right to do whatever they want with them and to actively work to protect the quality of a browser associated with those trademarks. I also understand that Mozilla Corporation is a business, and it is in their interest to partner with companies to produce customized versions of Firefox for revenue. But for them to dictate that the Mozilla Corporation is the only company that can customize Firefox and call it "Firefox" and use the Firefox logos is simply stifling competition.
There need to be better rules in place for other entities that want to customize the browser and distribute browsers with those customizations.
(And please don't try to invoke Firefox Community Edition here. That's not what we're talking about. You can't use logos and honestly calling something "My Company Browser - Firefox Community Edition" is a little cumbersome. Not to mention that fact that Mozilla provides no guidance on rebranding the installer or customizing just the name of the browser without rebuilding the whole thing from scratch.)
I propose that a new policy be created to supplement the Mozilla Community Edition Policy allowing for the creation of Firefox Brand Edition or Brand Browser - Powered by Firefox.
Here are some suggestions for how this would look:
- Underlying browser must be a shipping version of Firefox and must receive updates from Mozilla
- Default theme may be changed but user must have the ability to switch back to the original Firefox theme
- Extensions may be installed provided they do not remove any built in Firefox behavior or hide it from the user
- Extensions may not be hidden, but they may be marked uninstallable (note users can still disable them)
- Browser must be installed in a directory other than "Mozilla Firefox" (to allow for coexistence with an official Firefox)
- If the bookmarks are customized, the original bookmarks must be provided in some manner
- Search engines may not be removed, but they may be added and the default may be changed
As a side note, enterprises don't have to worry about this restrictions as long as the customized browser is distributed within their organization (which is one entity). Note you need to be careful about distributing to independent contractors, as technically they are not your employees and you might violate the Mozilla Corp. distribution policy.
I haven't blogged in a while, so I wanted to give everyone a quick update on som of my projects.
Version 0.7.1 of Firefox Activities is waiting patiently to be moved out of the AMO sandbox. Unfortunately my 0.7 version had a memory leak, so I missed my chance. Once Firefox 3.0b5 was released, the AMO queue got very long and 0.7.1 is lost somewhere in that queue.
That version matches the IE version of Activities feature for feature, except for the floating button that appears when you select text. Activities management is much better, and I was able to support both the uppercase and lower case version of the API (which I complained about earlier). In addition, the code has been substantially rewritten so that it doesn't affect the global namespace at all.
Microformats in Firefox 3
I thought my Microformats API for Firefox 3 had settled down, but Dmitry's Acid Test combined with Clint Talbert's great unit tests and a post on the microformats-discuss list uncovered a few more issues. Unfortunately time is short, so only the API change will make it. Hopefully we'll get the other parser fixes in a point release.
I've actually been spending quite a bit of time on Operator lately, working with Gustavo García to figure out how to move to an XML model for user scripts using Microsoft's OpenService Format as a basis. Our primary motivation for this is to allow the installation of user scripts on the fly instead of the current model where you have to download them. We've actually made quite a bit of progress in this space, and hope to have something out soon for testing. Note Operator will still support the old user scripts model, especially for scripts that need access to things like the file system.
Here's an example of what one of these new scripts might look like:
Find with MapQuest http://www.mapquest.com/favicon.ico http://www.mapquest.com
I guess I'll pipe in here since I'm one of the few (only?) non-Netscape then, non-Mozilla now employees that was involved ten years ago and is still involved today.
Ten years ago, I was on a a team of IBM and Netscape folks that was working to make sure the code we wrote when we ported Netscape Navigator to OS/2 made it into the first release of the Mozilla code. And it did. We worked with a lot of great people back then at Netscape and IBM, a few of whom are still on the project today.
It was an amazing time and even through the ups and downs, I've really enjoyed working with this community.
Thanks for the memories, and here's to ten more years.
UPDATE: jst ROCKS! - I was able to do exactly what he said and I now have both cases of APIs working in my extension.
OK, this is really starting to bother me because Activities are starting to show up and they don't work on Firefox because Microsoft screwed up the documentation.
The correct syntax for adding an Activity (per my conversation with Microsoft) is:
as documented here
as documented here. (I have no idea what the whitepaper says - I can't agree to the license agreement.
Note the lowercase a at the beginning. Even though both work on IE, USE THE LOWERCASE addService!
You would think people would have just cut and paste the code from the Activity Providers site and got it right.
Incidentally, if anyone knows how to create an API in Firefox that will work with either case, that would be great. Then I could work like Internet Explorer.
I've made version 0.6 of Firefox Activities available in the Add-ons Sandbox. If you like it, please review it so I can get it moved out of the Sandbox.
This version has a working preview for Firefox 3, as well as management of activities. It's very close to the Microsoft version. The only thing it is lacking at this point is the button that appears after you select text. I'm looking at that.
I also had to make Operator 0.9.1 available due to some translation issues and some interaction issues with Firebug.
People seem to think that because I implemented Microsoft Activities for Firefox that I am agreeing with Microsoft's solution. That conclusion is not correct. I simply implemented Activities because I thought it would be fun. But in the process of implementing it, I've learned a bit about it, and I'm going to provide some of that information here.
Clearly when I first saw Activities, I thought "man, that looks a lot like Operator." And that motivated me to take a closer look. But what's interesting is that I believe Operator and Microsoft Activities share a common ancestor: Live Clipboard.
Microsoft introduced Live Clipboard two years ago their PDC. The basic idea was to put a little orange scissors icon on web pages and allow people to copy and paste data from those web pages to other web pages and to applications. The data that was copied was a microformat, so it would maintain its identity. So for instance, you could copy an event from a web page and paste it into Windows Live Writer. It seemed like a good idea, but it had some problems:
- Scissors mean cut - they don't mean copy and they don't mean paste
- Finding places to paste the data was difficult
- No one wants to put an orange scissors icon on their web pages
But they did get one thing very right - the use of microformats to encapsulate the data.
Really, though, the problem is that people don't want to copy and paste data; they just want to be able to send that data to the place they want it to go. That's where the idea for Operator came from. The idea was to take the microformats and create actions to allows data on a web page (microformats, RDF or other) to be sent directly to a web service or native application. This is the idea of the web as a switchboard. (See Alex Faaborg's presentation) Incidentally, Live Clipboard was one of the first actions I created for Operator!
Activities looks like it is trying to solve the same problem. This quote from the readiness page is very telling:
Activities are contextual services to quickly access a service from any webpage. Users typically copy and paste from one webpage to another. Internet Explorer 8 Activities make this common pattern easier to do.
So Microsoft ended up coming to the same conclusion that we did: you need to be able to execute an action directly on a web page, not cut and paste. Unfortunately, in creating Activities they lost the one component of Live Clipboard that was useful - the structured data (microformats).
Activities acts on three contexts in a web page, a selection, a link or the document itself.
The selection context is the least useful of all the contexts. It takes selected text and sends it to a URL, similar to what search already does. It's essentially a search with preview. It does not attempt to interpret the text it sends or validate it.
The link and document contexts both act on a URL and they are definitely more useful. The reason they are more useful is because a link implicitly provides more data than selected text. You know it is a link, therefore you can do more interesting things with it like add it to del.icio.us or digg it.
The fact that links are more useful then selected text should tell us something; the more data we have about what we are acting on, the more choices we are able to give a user that they might actually want to do. If you really want to see this in action, check out BlueOrganizer from AdaptiveBlue. This shows you the power of knowing the type of data that the user has selected.
So by leaving microformats (or any semantic markup for that matter) out of Activities, a lot of the usefulness is gone. I much prefer using Operator to right click on a calendar item and add it to my Google calendar (assuming it is marked up with microformats).
Activities has caused me to realize one thing though - we really need to work together to define an XML syntax for defining actions. I'm hoping to work with the folks at Adaptive Blue and maybe Microsoft to make that happen.
And if you are looking for an update to my Activities extension, I'll have something soon. It's working much more like the Microsoft implementation and allows you to manage the activities better.
NOTE: There is a problem with the zh-TW, hr-HR, cs-CZ, pt-BR and ru-RU translations. I'll post a 0.9.1 when I get this worked out. Unfortunately this makes Operator 0.9 unusable in those languages because for some reason Babelzilla replaced the strings with blanks (not what I asked for).
I've talked about what is in this release before, but to repeat:
This version includes:
- Songbird support!
- Fixes to make sure things work in Firefox 3
- Menus no longer magically disappear on some pages
- hCards supports nested menus to access actions (more logical than trying to use adr for multiple addresses)
- adr is no longer on the menu by default (you can add it, but it has no default actions)
- Nested microformats are now handled per the spec as best we can figure it out
- Performance should be much better (and it has been in my experience)
- If a microformat is not visible, it doesn't appear in Operator (You can turn on a preference if you want to see all microformats)
- Actions for MapQuest and Amazon.com
- A new RDFa parser based on the new spec (pages will need to be updated)
Unfortunately, I don't have more detail on the RDFa situation. Elias sent me a new parser, and I included it. Please bug him to know what needs to change on pages. And I apologize to the existing RDFa users out there that I have broken.
Also, there were some performance problems with the release candidate that were definitely addressed. Hopefully things should be speedy.
I've been working with Cesar Oliveira from Seneca College to put together some initial attempts at group policy support. Here's his comment from bug 267888:
Since there doesn't seem to have been any communication from the assignee for
over a year, I am guessing that he is no longer working on it. With big help of
Michael Kaply (mkaply), we went into a different approach with this bug.
Instead of doing our own ADM template, we decided to do an implementation using
generic IE policies (gpedit.msc) that both browsers can share. For example,
setting the home page and enforcing full screen, and even disabling tabs! This
won't be the best solution, because Firefox and IE are different in many ways.
But it gives us something to start with, as IE is already in the corporate
world, we might as well try imitating some of their success 😉
We haven't implemented every policy (only slightly over a dozen). And it
definitely needs some polish to the functionality and the code. There are some
ways to get around certain policies (we don't do any preference locking), but
it is certainly better than not moving forward.
The code was designed to go into the mozilla\extensions directory. It works
with the latest version of Firefox3 (Firefox3.0b5pre), but not Firefox 2
(started using fuel). You can check out the source code via svn:
I am also making available an extension you can use. I haven't done much
testing with it, other than it installs and works with no tab browsing and
enforce full screen:
I also made a list of policies that we implement. Please feel free to look and
So now I am requesting community feedback. What is going to stop this from one
day getting into the tree (I assume everyone on the CC list wants something
like this in)? Other than using IE's policies, of course 😉
I think I got everything. If something is not working, feel free to email me.
This is really a first step, but I hope people will try it out.