Group Wikis
This is a Google Summer of Code 2008 proposal, any and all feedback is greatly appreciated!
About
I would like to implement a feature which would allow groups to be able to quickly and easily create wiki-style pages for the facilitation of collaborative work. A group, in this sense, could be: an entire class, several students working on a project, teachers planning the curriculum, friends collaborating outside the classroom, etc.This idea is in a way very similar to the Bulletin Board the difference is that users of a Group Wiki interact through wiki pages (most likely via MikMik) rather than a contextual chatting interface. I should note that Group Wikis are not intended to be a replacement for the Bulletin Board idea, there are appropriate times for both.
Use Case
Four students, Ally, Bill, Chris, and Dana, are working on their science fair project about ocean waves. Ally starts the group and invites the other students, she also types up a short description of the project and a time line showing when things need to be finished. Bill gets on the wiki and notices that Ally forgot to mention that a draft of their paper is due next Wednesday, so he adds it to the time line and also posts a link to a great website he found. Over the next few days the students share their notes and resources through the wiki and discuss what information should go into the paper. Chris and Dana, who have agreed to create the poster, add pictures of waves which everyone comments on to decide which should be used. Ally and Bill, who wrote a draft of the paper in a shared write activity, add it to the wiki for the others to see. They're able to fix mistakes and add new information right on the wiki page, if they decide they don't like a change that was made they can revert to an earlier version using the wiki's history.
Why Wikis
One might imagine that the functionality I'm describing could be implemented with traditional bulletin boards, or with something like contextual chatting interfaces, so why bother with the overhead of wikis?
Why not traditional forum-style threads?
- There are a few things wrong with using forums for collaboration. For one, forums are organized temporally, so to get a good idea of what's being discussed you have to read every post from the start of the thread to the end. Also, collaboration is not just discussion, students will want to do things like draw up lists of goals which can be modified over time This is trivial with a wiki, but really doesn't work with forums.
Why not a contextual chatting interface like the Bulletin Board?
- Contextual chatting is very nice for quick notes, and for working in real time with others, but they're very limited in a number of ways. For example, it's not obvious how one should display more information than can fit on a single screen, this could be a problem for long projects with complex goals which need to be described at length. Also, they lack the versatility of wikis for dealing with changing content (such as, again, a list of goals). Lastly, because wikis are capable of doing version control, they're much better suited for dealing with individuals who have sporadic connectivity.
While wikis are less intuitive than the other options, they provide of level of control and scalability which is far superior to both. Plus, there are a number of wiki applications already available, such as MikMik and MediaWiki.
Implementation
The Wikis
- Ideally this feature would be integrated directly into the Group View screen, unfortunately this is not yet possible as Groups have not been implemented and may not be for some time. However, there are several other ways in which this could be implemented. The most viable, I believe, is to extend MikMik to include a simple, yet intuitive, group management system. This could be done using almost entirely existent features. A “Groups” namespace could be created where all of the Group pages are held. To start a group you simply create a page within that namespace -- tools should be created to make this process as simple as possible. After the page has been created other people can be invited to the group by simply sharing the MikMik activity. Any time that a user browses to the page of a Group (to which they do not already belong) MikMik should display a notification asking them if they want to join the group (or perhaps a button on the frame can serve this purpose). Other potential features include: a listing of the groups one belongs to, and an easy way to manage that list. Both of these could be accomplished using the wiki itself and would not require substantial modification of the code base.
- Potential challenges:
- We'll want to delete unused group pages after a while so as to prevent bloat and namespace crowding, how do we determine when to delete a page?
(An earlier version of this proposal discussed integrating the wiki feature into the group view screen, those sections have been moved to the discussion page.)
Schedule
Date | Goal |
---|---|
April 14 - May 26 | Get better acquainted with the community and the software. During this period I'll familiarize myself with the code base, and determine exactly how to go about implementing Group Wikis. |
May 26 | Programming begins |
Mid-Late June | By this point I should be able to create a group, and a wiki page for that group by hand. There to be little or no actual UI by this point, but I will fully understand what the UI has to do once it is implemented. |
Mid July | A rudimentary UI should be in place by this point. Autogeneration of wiki pages should be complete, and I should be able to create a group, by some means, within sugar even if it's not pretty. |
August 6 | All features that will be present in the final version should be in place by this point. |
Aug. 6 - 18 | Testing and bug fixing. |
About Me
I'm a student at Hampshire College where I am studying cognitive science in relation to computer science. Students at Hampshire have a tremendous degree of freedom not just in what they study, but how they study it, and for me that primarily means working on self directed projects. I design and implement software (and recently hardware) projects on a regular basis and I'm very comfortable doing so. Some of my recent projects include a wiimote controlled MIDI synthesizer, and an EEG signal classifier which utilized genetic programming techniques. I've worked on open source projects before (though none nearly as large as Sugar), including a few which I initiated (such as, http://sourceforge.net/projects/pygame-console/), so I'm comfortable with the tools involved.
Why OLPC
- I truly love open source; there are very few things I believe in more than the vision of free culture as a liberating, empowering force. I had, of course, heard of OLPC before Mako Hill came to Hampshire (his alma mater as well) a few weeks ago to talk about it, but at the time I still thought that it was just a laptop project. I didn't know anything about the project's commitments to education, freedom, and open source -- hearing about those things really impressed me. I'm inspired by what the OLPC project is trying to do, and I would love to be a part of it.
Misc
I would be able to travel to Boston at some point during the summer.