XS project ideas

From OLPC
Jump to navigation Jump to search

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

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:

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.

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

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