Group Wikis

From OLPC
Revision as of 15:21, 7 April 2008 by 66.251.24.190 (talk)
Jump to: navigation, search

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. Given this, as well as the fact that wikis are becoming more and more common on the internet, we can likely assume that students and teachers will familiarize themselves with the wiki format and that the comparatively steep learning curve of wikis will be counteracted by their prevalence.

Implementation

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.

Ideally this feature would be integrated directly into the group view screen, unfortunately this is not possible as Groups have not yet 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. If the MikMik developers do not want this functionality, a separate activity could be built with the sole purpose of managing groups.

Creating a Group

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.

Group Membership

The creator of a group should be added to it automatically. Other users should be able to join a group in one of two ways
Case 1: When a user browses to a page in the group namespace they should be presented with the option of joining that group. A button in the activity's toolbar would be appropriate. This button should always be present, but should be disabled when a users is not on a page in the Groups namespace.
Case 2: Users should be able to join a group by invitation. Ideally this would be done with notifications, but the creator of a group could also just share her/his activity and invite others to it through the neighborhood screen.

Managing Groups

There should be a screen, very similar in appearance to the Journal, which lists the groups one belongs to and has options for viewing group pages, removing yourself from a group, marking a group as a favorite, and inviting new members to the group.

Misc. Challenges / Implementation questions

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? Should a group be deleted if it has no members?
Should there be a way to make groups invite only? Might this be detrimental to the read-write culture which wikis inspire?

Schedule

Date Goal
April 21 - 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 may 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. Auto-generation of wiki pages should be complete, and I should be able to create a group, by some means.
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 (such as git). I have extensive experience with Python, PHP and Java; I'm also comfortable with C, Common-Lisp, and a number of other languages. I've been running Linux for several years now and have at one point or another written applications with many of the libraries which Sugar uses, such as GTK.

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.