Skip to main content

Behind Mozilla’s TowTruck collaboration tool

Mozilla has unveiled TowTruck, which is a website service aimed at making it easier to collaborate in real-time.

Set-up only requires a couple of lines of JavaScript. TowTruck then enables features such as cursor-mirroring, collaborative form-editing, browsing and real-time chat.

A Mozilla spokesperson told .net collaboration features are now “an essential part of the success of an authoring or decision-making tool”, not least for distributed teams. “As applications become more sophisticated, using collaboration tools to communicate adds value to interactions that use the spoken/written language alone,” the spokesperson said.

Regarding TowTruck, the spokesperson added that there were also inherent advantages in Mozilla’s continuing to build tools with web standards, mostly around extensibility and security (“Users on TowTruck-enabled sites are logged in with their own accounts, so they can collaborate without exposing their data or access to other web applications”), and that the team was working on tools and APIs to further TowTruck integration.

Programmer Ian Bicking (IB) was part of the team that created TowTruck. He spoke to .net about the genesis of the tool and what it means for the future of web collaboration.

.net: Where did TowTruck originate?
IB: It was kind of a ground-up idea. Simon Wex created a prototype of a collaborative code editor, built around the idea of being able to quickly dump all your assets into an editor and get help from someone, then jump right out again. Around the same time, I’d been working on an experiment called BrowserMirror, kind of like screen-sharing at the DOM level. Both products lacked momentum and were shelved, but we found ourselves at MozFest in London, a gathering especially focused on education.

The energy and ideas from the event made us realise we wanted to pursue the products we’d made, and Mozilla Labs director David Ascher rounded up us and Aaron Druck (who is doing design) to talk about the next phase. We each brought ideas we were excited about. From there, it didn't take long to converge on the idea and scope of TowTruck.

.net: What for you are the most exciting aspects of TowTruck?
IB: If you've thought about building real-time collaboration into your product, check out TowTruck. Even in its alpha stage, it will boost your own development. Another use case is for developers who want to support (or allow peer-to-peer support) for application back-ends — all the admin screens and configuration that can be complicated for a customer to handle.

And, of course, TowTruck is open source, which is really important. Everyone's starting to realise, when you rely on an API provided by a company, you are subject to its whims, strategy and preference towards certain customers and even internal politics. TowTruck is a small, super-simple server that anyone can host, and a client library that is easy to fork or freeze. I've worked on and authored a lot of open source libraries and, from an engineering perspective, TowTruck is quite powerfully open because of how simple its architecture is.

.net: What do you believe are the main benefits of building tools like TowTruck in 'stuff of the web’?
IB: HTML (and family) gives us a high-level view of the application; traditional collaboration tools are either written very specifically to be collaborative applications, or the sharing is done at the pixel level. With TowTruck, we're able to look at the high-level elements that make up an application and, because HTML is at least somewhat semantic, we can infer the meaning of those elements.

Using this, we can create collaboration that is real-time, but isn't just lock step like screen sharing: two people can be working together without having to be looking at exactly the same thing; people with different permission levels can still interact with an application; and stuff like modern responsive layout can mean that both people can actually see different interfaces while still being able to interact on the common pieces.

.net: Do you have any thoughts on how you’d like TowTrick to evolve?
IB: Many! Our next step is working on the API, so an application can extend TowTruck. This means we can pick up the application's user identity, and maybe tap into the social network implicit in the application. For example, if the application has an idea of groups then you may want to collaborate with people in your group. It will also allow applications to synchronise things that aren't in the DOM or can't just be transparently synchronised.

After that, we want to look at the user experience on mobile devices. I think we'll want to experiment with gestures, like highlighting a region of the page, because typing is less appealing and there's no mouse cursor. Additionally, we’ll be adjusting the UI in general, such as experimenting with ways to show the person's attention and changes. We want people to be able to show each other what is important, rather than have to tell each other.

.net: Finally, how do you see TowTruck being used in the future?
IB: We are looking towards breadth and for collaborative composition, research, planning and sharing expertise. It's the kind of thing I personally would love to use when booking a flight, making a to-do list, when I have a question while filling out HR forms, or when I'm composing a blog post.

From the perspective of Mozilla's mission, we want to build a tool that can make anything on the web better; that's why we are building TowTruck as a service that can be applied to any website, instead of a specific collaborative application. Mozilla's concept of the web is inclusive. We see anyone who is making the web better as a partner and we're building TowTruck with that same inclusiveness.