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)
soc@lists.squeakfoundation.org