Group Wikis: Difference between revisions

From OLPC
Jump to navigation Jump to search
No edit summary
(Removing implementation dependence on Group View screen)
Line 1: Line 1:
This is a Google Summer of Code 2008 proposal, any and all feedback is greatly appreciated.
This is a Google Summer of Code 2008 proposal, any and all feedback is greatly appreciated!

==About==
==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. Each group will have a wiki page auto-generated for it, this page will be accessible via the group's “Group View” screen through a button on the frame (see [[Group Wikis#Dynamic Group Formation|Dynamic Group Formation]] below).
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. Each group will have a wiki page auto-generated for it, this page will be accessible via the group's “Group View” screen through a button on the frame (see [[Group Wikis#Dynamic Group Formation|Dynamic Group Formation]] below).
Line 14: Line 13:
: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.
: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?====
====Why not a contextual chatting interface like the [[OLPC_Human_Interface_Guidelines/The_Laptop_Experience/Bulletin_Boards|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. You can only display as much information as can fit on a single screen with a contextual interface, this just won't work 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.
: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 from what I've heard, the school server comes with MediaWiki installed.
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==
==Implementation==
====The Wikis====
====The Wikis====
:Ideally this feature would be integrated directly into the [[OLPC_Human_Interface_Guidelines/The_Laptop_Experience/Zoom_Metaphor#Groups|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 just 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.
:The wiki pages will be generated, viewed, and edited through [[MikMik]]. When a user pushes the Wiki button on the group view screen, MikMik will attempt to open the groups wiki page. If the page does not yet exist a new page will be created for the group. This means that each group will need a unique identifier, so that the program will know where to look for the group's page if it already exists. The simplest way to do this would be to have the wiki page's name be the same as the unique identifier, but this isn't very user friendly. So, say the unique identifier was “abc123” one thing that could be done is a page named “abc123” could be generated, and the user could be prompted to give a more suitable name for it, and then “abc123” could be made into a redirect to that new name.


:Potential challenges:
: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?
::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 [[Talk:Group_Wikis|discussion page]].)
====Dynamic Group Formation====

[[Image:GroupWikiInvite.png | right | Group Invite Mock-up]]
:Based on: [[OLPC_Human_Interface_Guidelines/The_Laptop_Experience/Zoom_Metaphor#Groups | Zoom Metaphor#Groups]], I believe this is something which is planned, but has not yet been implemented. Users should be able to select peers in their neighborhood view and invite them to join a group. The user should also have some means of visualizing the groups s/he belongs to through the Group View screen, and a way of selecting a group to “zoom in” on it. As of yet, I do not believe the ability to belong to multiple groups has been implemented. It appears that the group view screen currently functions more like a friends list than like what was defined in the Human Interface Guidelines. Working on this by myself would almost certainly take the entirety of my Summer of Code time, so I'm hoping that there is either work already being done on Groups or that other people would be interested in working on it. If not, I would be willing to revise my proposal to work on Groups instead.


==Schedule==
==Schedule==

Revision as of 17:36, 5 April 2008

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. Each group will have a wiki page auto-generated for it, this page will be accessible via the group's “Group View” screen through a button on the frame (see Dynamic Group Formation below). This idea is in a way very similar to the Bulletin Board the only real 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 just 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.