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.

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

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

scope docs platform/lang workflow

Wikipedia / Wikislice

scope docs platform/lang workflow