Code Bubbles

Most of you have probably heard about Microsoft's now-completed Visual Studio 2020 competition, where the grand prize was to meet Scott Guthrie, the effective head of the Developer Division. People were invited to make submissions, and one of them was shown on Code Project and began life as the Visual Studio 2010 Concept IDE.

Well, Ph.D. student Andrew Bragdon has his own take on "inventing the future". Code Bubbles is an IDE that will be presented at this years ICSE. The level of thought that has gone into this design is simply astonishing. It has the feel of a tiling window manager like XMonad or awesomewm, but without the traditional MDI Application or SDI Application WIMP metaphors we're used to; as a result, it eliminates a ton of clutter. It also integrates key ideas from Eclipse contributed by Mik Kersten and Borland/CodeGear: The Mylyn project for integrating workflow deeply into the IDE. This is some real inspiration for Gilad Braha's Newspeak project (Vassili Bykov's Hopscotch IDE; LANG.NET 2009) and Dan Ingalls' Lively Kernel, since the staple of any good Smalltalk-like language is the environment!

Will makers of 30" monitors will be shaking developers down by their ankles? :)

Comment viewing options

Select your preferred way to display the comments and click "Save settings" to activate your changes.

What if there was no code?

What if there was an IDE that did not use any code at all?
Actually there is one and it's not research anymore: Take a look into the Agile Platform

not research anymore

Do you have the list of research papers that it once was?

The page you linked seems like a lot of marketing noise and not at all related to programming languages.

Back in the '80s, an issue of I think Byte Magazine had an advertisement for a program called "The Last One" that promised to be "the last application you'll ever install." Funny enough, a member of the Microsoft Oslo project said that EXACT same phrase to me in describing the importance of Oslo and their language M for modeling. I was so amused.

Anyway, Andrew's work is a potential breakthrough breakthrough for productivity - but also potentially interesting for other reasons that you hear mentioned in Gilad Braha's talk on Hopscotch. But here's my take: Back in the 1980s, computer scientists were working on "predictive modeling". Back then, it was called "prediction by partial matching" and "content mixing". You could argue the first description of these ideas was in James Meehan's TAIL-SPIN - the first computer story generation system. And these ideas have huge influences in PLT - Joe Goguen worked on applying his algebraic semiotics to user interface design, focusing on figuring out what sort of grammar we'd need to define to have what linguistic philosophers called "conceptual blending".

Nostalgia

I have a png copy of "The Last One" advert, which sadly means I can't paste its text, but I did stumble across this gushing article lest we forget that automatic programming was fully solved in the early 80s...

Png -

Could you e-mail me that? See ltu profile for email addy. It would be super-sweet to add to my "cool computer crap collection".

Found this on The Daily WTF

I saw this ad on The Daily WTF a while back. Here's a link: http://thedailywtf.com/Articles/What-the-Ad--Big-Promises.aspx

Also on the page is an ad for a Lisp tutoring system for $75. The commentary from the page: "Only white beareded gurus on a mountain top can pass this knowledge...and the only kind of currency they work with is souls."

That - CodeBubbles - is a

That - CodeBubbles - is a very nice IDE. I especially appreciated the 'find paths between functions' and the side-by-side views of code, providing progressive disclosure without bouncing from file to file. The 'console' views in Debug workspaces were also a nice touch.

If I were writing Java on a regular basis, I'd be giving this a serious try.

Version Control

That is a very nice piece of work. The UI looks well thought out, and then (rarely for a research prototype) it has been very polished. I particularly like the way that a "context" for a programmer gets exposed as a set of elements with a visible spatial relationship. I'm guessing that Eclipse is going to get a lot of eye-candy over the next year or two.

The part of the demo that deals with comparing values across multiple debug sessions is very nice (although I assume there are some caveats like the code not holding resources that can't be serialised) but it naturally raises the question of version control. The full papers aren't up yet so I can't check, but the demo did make me curious how they would handle code in a repository where the bubbles can span multiple revisions.

Everytime I see a pan-and-zoom interface

I think of 15 Views of a Node Link Graph

I like that in CodeBubbles they've not used the scrollbar non-metaphor, but maybe it would be even better using the ideas in this talk (crudely put: unfocussed objects are warped and small, focussed objects are central and zoomed). I can see how perhaps with small text this might not be so great...

In general, though, CodeBubbles looks really exciting.

Squeak

Superficially, it looks like squeak. Overlapping that fully-integrated view with file management is a great idea.

My thoughts exactly!

... but then I saw a few more minutes of the video, and realized the similarity to Squeak is superficial. In my experience Squeak is far from focusing on the flow of code and displaying multiple functions simultaneously, which is exactly what this is about.

More like Self?

It reminded me more of the Self UI. The way you can drag methods, etc out. The animation as bubbles move around is also similar to animation in the Self UI. Same with the infinite scrolling desktop.

I like the way the bubbles auto-arrange by moving out of each others way. I'd like to see that in Self.

Xerox Star, Self UI, Rooms, and Alternate Reality Kit

Experiencing Self Objects - describes the design of the Self UI.

Xerox Star is described in many papers, but the first two were papers about (a) what you could do with Star (how it relates to things you do already) (b) why it was designed that way (underlying principles). Terry Winograd also wrote a book where he interviewed Ralph Kimball and many other design luminaries outside computer science for advice on how to have design influence the future of computers - Bringing Design to Software.

Rooms was an alternate window management concept - similar to Portals in Lively Kernel.

Alternate Reality Kit - is where Self gets its ideas on animation, so if we're trying to say how original Code Bubbles is being here, then we should not forget that Self didn't just magically invent cool things, either. - they did their research (literally, reviewing prior art) and then their implementation.

I personally think every object should be allowed to have its own Desktop or "workspace switcher".

video?

is there any video where we can xerox star/self UI in action?

Of course

smart people don't forget to leave behind great documentation of how great they were.

Google Video Search: xerox star (too many videos to link to just one)

ACM CHI+GI 1987 + CHI 1991 Issue 27 - Alternate Reality Kit

Self: The Video

Edit: According to one of the authors of the Code Bubbles paper, Suman Karumuri, the IDE frontend is implemented in WPF and C#. The backend is implemented in Eclipse, and the two communicate by XML-RPC calls.

Short screencast

I have a short screen cast on a blog post about Self showing some use of the UI (it's only about 3 minutes long). A direct link to the video is selfimage.ogg.

Format?

Unless my video player is misbehaving again it looks like your screencast is a small (2.8M) file with only the audio track and no video. Could anyone confirm if this is my system or the source file?

Theora video

It has a Vorbis audio track and a Theora video track. You should be able to play it directly in VLC, Totem, Windows media player with the Ogg codecs installed or any web browser that supports HTML 5 video with Ogg support (Firefox, Opera, Chrome).

More evolutionary than revolutionary

I actually thought this was more evolutionary than revolutionary. This type of navigation with context preservation can be found even in past projects done here at MIT (http://relo.csail.mit.edu/). Extending it to search results, runtime introspection, etc. are sensible and even expected. I’d of course love to have a tool like this in my actual hands, though. For the time being I tend to scribble notes resembling this structure (putting everything together into context) whenever I dive into a new and complex codebase.