XS project ideas
Moodle
Moodle is a very popular Course Management System / Learning Management System. It is the "main face" of the webbased tools that the School Server offers. More info on moodle
- http://moodle.org/ - in the 'Using Moodle' course, the 'General developer forum' is where developer discussions happen.
- http://docs.moodle.org/ - this has a sizable section for developers.
Work on Moodle is split on
- Making Moodle better for young children. Moodle is originally designed for tertiary and secondary levels. Improving the UI for children is a priority.
- Making moodle better for learning based on Social Constructivism practices - see http://docs.moodle.org/en/Philosophy
- Integrating Moodle with other tools
To understand some of these tasks, you probably need to install and explore Moodle:
- http://docs.moodle.org/en/Install
- http://docs.moodle.org/en/Teacher_documentation - it is important to think as a teacher and as a student when exploring moodle.
Moodle: What you paint is what you get
Most of online (webbased) interaction is via forms -- a text-heavy approach. Young children find it easier to paint and draw.
If we can switch the WYSISWYG HTML editors in forms with a paint here facility, then we make webbased tools easier for them.
- Additional notes at http://wiki.laptop.org/go/XS_Moodle_design#What_You_Paint_Is_What_You_Get_editor
- An initial exploration of existing tools http://moodle.org/mod/forum/discuss.php?d=110902
Technical notes:
- Moodle is using a WYSIWYG editor called TinyMCE - that is a possible integration point.
- Implementation idea: write a vector-based "paint" facility in JS that runs in the browser.
- Implementation idea: write a vector or bitmap paint facility in Flash, bearing in mind that OLPC ships Gnash instead of Adobe's Flash.
- Performance matters - the OLPC XO has a relatively low power CPU, so image editing has to be tuned / optimised to be responsive.
The complexity of this project is high.
Moodle - blog-style course format
In Moodle, the most important page is the "course page", which acts as a hub in a hub-and-spoke navigation strategy. The structure and user workflow with the page is controlled by a pluggable bit of code, called a course format.
The default course format is good for courses where the teacher can plan ahead. For day-to-day teaching, as is often done in primary schools, a different format is preferrable. The goal of this project is to deliver a blog-style day-to-day format as described here: http://wiki.laptop.org/go/XS_Moodle_design#Topics-style_course_format.2C_geared_for_a_year-long
The complexity of this project is medium-low.
Moodle - simpler workshop module
The 'Workshop' module in Moodle is excellent from a Social Constructivist point of view, and we would like to be able to use it for OLPC.
This module is specially nice in that helps a teacher ask students to perform an open ended task, and then get students to assess and help eachother.
It suffers however of 2 problems
- The code is old and unclear.
- It is overburdened with options.
A newly implemented module that implements a subset of the Workshop functionality and follows current coding practices would be hugely popular with OLPC users and Moodle users.
The complexity of this project is medium-high.
wwwoffle
Sneakernet support
• integrate wwwoffle with scripts to support sneakernet.
Speak rproxy
• add "rproxy" extension support to wwwoffle
rproxy
rproxy is a proof-of-concept proxy developed by Andrew tridge Tridgell (of Samba and rsync fame). It extends the HTTP protocol with rsync-like smarts. This has an enormous impact for users on bandwidth constrained connections.
The existing rproxy implementation works, and is good for simple single-user usage. For OLPC we are looking for a more mature HTTP proxy that is reliable, fits in limited memory, etc.
More about rproxy
- Project page - http://rproxy.samba.org/ - note that rproxy works fairly well today for a single user. It is enlightening to try it out, and sniff the http traffic.
- Andrew Tridgell discussing rproxy - unfortunately, he has not had the time to work actively on it, but has promised to help and support anyone working on it: http://www.builderau.com.au/news/soa/rproxy-set-for-revival-/0,339028227,339286817,00.htm?feed=pt_lca
rproxy: revive and polish
The rproxy code can be taken forward. From conversations with Tridge, the situation is as follows
- The "stable" branch of rproxy works well for single user, it would need to...
- learn how to "stream" content through -- currently it only serves content to the client once it has completed fetching it
- to be ported to use the current librsync (as its built against an old librsync)
- tested and tuned for multi-user environments, probably memory usage needs to be limited somehow
- tested with current HTTP services -- as it was created and used in an era before AJAX and the likes of Gmail
- there is an incomplete "development" branch of rproxy with an incomplete port to a more modern librsync
rproxy: integrate into a mature http proxy
Take rproxy as a reference implementation, and add support for the HTTP extension it implements to
- Apache's mod_proxy/mod_cache
- An interesting subproject would be to implement a "filter" style module. Martin Poole outlined it here, though at the time Apache 1.3.x did not support filters.
- Squid
- Currently, Squid has severe memory footprint issues that make it unsuitable for long-term usage for OLPC. Work on Squid would necessitate resolving these issues.
ejabberd - Erlang
scope docs platform/lang workflow
Wikipedia / Wikislice
scope docs platform/lang workflow