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.
Moodle - offline implementation using GoogleGears
See http://moodle.org/mod/forum/discuss.php?d=107920
The complexity of this project is medium-high.
WWWOFFLE
WWWOFFLE is an "offline proxy" for servers that have intermittent connectivity. This covers many School Servers in OLPC deployments...
Teach WWWOFFLE to speak rproxy
See the rproxy notes on this page. This project is to add support to WWWOFFLE for the HTTP extension that rproxy implements, so that WWWOFFLE can talk with an "upstream" rproxy.
Most intermittent connections are also very low bandwidth connections...
Teach WWWOFFLE to support asynchronous searches
See http://www.nilshettich.com/olpcblog/?p=29
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
The complexity of this project is high.
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.
The complexity of this project is high.
ejabberd - Erlang
ejabberd is the leading Jabber/XMPP server. The OLPC School Server uses ejabberd for its integration with the XOs.
Some draft project ideas - poke Martin for more...
- Extend mod_ctlextra to provide more control
- Integrate mod_xmlrpc to expose the same facilities as mod_ctlextra, write a PHP library that wraps around all the mod_xmlrpc functionality
Wikipedia / Wikislice
scope docs platform/lang workflow