Code Bubbles: Difference between revisions

From Cyborg Anthro Wiki
Created page with '"Developers spend significant time reading and navigating code fragments spread across multiple locations. The file-based nature of contemporary IDEs makes it prohibitively diffi…'
 
No edit summary
Line 1: Line 1:
"Developers spend significant time reading and navigating code fragments spread across multiple locations. The file-based nature of contemporary IDEs makes it prohibitively difficult to create and maintain a simultaneous view of such fragments. We propose a novel user interface metaphor for code understanding and maintanence based on collections of lightweight, editable fragments called bubbles, which form concurrently visible working sets.
=== Overview ===


The essential goal of this project is to make it easier for developers to see many fragments of code (or other information) at once without having to navigate back and forth. Each of these fragments is shown in a bubble" [http://www.cs.brown.edu/people/acb/codebubbles_site.htm]
Developers spend significant time reading and navigating code fragments spread across multiple locations. The file-based nature of contemporary IDEs makes it prohibitively difficult to create and maintain a simultaneous view of such fragments. Code Bubbles proposes a user interface metaphor for code understanding and maintenance based on collections of lightweight, editable fragments called bubbles, which form concurrently visible working sets.<ref name="chi">[https://dl.acm.org/doi/10.1145/1753326.1753706 Code Bubbles: A Working Set-based Interface for Code Understanding and Maintenance], CHI '10 Proceedings.</ref>
 
The essential goal is to make it easier for developers to see many fragments of code, or other information, at once without having to navigate back and forth. Each fragment is shown in a bubble.<ref name="site">[http://www.cs.brown.edu/people/acb/codebubbles_site.htm Code Bubbles], Brown University.</ref>
 
=== Authorship ===
 
Developed at Brown University by Andrew Bragdon, Robert Zeleznik, Steven P. Reiss, Suman Karumuri, William Cheung, Joshua Kaplan, Christopher Coleman, and Ferdi Adeputra, with Joseph J. LaViola Jr.<ref name="brown">[https://cs.brown.edu/people/spr/codebubbles/CHI-final.pdf Code Bubbles: A Working Set-based Interface for Code Understanding and Maintenance], Brown CS.</ref>
 
Published twice in 2010. "Code Bubbles: A Working Set-based Interface for Code Understanding and Maintenance," CHI 2010, Atlanta, pages 2503 to 2512.<ref name="chi" /> And "Code Bubbles: Rethinking the User Interface Paradigm of Integrated Development Environments," ICSE 2010, Cape Town.<ref name="icse">[https://dl.acm.org/doi/10.1145/1806799.1806866 Code bubbles: rethinking the user interface paradigm of integrated development environments], ICSE '10 Proceedings.</ref> A research demonstration appeared at ICSE 2010 volume 2, pages 293 to 296.<ref name="ss">[https://www.semanticscholar.org/paper/A-research-demonstration-of-code-bubbles-Bragdon-Reiss/47d33d2ab327e33764e7859075306e21bb3d3695 A research demonstration of code bubbles], Semantic Scholar.</ref>
 
=== The problem ===
 
The premise is stated plainly in the ICSE paper: today's integrated development environments are hampered by their dependence on files and file-based editing.<ref name="icse" />
 
The file is a storage unit that became a display unit. Code that belongs together conceptually, a function and the three functions it calls, is stored in whatever files the language and the project structure put it in, and the editor shows one file at a time. Understanding a call chain therefore requires moving back and forth between locations, and each move discards the previous view.
 
The papers cite supporting studies on this: how Java developers actually use Eclipse, how effectively developers investigate source code, and path exploration during code navigation.<ref name="brown" />
 
=== The interface ===
 
A bubble holds a single fragment, typically a function, and is editable in place. Bubbles sit on a continuous two-dimensional surface rather than in windows.
 
The mechanics described in the paper: a bubble is opened via a pop-up search box; opening the definition of something inside a bubble creates another bubble beside it, and related bubbles are automatically grouped; a large working set can include a bubble stack of references; an overview appears in the panning bar; and hovering gives a preview.<ref name="brown" />
 
Two design decisions distinguish it from earlier fragment-based systems. A tiling assistant prevents fragments from overlapping, and code reflows automatically to fit the bubble.
 
=== Precedents ===
 
The authors are explicit about their lineage. Working with program fragments rather than files was explored in Reiss's own Desert environment, and appears in IBM's VisualAge and CMU's Sheets hypercode editor, all loosely based on non-file-based languages such as Xerox's Smalltalk and Lisp.<ref name="brown" />
 
Their claim is that none of those systems provided either a tiling assistant to avoid fragment overlap or a continuous desktop, and that these omissions, together with choices such as not reflowing code automatically, limited their usability.<ref name="brown" />
 
=== Results ===
 
The CHI paper reports that bubbles significantly improved code understanding time while reducing navigation interactions compared with a widely used IDE, across two controlled tasks.<ref name="ss2">[https://www.semanticscholar.org/paper/Code-bubbles:-rethinking-the-user-interface-of-Bragdon-Reiss/a683b3917bc7d3661bc553ab097138bf2d86f3ef Code bubbles: rethinking the user interface paradigm], Semantic Scholar.</ref>
 
The ICSE quantitative evaluation found developers could expect to view a sizeable number of functions concurrently with relatively few UI operations, and a qualitative evaluation with 23 professional developers reported a high level of excitement, interest, and perceived benefit.<ref name="ss2" />
 
=== Afterwards ===
 
Microsoft built the paradigm into a shipping product. Debugger Canvas, reported at ICSE 2012 by Robert DeLine, Bragdon, Kael Rowan, Jens Jacobsen, and Reiss, documented industrial experience with the code bubbles approach.<ref name="dblp">[https://dblp.org/pid/r/StevenPReiss.html Steven P. Reiss publication list], dblp.</ref> It shipped as a Visual Studio 2010 Ultimate Power Tool and was later discontinued.
 
Reiss continued the work at Brown, publishing on plugging in and into code bubbles in 2012, integrating S6 code search with it in 2013, and demonstrating visualisations of code bubbles the same year.<ref name="dblp" />
 
=== Relevance ===
 
The interesting part of Code Bubbles is what it treats as the unit of work. A file is a unit convenient for a filesystem. A working set is a unit convenient for a person holding a problem in their head, and the two coincide only by accident.
 
That distinction generalises well beyond code. Most software presents information in the units the storage layer uses, and expects the person to reassemble their own unit by navigating. Each navigation costs the working memory the person had accumulated, which is the cost Code Bubbles measured and removed.
 
The related question is why it did not become the default despite measured improvements and enthusiastic evaluations. The answer is the same one [[Minority Report|Underkoffler]] gave about g-speak: an interface paradigm that requires everyone to relearn how they work faces a switching cost that no per-task improvement easily covers.
 
=== Related Reading ===
 
* [[Douglas Engelbart]]
* [[Mother of All Demos]]
* [[User experience design]]
* [[The Design of Everyday Things]]
* [[Designing Interfaces: Patterns for Effective Interaction Design]]
* [[Frictional Surfaces]]
* [[Information Anxiety 2]]
* [[Envisioning Information]]
* [[The Visual Display of Quantitative Information]]
* [[Everything Is Miscellaneous: The Power of the New Digital Disorder]]
* [[Minority Report]]
* [[Mirror Worlds: or the Day Software Puts the Universe in a Shoebox...How It Will Happen and What It Will Mean]]
* [[Computer Lib]]
* [[Architectural Intelligence]]
* [[Equipotential Space: Freedom in Architecture]]
 
=== External Links ===
 
* [http://www.cs.brown.edu/people/acb/codebubbles_site.htm Code Bubbles project site], Brown University
* [http://www.andrewbragdon.com/papers/p2503-bragdon.pdf CHI 2010 paper], full text PDF
 
== References ==
 
<references />
 
[[Category:Concepts]]
[[Category:UX Terms]]

Revision as of 10:37, 25 August 2026

Overview

Developers spend significant time reading and navigating code fragments spread across multiple locations. The file-based nature of contemporary IDEs makes it prohibitively difficult to create and maintain a simultaneous view of such fragments. Code Bubbles proposes a user interface metaphor for code understanding and maintenance based on collections of lightweight, editable fragments called bubbles, which form concurrently visible working sets.[1]

The essential goal is to make it easier for developers to see many fragments of code, or other information, at once without having to navigate back and forth. Each fragment is shown in a bubble.[2]

Authorship

Developed at Brown University by Andrew Bragdon, Robert Zeleznik, Steven P. Reiss, Suman Karumuri, William Cheung, Joshua Kaplan, Christopher Coleman, and Ferdi Adeputra, with Joseph J. LaViola Jr.[3]

Published twice in 2010. "Code Bubbles: A Working Set-based Interface for Code Understanding and Maintenance," CHI 2010, Atlanta, pages 2503 to 2512.[1] And "Code Bubbles: Rethinking the User Interface Paradigm of Integrated Development Environments," ICSE 2010, Cape Town.[4] A research demonstration appeared at ICSE 2010 volume 2, pages 293 to 296.[5]

The problem

The premise is stated plainly in the ICSE paper: today's integrated development environments are hampered by their dependence on files and file-based editing.[4]

The file is a storage unit that became a display unit. Code that belongs together conceptually, a function and the three functions it calls, is stored in whatever files the language and the project structure put it in, and the editor shows one file at a time. Understanding a call chain therefore requires moving back and forth between locations, and each move discards the previous view.

The papers cite supporting studies on this: how Java developers actually use Eclipse, how effectively developers investigate source code, and path exploration during code navigation.[3]

The interface

A bubble holds a single fragment, typically a function, and is editable in place. Bubbles sit on a continuous two-dimensional surface rather than in windows.

The mechanics described in the paper: a bubble is opened via a pop-up search box; opening the definition of something inside a bubble creates another bubble beside it, and related bubbles are automatically grouped; a large working set can include a bubble stack of references; an overview appears in the panning bar; and hovering gives a preview.[3]

Two design decisions distinguish it from earlier fragment-based systems. A tiling assistant prevents fragments from overlapping, and code reflows automatically to fit the bubble.

Precedents

The authors are explicit about their lineage. Working with program fragments rather than files was explored in Reiss's own Desert environment, and appears in IBM's VisualAge and CMU's Sheets hypercode editor, all loosely based on non-file-based languages such as Xerox's Smalltalk and Lisp.[3]

Their claim is that none of those systems provided either a tiling assistant to avoid fragment overlap or a continuous desktop, and that these omissions, together with choices such as not reflowing code automatically, limited their usability.[3]

Results

The CHI paper reports that bubbles significantly improved code understanding time while reducing navigation interactions compared with a widely used IDE, across two controlled tasks.[6]

The ICSE quantitative evaluation found developers could expect to view a sizeable number of functions concurrently with relatively few UI operations, and a qualitative evaluation with 23 professional developers reported a high level of excitement, interest, and perceived benefit.[6]

Afterwards

Microsoft built the paradigm into a shipping product. Debugger Canvas, reported at ICSE 2012 by Robert DeLine, Bragdon, Kael Rowan, Jens Jacobsen, and Reiss, documented industrial experience with the code bubbles approach.[7] It shipped as a Visual Studio 2010 Ultimate Power Tool and was later discontinued.

Reiss continued the work at Brown, publishing on plugging in and into code bubbles in 2012, integrating S6 code search with it in 2013, and demonstrating visualisations of code bubbles the same year.[7]

Relevance

The interesting part of Code Bubbles is what it treats as the unit of work. A file is a unit convenient for a filesystem. A working set is a unit convenient for a person holding a problem in their head, and the two coincide only by accident.

That distinction generalises well beyond code. Most software presents information in the units the storage layer uses, and expects the person to reassemble their own unit by navigating. Each navigation costs the working memory the person had accumulated, which is the cost Code Bubbles measured and removed.

The related question is why it did not become the default despite measured improvements and enthusiastic evaluations. The answer is the same one Underkoffler gave about g-speak: an interface paradigm that requires everyone to relearn how they work faces a switching cost that no per-task improvement easily covers.

References