For the past few Thursdays we’ve been doing something called an “Open Design Lunch” at Moz. We’ll pick a design problem that somebody’s working on and brainstorm it informally while munching pizza and burritos. Asa has been broadcasting these events on air.mozilla.com.

At today’s Open Design Lunch I brought up the question of how bookmarks should be accessed in Fennec. Bookmark management on Fennec gets extra tricky when you have hundreds (or thousands) of bookmarks from your desktop computer getting synced onto your mobile phone; so this problem is closely related to the UI design of Weave. My previous attempts to design a bookmarks UI haven’t solved these problems to my satisfaction.

The conversation didn’t conclusively settle anything (of course) but it brought up a lot of good ideas that deserve further investigation. Here’s the video:

(Note: These videos use the cutting-edge <video> tag from HTML 5, so they may not work for you unless you have the latest version of Firefox or another standards-compliant browser.)

Advertisements

weave-ethernet-cable

We talk a lot about Ubiquity being easy to extend, what with the ease of writing your own commands and so on.

But did you know that Weave is also built to be extended?

Weave uses a generic syncing algorithm which uses plug-ins called Engines to handle different data types. The following engines are built into Weave:

  • Bookmarks (fully functional)
  • History (fully functional)
  • Stored Passwords (currently being revamped for 0.3)
  • Tabs (being revamped)
  • Form Field Entries (being revamped)
  • Cookies (being revamped)

But since the syncing algorithm is fully generic, it will work with any data you give it. Therefore, you can write a sync engine to synchronize any data you want, as long as that data is accessible from Mozilla extension javascript. Your sync engine just has to extend some existing Javascript prototypes and add some logic for reading, writing, and updating your data type. The Weave core will do the rest.

It’s more work than writing a Ubiquity command, but not as much as writing a whole new extension.

Last night I finished writing the Weave client-side API documentation that describes, in excruciating detail, how to write your own sync engine.

I hope having this API documented will inspire some people to try their hand at weaving together their own data types!

(If there’s any part of the documentation that doesn’t make sense, leave a comment or visit #weave on irc.mozilla.org and let us know how it could be made clearer.)

Aza interviews me about Ubiquity and Weave. I do a bad Frank Zappa impersonation and some air guitar.

Here’s why I haven’t blogged for these many weeks — I’ve been too busy working on this:

nokia2

That’s a Nokia N810 pocket-sized internet gadget. The picture doesn’t show the screen contents very well, but if you squint at the bottom right you can barely see that there is now a “Weave” section at the bottom of the Fennec preferences screen.

I demonstrated Weave syncing on the Nokia in front of a live audience at the Labs Night last week. So far we just have bookmark sync working, and bookmarks loaded in from a desktop computer are accessible only through Fennec’s Awesome Bar, but it’s a start.

We are trying to land very basic Fennec support into the next Weave client release (which is planned for this week).

Here’s a screenshot from the Mac version of Fennec:

fennecprefs

(I know the position of the “Preferences” button is all wrong; it’s a work-in-progress.)

Currently, you can’t create a new Weave account from Fennec, only connect to an existing account. That means you have to set up the account from a computer with Weave and Firefox first, then you can connect your Fennec gadget. Here’s the connection screen:

fennec-weave-setup

I’m trying to get it down to the absolute minimum possible user interaction — even more minimal than the earlier mockup I posted. I took the advice of some commenters on my earlier post and added a button to hide/show the password/passphrase, rather than making them always visible.

I’d like to personally thank a few of the many people who helped me out with this project:

  • Stuart Parmenter and Mark Finkle for helping me understand Fennec and
    Nokia development
  • Dan “Thunder” Mills for helping me understand Weave
  • Madhava Enros for UI design discussion

Mozilla Labs is working on porting Weave
(our data-syncing extension) to Fennec (our version of Firefox for cell-phones and other handheld gadgets). Weave is still experimental, Fennec is still experimental, so as you can imagine, Weave-in-Fennec is still in the early planning stages. But here’s why it’s going to be cool:

Imagine you’re looking at a map in Firefox on your computer, finding the directions to your sci-fi convention (or whereever you’re going).

An hour later, you’re standing on the sidewalk in an unfamiliar city, and you need to double-check those directions. Oh no! You forgot to print out a copy! You’re lost! What do you do?

Lucky for you, you have a cell phone with Fennec and Weave on it. You open up Fennec and your map is already there, waiting for you, because Weave automatically synced your open tabs between your desktop Firefox and your Fennec. There’s no need to put your phone in an awkward cradle-thing connected to your computer to sync it up manually, nor do you have to fiddle with BlueTooth settings,
because syncing happens through a server, and it happens automatically whenever you’re online.

Besides tabs, you’ll have access to any other type of browser data that you choose to sync, too — like bookmarks, history, cookies, stored passwords, etc. Syncing goes both ways, so all the names and phone numbers from your cell-phone contact list can be synced back to your desktop computer, too.

I’ve been working on a user-interface design proposal for Weave on Fennec. Weave mostly works invisibly, without user input, but there are a few places where interaction is needed. Since I know that typing in text can be painful on a mobile phone, I’ve tried to keep the amount of text-input required down to the absolute minimum. In the places where I’ve had to introduce new screens and new interactions, I’ve tried to make them a logical extension of Fennec’s existing touch-screen, finger-gesture-based UI.

By the way, if you want to try out Fennec, you can download it here. It’s an alpha version, so no guarantees of anything, OK? But there are versions for Mac/Windows/Linux as well as for mobile devices, so you can run it in a window on your desktop computer and pretend you’re squinting at a tiny cell-phone screen.

The UI Proposal itself is here. It’s a very detailed document aimed mainly at the audience of developers and contributors to Weave and Fennec, so if you have only a casual interest, you might want to just skim it.