The descriptions are relatively sketchy and the details given are not hard requirements but meant to get you thinking about possibilities. Each project can be done by one or more students. If you have specific interests in the general area, we can probably create a project around these interests.
It would be satisfying if the
project you do could turn into code people actually use. This implies picking
an application for which there is no commercial alternative, ruling out, for
instance, a wikipedia or a collaborative Google-like spreadsheet
or a Writely-like word processor. In fact, these
three systems can be the basis for picking projects. These tools allow us to
create shared information asynchronously or synchronously. What does this
information consist of? Traditional documents? Proably not, as people would want to use traditional tools
such as Word, Excel or
Why not change existing single-user applications to support collaboration? As a rule that is difficult, because software does not extend as well as advertised. A previous student has however extended Open Office word processor and spreadsheet to support rudimentary collaboration. It is possible to extend this system. Also, it is possible to extend the Eclipse programming environment, which seems to very amendable to extension. You can look into other open source software to make collaborative.
Creating a usable application is difficult, collaborative applications are even harder because they are distributed. You are encouraged to use two infrastructures developed by my research group which, given Java objects, automatically create user-interfaces of them and support (synchronous and asynchronous) sharing of them. Using these systems will give you familiar with collaboration infrastructures and relieve you from the implementing tedious details. They are fairly robust at this point and I am willing to fix any bugs you find. These infrastructures do not support all aspects of collaboration – in particular, collaborative undo and locking. You can implement these features manually in your application if you have time. I am also happy to work with you in extending the infrastructure to support the missing features, in case you are more interested in infrastructures rather than specific applications.
The intellectual challenge in your project will be to (a) survey alternative systems developed elsewhere, (b) develop, implement, and possibly evaluate a design that improves on the state of the art, (c) and write a paper and give a talk on the