Tokyo Developer Conference – FUEL & XULRunner

I was a co-presenter for two sessions at the Tokyo developer conference held a few weeks ago:

  • FUEL & Chrome JavaScript Libraries (slides) : I presented with Gomita-san (picture), a Japanese extension developer who had a detailed presentation on the ways FUEL could help extension developers. We both handled a short Q&A session at the end.
  • Building Applications with XULRunner (slides) : I presented with Taro Matsuzawa (picture), a leader of the MozillaGumi community. Taro’s presentation was about localization issues with XULRunner applications. In the process, he showed how to convert an extension to a XULRunner application. It was a cool dashboard-style, transparent clock widget. We, also, did a short Q&A session at the end.

A couple things I came away with from the conference:

  • The Japanese Mozilla community is very strong, passionate and knowledgeable. Everyone appeared to have a lot of fun and the presenters certainly enjoyed showing off their extensions. I saw a developer build an extension in 3 minutes from scratch – with the help of some well planned editor keyboard macros.
  • Unsurprisingly, Japanese extension developers have the same wishlist for FUEL as any other extension developers: support in toolkit, support in Firefox 2 and support for files/streams, clipboard, … 🙂
  • XULRunner is relatively new to the Japanese scene. There have been some experiments and articles, but it definitely has some room to grow. With the strength and size of the extension development community, I would expect to see growth in Japanese XULRunner development.

Of Communities and Interface Friction

Dave Humphrey’s latest post really got me thinking about a couple things. First, I think what he proposes is a timely, interesting idea. It illustrates the power of the web brought to bear on a particular problem. Specifically, the post got me thinking about building communities and lowering interface friction placed on users. Not exactly peanut butter and chocolate, but I think they are related none the less.

Dave’s idea (read his post for the full details) develops as a reaction to someone else’s solution to a problem:

How can information (medical information, in this case) be vetted or deemed trustworthy by a knowledgeable community (medical professionals)? How can that trust data be used by others looking for reliable information?

The initial solution was to create a web application that contained the details and notes on web pages that were vetted. Users could log into the system and search for trustworthiness level of a given web page. Other users could log into the system and set the trustworthiness level of a given web page.

On the surface, it would seem that a community is being created around the medical information web application. If the service was useful enough to get users to accept the friction of logging into a web application to search or perform data entry, then the community would grow and sustain itself.

However, I doubt that would happen. The many steps needed to reach a result or enter data would turn away most people. We can certainly do better than that and, in fact, have done better. Though unrelated, I could use subscribing to RSS/ATOM feeds as an example. When I find an interesting feed (through normal browsing behavior), I subscribe to the feed from my browser chrome (one way or another). I don’t launch my feed aggregator and manually add the feed. Very soon, browsers will do the same thing for lots of types of information (can you say microformats? yeah, you in the back).

Any usablility guru (and even some normal folk) will tell you that interrupting the user’s flow is a bad thing. Instead of forcing the user into your conceptual model, try working within theirs. In Firefox, you can look at extensions like Operator, Fleck, The Coop and Joey to see where the trend is headed. Heck, Flock is built on the concept. Allowing the user to contribute or share while performing normal browsing, with as few steps as possible, will maximize the value of the community.

Creating an extension that overlays the medical meta-data into the current web page really lowers the friction for users looking for trustworthy data. Allowing the user to “markup” or “annotate” the current web page information really lowers the friction for users assigning trustworthiness to a web page. People who need to determine data trustworthiness can do so with zero effort. People who supply the trustworthiness can do so with minimal effort, so there is more, current trustworthiness data in the system. One side feeds the other to the benefit of both. Just imagine if everyday folk could use such an extension to look for reliable information on the web.

Another reason I like Dave’s idea is a bit selfish. I am not a Facebook guy and I don’t “do” a lot of the “social for the sake of social” stuff (see Twitter et al). But here is a real, social, community (albeit niche) that provides something more than social value. I guess that means I should offer services to make this become a reality. I can only look at pictures of cute cats with witty captions for so long. Dave, what’s your plan?

Tokyo Developer Conference Wrapup


Mozilla-Japan (Chibi, Kaori, Gen and everyone else) did a great job putting together the developer conference. I think we had over 150 attendees and over 25 presenters.

It was the first time I attended a non-English conference. However, the translators did a great job. Even during my own presentations, the translators were doing simultaneous translation during the Q&A. It was incredible.

I really enjoyed the Extension Lightning Talks and the Extension Developer Environment sessions. The Japanese presenters were not only extremely talented developers, but they also did a great job making the presentations very entertaining. They were obviously trying to “one-up” each other during the presentations and did so with great flare, showmanship and the occasional practical joke. The translators could barely keep up! I want to talk more about the kinds of extensions presented and the extension developer community in a future post. Its a very rich and dedicated group of people.

I have had a great time in Tokyo. There has been lots to see and do and eat and drink. It’s a great city and 4 days was too short to explore. Thanks to Kaori and Gen for showing us around the city, it was a lot of fun.

XULRunner Wishlist

XULRunner provides a lot of core functionality, but if you’re writing an application that is not a web browser or email client, you might feel some pieces are missing or not supported as well as they could. You may even have a list. Here’s mine:

  • Interprocess Communication (bug 68702)
  • Window transparency on all platforms (bug 307204)
  • Hiding the main window menu on Macs
  • Adding application to the system tray or appropriate location for other platforms (bug 325353)
  • Allow extensions to be associated with the runtime and not only with applications (bug 299716)
  • XUL Templates based on XML or SQL (bug 321171 and bug 321172)

These features are not critical “must haves” in order to build a good desktop application. Some of them just make it easier. Others are nice to have in the toolkit and not in patches or code that results in a custom build of XULRunner.

While I’m at it, here’s a list of developer “features” I’d like to see:

  • Simple (not perl scripts) tool for MAR file generation so applications can upgrade themselves
  • Tools to generate scaffolding for new application projects
  • Venkman (or other debugger) added to the runtime so applications can be debugged easily (sort of bug 342590)
  • DOM and Event libraries for XUL
  • Packager to “build” applications from XUL & JS

Feel free to share yours. The Mozpad group is working on a list too.

XUL Explorer – 0.4 Finally

We’ve been pretty busy around here with various sorts of things, but we finally got enough time to get XUL Explorer (XE) 0.4 out the door. XE 0.4 has some neat features that we hope will help Mozilla platform developers (extensions and applications) be a little more productive. The highlights include:

  • DOM Inspector and Venkman (JS Debugger) extensions are integrated into XE. You don’t need to mess around trying to install them. They are pre-packaged for your debugging enjoyment.
  • Extension project wizard walks you through the process of creating a Firefox extension. The wizard has options for various types of extension UI’s so you can support toolbar, menu, sidebar and context menu overlays. The extension files are generated using a simple template system, so it should be easy to tweak and add more features.
  • Simple extension testing allows you to pick an extension source folder and quickly run/test the extension in Firefox. No need to manually package and install the extension.
  • A simple XML/XUL formatter helps cleanup your code and there are a few more links to online documentation at the Mozilla Developer Center.

The extension wizard and extension tester are definitely not finished (see roadmap). The extension tester has a few planned usability improvements. The extension wizard has some general improvements coming and many new features. One improvement is support for more targets, including Thunderbird and XUL Explorer. Only Firefox really works now. Another feature is stubbing out handlers for common events, such as when a page loads in the browser.

Once the template based stabilizes for extensions, wizards are planned for XPCOM components and XULRunner applications. We’re very much interested in your feedback as well. So if you can stand using alpha software, give XE a spin and let us know what you think. What’s good, what stinks, what would make a good feature – whatever.

Big thanks to Cesar Oliveria and Paul Medlock for pitching in. Also thanks to Ted Mielczarek for the head start.

Install (Windows): xulexplorer-0.4-win32.exe 5.2MB
Install (Linux): xulexplorer-0.4-linux.tar.gz 9MB
Install (Mac): coming soon
Source: SVN
Bugs: New or View