[SoC] Application: collaborative development

Benjamin Schroeder benschroeder at acm.org
Mon Mar 26 23:40:17 UTC 2007


Hi everyone,

Coming in just under the wire, I have submitted an application to do  
the "collaborative development" project proposed by Ralph Johnson.  
I've copied the text at the end of this mail, although I think it is  
now unfortunately too late to revise it. :)

Benjamin Schroeder

ABSTRACT

The Croquet environment, built on top of Squeak, provides a rich 3D  
space for collaboration. Squeak has good tools for browsing and  
editing source code, but none of these are available inside Croquet.  
We propose to develop Croquet versions of the Squeak programming  
tools, which could then be shared for collaborative development.  
Development sessions, including sound and video, could be recorded  
for later viewing. This would be especially useful for creating  
demonstrations for use in teaching.

PROPOSAL

It is becoming more and more popular for people to collaborate on the  
development of computer programs. An open source project might  
involve contributors from around the globe; two people in the same  
room might choose to work in a "pair programming" style.

Furthermore, it is often useful to understand how a program was  
developed. A demonstration can give insight into a technique's  
particulars, and into the "whys" of the technique, in ways that a  
static presentation of the end result cannot.

One of Squeak's traditional strengths has been its flexible and  
powerful programming tools: browsers, inspectors, and workspaces.  
However, these are meant for use by a single person, or by a small  
number of people at one workstation. Croquet is built on top of  
Squeak and provides a rich environment, with 3D graphics and audio,  
for multiple people. We propose to develop versions of the standard  
Squeak programming tools for use inside Croquet.

Because of the nature of Croquet, this would enable basic  
collaboration between even geographically distributed groups.  
However, it should also be possible to record collaborative sessions,  
both video and audio, for later playback. This would be especially  
useful for creating demonstrations for use in teaching. It is  
possible that, depending on the implementation, these demonstrations  
could also be paused at any point, allowing a student to explore  
directions not present in the original playback.

In the future, this idea could be extended to support other forms of  
playback for collaborative development. For example, a developer  
could record code comments that showed different alternatives that  
were tried, or why different changes were made over time. A reviewer  
could browse through code, making audio comments and marking things  
up as she went.

IMPLEMENTATION NOTES AND ROUGH SCHEDULE

There are several implementation issues to consider. First, the look  
of the shared tools: how will they be presented in the Croquet  
environment? Perhaps more importantly, where will the code that is  
being edited reside?

Traditionally, Squeak code is edited inside a local, running image,  
and modifying system classes modifies the behavior of that image.  
Will editing the shared code result in changes to the system of each  
participant? Alternately, will the shared code act as a shared, but  
separate model within the Croquet environment? The latter option  
seems simpler.

There are also issues to consider regarding recording. I intend to  
explore TeaTime, Croquet's distributed object model, to see if there  
is a way to record a session at a low level; this could enable  
playback with the possibility of interactivity. However, if this  
proved impractical, fixed-viewpoint video and audio could be recorded.

The Summer of Code lasts approximately 12 weeks. I intend to approach  
the implementation in an iterative fashion, with an end-to-end system  
(shared tool, recording, playback) released every three weeks. This  
approach, similar to the release strategy of Extreme Programming,  
will both provide early feedback on implementation strategies and  
make it likely that, even in the case of delays, some useful system  
will be completed.

Weeks 1-3

     Learn about Croquet distributed object model.
     Review implementation of standard Squeak tools.
     Create shared Squeak object system server.
     Present Workspace for that server in a Croquet portal.
     Recording and playback for Workspace.

Weeks 4-6

     Inspectors, with recording and playback.

At midterm, the system should be able to work with individual  
objects, allowing exploration using standard system classes. However,  
editing of classes and addition of new classes will not be possible  
until the Browser is completed in the remaining weeks.

Weeks 7-9

     Browsers, with recording and playback.

Weeks 10-12

     Cleanup and documentation.
     Additional recording scenarios, if time permits.

RELATED WORK

The Self programming language included a multi-user environment  
called Kansas. Kansas was, in the words of its creators, "a large  
flat space with multiple people in it", that is, a large shared  
desktop; it supported collaboration in 2D. [http://web.media.mit.edu/ 
~lieber/Lieberary/Softviz/CACM-Debugging/Kansas/Kansas.html] A  
similar environment, Nebraska, was created for Squeak. [http:// 
wiki.squeak.org/squeak/1356]

BIOGRAPHICAL INFORMATION

I am a Ph.D. student in the Computer Science and Engineering  
department of The Ohio State University. I am interested in software  
techniques and new media to support creativity and learning, and in  
the power that ideas from computing bring to creative work and  
thinking in general.

I have extensive experience working with Squeak, both professionally  
and in open source projects. I wrote the Squeak/.NET bridge, which  
allows .NET objects to be used from Squeak; this is useful both for  
exploration and for integration with Windows libraries. More  
recently, I worked on a Self-style prototype system, Marmalade, and a  
hypertext workspace, Zest; I presented these at the LL4 workshop  
(http://ll4.csail.mit.edu).

However, I have little experience with Croquet, and hope that this  
project will give me a chance to learn about it. I am also hoping to  
learn more about what works well, and what doesn't, when people work  
together in a shared virtual space.


(This proposal is based on a project idea proposed by the Squeak  
mentoring organization: http://wiki.squeak.org/squeak/5941)



More information about the Soc mailing list