by Dave McAllister

Created

August 29, 2013

Recently, Adobe released Theseus 0.4, a JavaScript debugger extension for Brackets. The above link will lead you to its home in Adobe Research organization on GitHub, which is home to a number of seriously cool projects.  Theseus is released under the MIT license.

a debug trace from Theseus, an open source Brackets extension

I sat down with Adobe intern Tom Lieber, the developer for Theseus. Tom is an MIT grad student and intern working with Adobe Research on problems relating to the development and understanding tools for software engineering, end-user programming and user interface design.

So, what is Theseus?

Theseus is a debugger for JavaScript that tries to make debugging as easily accessible as possible. It’s part of a collaboration between the User Interface Design Group at MIT CSAIL and Adobe Research.  

The goal of Theseus is to let you see what your program is doing by looking at the code, without having to make as many guesses by simulating the code in your head.

How does someone get started with Theseus?

First, grab the latest version of Brackets. Then, in Brackets, click the menu item File, choose Extension Manager. Pick the Available tab, type Theseus in the search box and click the install button in the search results for Theseus. There are also a couple of great videos demonstrating Theseus on the Brackets blog.

And starting with version 0.4, you can use Theseus to debug Brackets itself, as well as any extensions Brackets has loaded, in just two steps:

  1. Open the source code for Brackets or the source code for your extension, in Brackets.
  2. Click the menu item Debug > Debug Brackets with Theseus.

There are additional places to learn more about Theseus:

Theseus v0.4 Announcement

Theseus intro video

Extended Theseus video demo

Brackets Blog introduction

The Theseus README

Theseus paper from CHI’13

How does Adobe use this?

Well, one of the goals of this release was to get the code robust enough for debugging the Brackets editor itself. Since Brackets is written in HTML and in JavaScript, there is a natural synergy in having  Theseus support a significant piece of code. In fact, we’ve already seen bug reports that use the debugger to debug the debugger.

Why did you do this?

Part of it is a personal desire. It’s always fascinated me how we can interact with the application by poking at, trying things out. However the code itself is rather stagnant and somewhat arcane. My goal was to make it as easy as possible to work with the code. In fact, I want people to be able to play with the code as if it was the live application. This is part of my goal to create more usable programming environments.

How would you like others to get involved?

The best way to get involved is to use Theseus on your own projects and give me feedback. I’m looking for when/where it is useful as well as when/where it isn’t useful. The feedback will help me expand my academic research and make Theseus better for everyone.

Contributions to the code are quite welcome. It is a research project and thus, research code, but it’s fairly robust. I’m more than willing to support anyone who’d like to extend the code, or use it for their own purposes.

It would be great to see Theseus expand to project level discovery and project scope exposure. It would be useful to see events, or be able to ask questions like “What modules were involved in initialization?” It would be great to have visualization of data and elements so when things go out of range you understand the cause and impact.

Theseus was created for JavaScript, but the code is written in small modules, and separates the language specific items out so it would be possible to create debuggers for other languages. 

Anything to add?

Well again, this is a research project and I would particularly enjoy hearing back from anyone who’s using it. We need to get a clearer view of how people want to use it and what people are doing with it to make sure Theseus expands and matures to make it an even better tool for asynchronous language debugging. I can be reached at tom@alltom.com, so feel free to drop me a note to let me know how you are using Theseus. (Tom is also on Twitter and on Github.

Thanks for your time Tom and good luck with your continuing studies at MIT. We are quite taken with the capabilities of Theseus and look forward to seeing how it grows in future releases.

For more information on open source projects at Adobe, please visit our github portal and the Open@Adobe information page with links to even more open source from Adobe.

Please follow OpenAtAdobe on Twitter