Living inside Eclipse, embedding browsers and Google Chrome

Posted by

I just spotted a neat post about Living inside Eclipse. This line of reasoning is where Gail Murphy and I were at a couple of years ago when laying out plans for bringing the benefits of Mylyn and Eclipse to activities outside of programming. We had created an RCP version of Mylyn, coined the “task-focused desktop”, and installed it on some non-programmers’ machines at the University of British Columbia. Extensions of these basic ideas are now available as Tasktop, and are giving many the “living inside Eclipse” feeling that Rahul is after. He mentions several desires to improve his life in Eclipse, which I have quoted below. Since his desires and our experiences line up so well, I’ll walk through how we support almost all of his Eclipse wish list. His first complaint was:

Eclipse web browser. Limited in features but helps during basic debugging or investigation… Wish it offered tabbed browsing.

One of the first things we did in Tasktop is to provide a full-featured tabbed browser that’s embedded within Eclipse. It builds on the existing SWT Browser widget and provides all of the features that you expect from a modern browser, such as password completion. I recently read the Google Chrome announcement and will compare the two browsers’ features. Let me clarify that we are not a copy of Chrome, since we first released these features in February ’08. But it’s great to see uptake of a “less is more” approach to browser UI design. Here’s Chrome:

chrome screenshot

One of the biggest UI changes that the Chrome team points out is the placement of the address box under the tabs. This was a natural choice for Tasktop, since Eclipse makes the tab a first class part of the UI. It’s nice to see this approach taken by another browser since Firefox 3.0 and Internet Explorer 8.0 still keep the address bar above and replace its contents when the user changes tabs. Like Chrome, Tasktop allows you to drag tabs between browser/Eclipse windows, which I find myself doing frequently when working on multiple monitors. Note that in the Tasktop RCP app, we also got rid of the menu bar, and there are quite a few similarities in the end result. Here’s Tasktop:

It’s also interesting to note the differences. With Tasktop we got rid of the forward button, considering that if you are going forward you may need to see where you are in your history, hence we provide a drop-down similar to Internet Explorer 8. I like how Chrome got rid of the Stop button. When we discussed this a year ago, we figured it was too soon.

Another layout difference is that Tasktop renders the starred list vertically to avoid using too much precious horizontal space (you can flip it to horizontal if desired). The address bar behavior is very similar since Tasktop allows searches to be typed in and offers similar completions. The most fundamental difference between Tasktop and other browsers is the use of tasks (not files or web pages) as the primary unit of interaction. Let’s take a look at how the task-focused interface approach surfaces in the browsing facilities. Consider that Chrome makes starring very primary. This is a manual approach to remembering what is important. With Tasktop, your interest in web pages for a task is tracked automatically and browser tabs are instantly restored when you switch tasks.

Taskop’s Starred list is simply a listing of all the landmarks in your current working set’s global context. This means that when I switch from my “Mylyn” to my “Personal” working set I get to see a different starred list. Being able to focus on both working sets and tasks when browsing means a lot less repetitive searching and bookmark/starred list management, saving me time in my day. It also means that my address and search history are specific to the working set, so I don’t have any problems with completions for things I looked at in my Personal working set showing up when I’m at work work. And we make privacy primary by not storing any history if you’re browsing without a task active.

Like other browsers, Chrome is built around an overlapping window interface. Tasktop is built around a solitary, usually full-screen, workbench window with editor and view tabs. It uses task context to ensure that the information that shows in the UI is relevant to the task-at-hand. Having worked this way for a couple of years I personally think that the prime time of overlapping window interfaces has past. They work great on my 46″ television where I want a bunch of gadgets, and a few little web apps that I’m happy to stack around myself, but not so great for my day-to-day productivity. I wonder if after the first few days of using Tasktop it is possible for anyone to miss the manual management of tabs, windows and spaces. And then dealing with it all being lost during a reboot.

screenshot chrome

This big window approach means that unlike Chrome, we had to keep the separate search box. If you have a task editor open instead of a web browser, I may still want to do a web search. In addition, we wanted to make it very easy to search within web applications such as wikis and Google docs. In the screenshot above you can see how I have my search box configured to search various web apps. Web app support is another parallelism between Tasktop and Chrome. With chrome they are integrated into the OS via shortcuts that open windows without navigation bars. In Tasktop, web applications are integrated via the search box, open without a location bar, and if they provide a connector, offer rich and offline access, as is visible with Google Calendar below.

agenda

There’s one snag with the browsing integration and improvements that Tasktop offers today–they’re only supported on Windows. Internet Explorer is the only browser that’s embeddable with the quality that we require (neither WebKit not XULRunner provide much more than a rendering engine). There are a lot of improvements in terms of JavaScript execution and web app process management level in Chrome, and I hope that the Chrome team prioritizes embedding in order to support browser-based applications like Tasktop. For now we’re not holding our breath since embedding is a technically challenging problem, and since we need respond to all the users on Linux and Mac who have been asking for Tasktop’s browsing facilities. The good news is that we are now working on integration of focused browsing with a secondary Firefox window. The same approach will work for integrating with a standalone Chrome. With the browser stuff is out of the way, let’s take a look at the rest of Rahul’s wish list:

Mind map plugin to let me gather my thoughts.

For me the Task List has taken over a good portion of mind mapping, but I still find myself using mind maps for brainstorming. We briefly tried embedding some free mind mapping tools, but found standalone mind mapping tools like MindManager better, and easy to link to Tasktop via hyperlinks (since Tasktop is my default browser and will open tasks from web apps when offline). But it would be great to hear more about what people want, and we have a mind mapping entry on our integration survey.

More powerful text editor. I use block-editing heavily

Our answer here is Mylyn’s new WikiText component. Between that and continued improvements in the Eclipse text editor framework, Eclipse is on a good trajectory in this respect.

A plugin for MS Outlook that lets me attach emails to Mylyn tasks

This is something I couldn’t live without. Same for Gmail messages, since I use both Outlook and Gmail. To see more check out the 2nd to last screenshot on the Tasktop Tour.

A plugin for MS Excel

This is already supported, since you can open Excel documents within Tasktop and Eclipse via Open With -> In-Place Editor. Early versions of Tasktop made this the default, but the more we used it, the more we found that office applications like PowerPoint and Word were usually nicer to use in full screen mode, even on large monitors. So instead of embedding everything now, Tasktop monitors your interaction with external applications, and can open and close Excel as you switch tasks.

A powerful desktop indexing and search plugin

We added a full index of all file system locations that you have mapped in Tasktop and all of the files files in your projects. This gives you instant search for all files of interest, and since we integrated this with a Common Navigator view, unlike other instant search tools, Tasktop shows you the directories structure that containing the matches. It took us a while to get this to scale to hundreds of thousands of files but we’re there now. After only a month of using this for a while I turned off Vista’s indexing of documents and haven’t felt the need to turn it on again.

navigator

With the coming of Chrome, it’s great to see progress from the browser front on better support for running JavaScript applications and integrating with the desktop workflow. But I think it’s good for developers to keep in mind how mature and robust of an application framework Eclipse provides. I rely on Google apps daily, but I could not imagine giving up the highly streamlined user experience that I get from desktop apps like Microsoft Office and Skype. Given the fact that Tasktop facilities like instant search push on the resource limits supported by the Windows OS, we have learned about some fundamental benefits of running on the native widget layer provided by SWT. Between that, the other benefits of Eclipse RCP and the overall awesomeness of plugging applications together with OSGi, Eclipse continues to be the ideal application platform for us to deliver the innovations of Tasktop, which serve as the task-focused glue between the various desktop and web applications that we use.