[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