Operator 0.9 is available

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).

Operator 0.9 is available. This was mainly done so I can get my t-shirt, although it has been overdue.

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.

Enjoy!

Microformats and Web Services Redux

Earlier I made a comment about how I wished there was a better way to connect microformats to web services. I'd like to elaborate on that comment and see if I could get some discussion going around the subject. First let me summarize the problem. (Note that throughout this post I will use the term microformat, but all these problems hold true for RDF as well)

The problem is that there is no standard way (that I've found) to interact with various web services that deal with the types of data involved in microformats. Note that in some cases there are standard data interchange formats (like vCard and iCal), but the web services do not always accept these formats.

The way Operator solves this problem through the use of user scripts that implement actions. What these actions do is take the microformat and use the data to construct a URL (or even a POST request) that connects to the appropriate web service. For instance, if I want to add my hCard to to the Yahoo! address book, the URL might look something like this:

http://address.yahoo.com/?ln=Kaply&fn=Michael&co=IBM
&e=nospam@example.com&pu=http://www.kaply.com/weblog/&A=C

In this case, the user script has taken apart the microformat and then constructed a URL that emulates adding a Yahoo! Contact. In doing this, lots of code was involved because the Yahoo! Add Contact does not map completely to the data that was in the microformat (you can see that code in yahoo.js). (Folks might ask why I'm not using Yahoo! APIs - that's mainly because I don't want to mess with authentication keys and stuff - this is a web interface, so I'd rather just redirect to websites)

The problem with this code is that in order to express the mapping from a microformat to Yahoo!, I require a large chunk of code.

For Firefox 3, I want to provide some UI that connects microformat to web services, but I want that to be extendable by third parties. I want it to be similar to how feed readers work in Firefox 2 (see registerContentHandler). While my action architecture works in the context of Operator, I do not believe that it is robust enough to be a part of Firefox 3. So what I'm trying to find is some better way to describe the mapping between microformats and web services or possibly to create a new standard around interacting with these web services. It might be as simple as just encouraging all of the vendors to accept the upload of vCard and iCal. I don't know. Here are some thoughts I (and others) have had.

Encourage people to support the submission of vCard and iCal in a standard way

The obvious thing to do here would be for services to allow the submission of vCards and iCals directly to their web services as a way to provide information to the services. 30 Boxes currently allows this, but unfortunately the iCal must be physically located on a web site, so I can't send it to them. Other services that accept vCards use a POST mechanism that is difficult to emulate because it relies on lots of private data during the POST submission.

Server Data Broker

Setup up a web service that would essentially act as a data broker. Data could be given to this server in a standard way, and then the server would turn that data into a URL that could be used to redirect to the appropriate web service. In this way, the logic to turn the microformat data into a URL would be done on the server. The client would give some common data source to the server, telling the service where it wanted the data to be sent and the server would simply send the client a redirect URL.

OpenAction similar to OpenSearch

S. Sriram had an interesting thought in reply to my previous post. He thought about using something similar to OpenSearch where web services can have an XML description file that describes how to interact with their services and then we could use that file to determine how to map the microformat data to the web service.

Those are just a few ideas we've come up with. I'd love to hear any other ideas you might have...

Operator 0.8 is available

Operator 0.8 is now available from addons.mozilla.org.

One of the first things you'll notice is that I changed the default view to be data formats instead of actions. I did this because I found this is what most people did anyway. If you disagree, you can go to Operator Options and switch back to options.
You'll also notice that if you did any customizations, you lost them. Unfortunately I did some preference rewriting this time around and the migration was getting to be painful. It shouldn't happen again.

Some of the new features in Operator 0.8 include:

  • RDFa support (courtesy of Elias Torres)
  • eRDF support (courtesy of Keith Alexander)
  • New user interface elements, including an icon on the location bar as well as a sidebar
  • New preferences including auto-hiding the toolbar
  • The address microformats has been split out so that actions can be more granular
  • Actions can now be associated with multiple types of data, so the Google Maps action, for instance, works with Addresses and Locations
  • Much better support for frames and iframes
  • Support for non HTML documents
  • When debugging microformats, Operator connects to Brian Suda's X2V behind the scenes so you can compare results
  • Lots of bug fixes

I had to break user script compatibility with this release. Most user scripts have already been updated and can be found on the user script page. I also changed the location of user scripts, so old user scripts won't conflict.

Finally, I've created a page specifically to talk about Operator. If I've missed anything, please let me know. And feel free to visit my weblog and take my poll about how you interact with Operator.

Have fun!

Special note to users of the 0.8 betas - you'll need to go Options and delete "RDFa" and re add it as "RDF" to get RDF functionality back.