Status: Jetpack and Content Scripts in Firefox

As Mike Beltzner recently explained, the Firefox team is working on better communicating what we’re working on. We’ve been focusing on more of a Sprint-based model of development, and I’m quite enjoying it. Of course, it’s not a huge change for me, due to the way my previous project was organized. I should note that some of these “sprints” will take significantly longer than a week or two – so I like to think of them as “projects”.

Since its been quite awhile since my last status update (a month!), I’ll cover what I’ve been working on since then. If I take more than a week or two to post again, feel free to yell at me on IRC :)



  • Implemented detection of certain page URLs, and display them as tasks
  • No other exciting developments, working on getting the code review-ready
  • Canceled the weekly meeting

Loose ends

  • Who’s the lucky person that gets to review this? It’s rather big…

Next steps

  • Finish getting review-ready
  • Start getting reviews and iterate

Jetpack uplift exploration


  • Goal: Explore possibilities and requirements for uplift of Jetpack
  • Timezones + scheduling meetings = suck
  • Phone meeting between us (Johnath, Mossop, and I) and Atul (The Jetpack Guy)
  • Plenty of notes up on the wiki
  • Spawned off Content Scripts sprint as a first step in achieving end goal (provide open-web tech to extend the browser)

Loose ends

  • Wanting bug numbers for stuff that Jetpack needs fixed in Firefox/Platform

Next steps

  • Finish Content Scripts sprint
  • More meetings with the Jetpack team

Content Scripts


  • Goal: Provide native support for Content Scripts
  • General requirements gathered
  • Basic functionality completed

Loose ends

  • Install/management is dependent on the Extension Manager UI and API

Next steps

  • Implement custom protocol as a binary component
  • Implement persistence of installed scripts
  • Spec requirements for what API to provide to scripts
  • Potentially implement GreaseMonkey compatibility APIs

Taskfox, the screencast edition

In my last post about Taskfox, I asked for volunteer users to try out the latest Taskfox build. For those of you that read it, you may have noticed I included no information about how to actually use Taskfox features. No mention at all. None. Zip. Nada.

And I did this on purpose.

My apologies to the people who were confused, bewildered, and frustrated by this. You were all (including co-workers!) unwitting participants in my experiment. It showed that the current interface for Taskfox features may not be discoverable enough, even for technologically savvy people. Thankfully, we think we have a solution – more on that in a future blog post.

In addition to the lack of information, the Map task was broken. This wasn’t part of the experiment – merely a mistake on my part. Same with the inability to enter spaces (thanks to a last-minute change). Oops.

So today we have a new build! Bugs fixed, some things added, and some information on how to get the most out of using Taskfox.

Using Taskfox

When you open a Taskfox build, its the same as any nightly Firefox/Minefield. It displays web pages the same, the toolbars and menus are the same, the URL bar is (almost) the same. But typing in the URL bar is where the magic begins, as you can see in the following screencast:

View on Vimeo.

Where to provide feedback

There are plenty of ways you have give us feedback:

Getting Taskfox

Builds are available for all platforms that Firefox ships on:

Taskfox – guineapigs wanted

Two months ago I introduced Taskfox – a project aiming to introduce some of the ideas from Ubiquity into a future version of Firefox. There’s more information about this project in my initial introductory blog post and on the Taskfox wiki page.

We’ve been working steadily on the project since then, and a lot of progress has been made – to the point where Taskfox is both usable and useful. Which also means the project is at the stage where its very important and beneficial to have a lot more people run it daily – using it, testing it, and providing feedback. That’s where you come in.

There’s links to the latest builds at the end of this post, if you want to just jump right in to playing with it. But I’d like to go over a few things first.

Development Status

Since Taskfox is still in development, there are only a limited number of tasks that are available for now. As of today, these are:

  • Amazon
  • Google
  • Images
  • Map
  • Music
  • Netflix
  • Translate
  • Video
  • Weather
  • Wikipedia
  • Yahoo

Additionally, your installed search engines will be automatically available as tasks. A list of other potential tasks is here:

There’s also a few features that simply aren’t implemented yet:

  • Simple keyboard navigation
  • Localization of tasks
  • Showing the task in the URL bar when visiting a related web page
  • Task management
  • ???

Thoughts and Feedback

I’d like to go over what thoughts and feedback would be most useful for us right now.  Of course, any and all feedback is welcomed and appreciated – whether its big or small. But there are a few things we’d specifically like to get answers to for this round.

As you may recall, Taskfox has three basic principles:

  • Taskfox must help users accomplish tasks
  • Taskfox must be useful to all Firefox users
  • Taskfox must be fast, secure, and extensible

We want to make sure that Taskfox sticks to these principles.

Beyond that, we want to know how it feels:

  • Does it feel like Firefox?
  • Does starting a task feel right?
  • How does the process of performing a task feel?
  • How does it meld with your workflow?

And finally, we want to know what you would change to make Taskfox even more useful.

  • What tasks do you do regularly, that you wish could be done in one simple step?
  • What tasks do you wish you could do in your browser, but are too complicated?

Where to provide feedback

There are plenty of ways you have give us feedback:

Getting Taskfox

Now for the goodies I promised. I’ll be generating builds regularly – some may have major changes, while others simply bug fixes. These builds are based off Minefield – a developmental branch of Firefox that contains the newest experimental code. While I try my best to make sure things aren’t broken, there are no guarantees.

Note that these build’s won’t (yet) automatically update. You’ll need to manually update them periodically. To make that easier, I’ll be updating the Latest Build link on the wiki, posting information on the dev-apps-firefox mailing list (also available through Google Groups), and posting to my blog (which is aggregated to Planet Mozilla).

I should also point out that since these are development builds, they’re only available in the en-US locale for now.

Builds are available for all platforms that Firefox ships on:

Happy testing!

Ubiquity & Firefox – Introducing Taskfox

Ubiquity has been an amazingly successful project, and it continues to grow and evolve. There’s a huge active community of users, command authors, and core developers. Over 200,000 people are using Ubiquity every day, with hundreds of command authors, and thousands of commands in the wild. New Ubiquity commands have been written and shared by the community, extension authors, and developers of websites and web services. The user tutorial is available in 10 languages, thanks to community contributions.

At the same time, it’s clear that Ubiquity is not for everyone. Ubiquity users are people who:

  • are willing (and brave enough) to experiment with alternative, natural language keyboard style interfaces
  • use web applications extensively for email, calendaring, document editing, online collaboration and most of their day to day tasks
  • understand that the web is a collection of data which can be remixed, mashed together, and edited by users as well as by web developers
  • are familiar with Firefox Add-Ons and willing to install Ubiquity on all their machines
  • know at least some basic English

However, the underlying benefits that Ubiquity offers are universal. All internet users perform a given set of tasks regularly – and many of these tasks require the same set of steps to be taken every time. The browser should facilitate accomplishing the end-goal and help reduce the number of steps to reach that goal whenever possible.

That’s where Taskfox comes in. Taskfox is the codename of a project to uplift parts of Ubiquity into a future version of Firefox (ie, after Firefox 3.5 ships). The basic idea behind Taskfox is simple: take the time-saving ideas behind Ubiquity, and put them into Firefox. That means allowing users to quickly access information and perform tasks that would normally take several steps to complete. This does not mean “ship Ubiquity with Firefox”. While the two projects share some common ideas and use cases, the goals are not all the same. What would this look like? We don’t really know at the moment, though we have some ideas.

When thinking about Taskfox, we’ve been trying to keep in mind three basic principles:

  • Taskfox must help users accomplish tasks
  • Taskfox must be useful to all Firefox users
  • Taskfox must be fast, secure, and extensible

Accomplishing tasks

The workflow that people currently have while using Firefox is very important. Interrupting that workflow by being too “helpful” would be very disruptive, as would forcing a completely new workflow. Unfortunately, this is something that Ubiquity does – in order to use it, you must adopt a new workflow. Taskfox needs to be available within your existing workflow – working with it, not against it.

In addition to being part of your workflow, Taskfox also needs to be obviously reachable. One of the issues many people have with Ubiquity is figuring out where to start typing. By using a method people already use to perform tasks, we can get this connection. Zac Lym’s usability studies found people expecting to be able to type into the location bar. This makes sense, given that location bar is by far the most used area for performing the most universal action (going to a website).

Available and useful to all Firefox users

One of the things that Ubiquity is known for is its use of natural language for input. Firefox ships in more than 70 languages. These two things do not easily mix.

So let me be blunt here: natural language input is NOT a goal of Taskfox. It never has been, and it never will be. Nor is it intended to bring the user and the web together via language.

However, Taskfox will be localizable. All locales are first-class citizens here. This will include both string localizations and locale-specific content providers (just like there are locale-specific default search engines). This also implies that Taskfox will include far fewer commands by default than Ubiquity. That’s OK, though, as we want to pick and choose the ones that are felt to be most useful to the widest audience.

Speed, Security, and Extensibility

In order for Taskfox to succeed, it needs to not regress performance. As we develop the project, we will ensure that we do not have a negative impact on any of the key performance metrics by which Firefox is judged.

Also, Taskfox will not include the ability to subscribe to Ubiquity-style command feeds, as this has the some potentially nasty security implications. Similarly, its not a playground for experimental UIs – it needs to be usable for power users and grandmas alike (and even power user grandmas), not just the early adopters.

However, there will be an API for extension developers to use. This will be available to normal Firefox extensions – and so any such extensions will go through the same security and quality checks that any other extension on AMO would go through.


Right now, it’s mostly me, with some help from Atul and Jono and early user interface thinking from Alex and Aza. I’m working on migrating code from a proof-of-concept extension to a new Incubator repository at, which contains a clone of mozilla-central (ie, the bleeding edge of Firefox code). As the project progresses, we expect to occasionally merge into mozilla-central and be available in Firefox nightlies. Until then, you’ll have to build Taskfox on your own, though we’ll also occasionally post some experimental builds for people to try out.

Also, we’ve set up a Taskfox page on the Mozilla Wiki to document everything about this project.

Starting this week, there will be public meetings held every Thursday at 3:00pm PDT (10:00pm UTC). You can find when that is in your timezone here. These are open to everyone, no RSVP needed. To join in, dial in to one of the following numbers:

  • +1 650 903 0800 x92 Conf# 8604 (US/International)
  • +1 416 848 3114 x92 Conf# 8604 (Canada)
  • +1 800 707 2533 (pin 369) Conf# 8604 (US Toll Free & Skype)

You can also join #fx-team to chat about Taskfox on IRC, or discuss it on the newsgroup. We welcome anyone to help out, file bugs, write patches… get involved!