Summer of Code/Ideas
This is a list of ideas for Summer of Code 2009 projects for OLPC. This is a pool of ideas for potential students to browse to find what they might want to work on; and for developers to use as a place to prioritize and brainstorm about what work would be most useful, or most rewarding.
- Mentors: please note below which projects you are interested in mentoring; or add projects you would be glad to mentor.
- Sugarlabs: this year there is a similar ideas page on the Sugarlabs wiki for Sugar-specific projects. Some ideas below are appropriate for one project or the other. Students with crossover project ideas may apply to more than one organization.
You can find a list of the student project descriptions in Category:GSoC_proposals. Students are encouraged to create a wiki page for their project proposal and put in that category in order to get feedback from the wider OLPC community.
School Server
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.
Skills: Web app programming, PHP, SQL (PostgreSQL/MySQL), JS, XHTML
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.
Moodle - other projects
For generally interesting projects, see http://docs.moodle.org/en/Projects_for_new_developers - they are of varying relevance to OLPC.
WWWOFFLE
WWWOFFLE is an "offline proxy" for servers that have intermittent connectivity. This covers many School Servers in OLPC deployments...
Skills: C, Linux network programming, autoconf, make
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
Make WWWOFFLE work for disconnected schools
The Wizzy Digital Courier project has some useful patches that extend WWWOFFLE to support sneakernet.
- Review and apply the patches
- Work on them so that they are acceptable to merge into the WWWOFFLE project proper?
- Integrate the workflow with Moodle and the XS, so that
- User management is done via Moodle
- USB key handling integrates with the automatic USB key handling on the XS
- Logs, status, pendind requests and other reports are visible in Moodle
- Alerts ("content you requested has arrived!") appear for Moodle users
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
Skills: C, Linux network programming
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
Skills: Erlang, parallel programming, network programming
SchoolTool - Proyecto Alba
It would be nice to add an administration tool for the school principal / teacher to manage courses, grades. grade cards, student lists, etc....
SchoolTool - Only for ubuntu, we should check if we can integrate it, but it should not be an issue. Proyecto Alba - Only spanish up to where I know.
Interface design
Admin interface : The school server needs a graphical admin interface to configure some aspects of the services it offers, and to help diagnostics. Mentor: Martin Langhoff.
- Hi! My name is Andrey. I want to join your project and help with school server. Grad. XS AdminUI.
Auto memory/disk tuning
Automagic tuning: The school server may have different memory and disk relationships. Provide alternative configurations for key daemons (apache, postgresql/mysql, ejabberd, java-based daemons, etc) for different memory sizes. Learn a lot about scalability and performance tuning for servers. Provide a web based report of memory and disk traffic. Mentor: Martin Langhoff.
Package web-based elearning
If you are familiar with good e-learning web applications that are aimed towards users from kindergarden to 16 year-old teenagers, propose an app to customise and package for the school server! Mentor: Martin Langhoff.
Hello Mentor, Myself K.Vikranth Reddy I am studing B.Tech Final Year And Iam Interested in Involving myself in Your Project.Presently i am working on my project Titled Online Virtual Training System which is an elearning project. Iam doing the project using PHP and MySql
- I want to take part in this project and i want to share my ideas with you.
my mail id is vikranthreddyk@gmail.com ThanQ, vikranth reddy
Networked Blogging Project
- Uruguay is developing an Educational Blogger Project. This needs design, coding and configuration of Moodle (moodle.org) and drupal.
- See further definition below, and requirements at Requiremientos_Para_XO.
Core Software
Extending Gnash
Extend Gnash to read more data formats, in particular those at OLPC.tv, and Mary Lou Jepsen's presentation at the Greener Gadgets Conference. Integrate Supat's SSS code and move it upstream.
Speech Synthesis integration
Integrate speech synthesis with all activities, not just Speak, and provide for karaoke coloring. See Mokurai's article on adapting Same Language Subtitling for literacy to the XO, and Hemant Goyal's work on this last summer of code.
Desirable Features for Sugar Speech Synthesis Plugin:
- Provide Sugar Speech Synthesis Configuration Management Tool
- Karaoke Style Coloring in Sugar Environment
- UI for configuration Control
- Accent gets set on the basis of locale
Expressed interest from XO schools
Java
Package and integrate the IcedTea open source bootstrap of OpenJDK Java with browser plugin for the XO. Deliverables would include:
- Binary, source and rpm dependencies for icedtea and icedtea browser plugin
- Java enabled xo os image
- Integration of packages into autobuild branch
Print Support
Print support in Sugar would be useful in many scenarios. The ideal project deliverables would include
- Integration of a printing infrastructure (CUPS ??) into the XO-1 software images
- Modification of Sugar Control Panel to set up the printer (add/select default printer?)
- Modification of at least one activity (Write ?) to support printing
- Making a printing activity, that follows sugar GUI guidelines?
- I am highly interested in working on this project. Would the project leader mind contacting me at bmw.stx@gmail.com?
JavaScript-Python Communication
JavaScript Python Communication through the following strategies: PyXPCom, hulahop, and xulrunner.
- Hi, I am Preeti, from New Delhi. I would like to get myself involved in this very interesting aspect of the OLPC software development. I have jotted some of my views on the same at: User_talk:59.178.99.172
Regards, Preeti
Mono/.NET
The use of Mono could really enhance the number of Sugar developers due to the huge existing .NET community. Thanks to Torello Querci, developing a Sugar activity in Mono is already possible using the Mono/Sugar bindings Sugar.dll (more here).
The idea for this GSOC project is to greatly enhance this binding:
- Better integration with the Sugar look & feel,
- Binding to telepathy API,
- WinForm compatibility,
- MonoDevelop integration,
- ...
Contact http://wiki.laptop.org/go/User:llaske if you're interested by this project.
Updates to core Activities
Port Browse to WebKit
[Webkit] is somewhat lighter than the current Xulrunner engine powering the Browse activity. Porting Browse to use Webkit might see some performance benefits.
- I would like to know further about this project and if there is an expected port such as the Qt version or some webkit derivative in mind. Also on expected skills of the student. I have high interest in talking to someone and cannot find an e-mail submission page, I see most people just commenting here. A (very) little about me: I am currently a Junior/Senior student with C++ and Java programming skills. e-mail: jlukas79@gmail.com
Enhancements for Measure
- Feed generated data from simulations or the software synthesizer into the Measure activity.
- Add sensor support to Activities such as TamTam that would allow musical pitch, tempo etc to be controlled by sensors
- Make a video context analogous to the audio context that currently exists. Along with showing a real time video stream, show RGB values, a histogram etc.
- Make triggered logging possible (similar to triggered logging in Oscilloscopes)
- Some more immediate plans here Measure/Plans
- Sensor based input into games. For example control a game character based on light intensity
Make activities programmable
More generally, support snap-together programming of XO activities in the manner that Turtle Art and Etoys provide internally.
Book and Document readers
- A port of Calibre to the XO would be very interesting.
- Improvements to our fbreader activity would be welcome and widely used.
- Potential mentor: unmadindu 12:49, 16 March 2009 (UTC)
Collection generators
Scripts for generating collections out of Gutenberg, IACL, and other libraries are needed for [re]generating collections at the Internet Archive, and automatically producing xol bundles and other useful formats out of existing sources.
Activities and more
see the Activity ideas page
Sugar packaging in other distros
see the sugarlabs project page