Development Team/Project Ideas

About

This is a list of project ideas. For now the focus is on giving GSoC students an idea of the kind of thing we're looking for. It also includes dumping ground for less-explicitly-explained crazy ideas at the end.

  • See http://wiki.laptop.org/go/Category:GSoC_proposals for last years' OLPC applications to GSoC. A quick scan indicates that around 80-90% of these would have been appropriate Sugarlabs applications if Sugarlabs had existed at the time. The other 10-20% would still be OLPC applications, because they involve either software for the XS (school server) or something specific about the XO hardware.

General Priorities

See the ongoing discussion of priorities on our mailing list. You may find new project ideas in that thread, too.

(relatively) Well-explained ideas (follow template just below)

Template

A quick explanation of the idea

  • Priority for Sugar: Low/Medium/High
  • Difficulty (as a GSoC project): Easy/Medium/Advanced
  • Skills needed: Experience with WikiCode and copy-paste.

Core Software

Speech Synthesis integration into Sugar

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.

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
  • Priority for Sugar: Medium
  • Difficulty (as a GSoC project): Advanced
  • Skills needed: Experience with GTK, decent Python ability, ability to integrate with existing code.

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?
  • Extra credit: integrating a server, including permissions and quota management, into the XS image.
  • Priority for Sugar: High
  • Difficulty (as a GSoC project): Medium-high
  • Skills needed: Python programming, API design, some communications

Sugar Toolbar submenu support

The Sugar Human Interface Guidelines have a toolbar design that includes submenus (See Toolbar designs). The project would be to extend the existing Toolbar widget to include this new feature and then to work with a few Activity developer to incorporate the new design into their Activities. Possible candidate activities include Paint and Turtle Art.

  • Priority for Sugar: Medium
  • Difficulty (as a GSoC project): Easy-Medium
  • Skills needed: intermediate GTK and python skillz

Versioned Datastore

  • To add Version support for Journal / DataStore: Start with (old) Olpcfs and (newer; less-documented; based on an RCS backend and a relatively small amount of fuse magic) olpcfs2. Get Sugar to mount OLPCFS2, a working virtual versioned filesystem, and keep its datastore there. Get datastore to create a new version for each save (automatic or manual). Modify journal UI to use these versions, fork from old versions, etc. Keep with the same name / tags, create a branch if metadata was changed. Allow the user to access "older" versions (Keeping and "old" version will create a branch) and view ancestry (tree of branches).

We would not expect a GSoC project to be necessarily ready to check into our trunk. For instance, you could avoid facing the issue of pruning old versions for disk space, or not have a converter for existing datastores. However, it should work as a proof-of-concept with a variety of activities.

  • Priority for Sugar: High
  • Difficulty: Hard
  • Skills needed: FUSE/file systems; Python UI; Packaging and building.

Toolkits / Frameworks (for activity developers)

AJAX Sugar

  • Integrate some style of AJAX applications (for instance, Titanium-made apps) into Sugar. JavaScript Python Communication through the following strategies: PyXPCom, hulahop, and xulrunner.
  • Ideally, develop a demo activity which could be used as a template for sugarizing AJAX activities.
  • Priority for Sugar: Very High ("never bet against the browser")
  • Difficulty (as a GSoC project): hard
  • Skills needed: Javascript/Python integration (PyXPCom, hulahop)

SWF Sugar

  • Integrate SWF (Flash/Gnash) applications into Sugar.
  • Ideally, develop a demo activity which could be used as a template for sugarizing Flash/Gnash activities.
  • Priority for Sugar: Very High ("never bet against the browser")
  • Difficulty (as a GSoC project): hard
  • Skills needed: SWF/Python integration

Improve Develop activity

There are several improvements that would make the Develop activity a more attractive IDE. Any ONE of these would be a good GSoC project.

  • Make a WYSIWIG GUI editor, like Glade. Note that GTK natively supports loading Glade-format interface definitions, although there would be some work involved making the Sugar interface elements available through this method.
  • Integrate Sugarbot and auto-testing facilities.
  • Integrate a debugger, based on pdb or other.
  • Priority for Sugar: Medium-High
  • Difficulty: Medium - Hard
  • Skills needed: Good python skills.

Stand-alone activities

Improved Read activity

Use Gecko to implement a reader for epub format ebooks. This is superior to PDF because such books can be reflowed to better fit the screen and user preferences. Also, (although it would break the standard) it would make it very simple to include AJAX-style active features to books.

Extra credit if you support textual and graphical annotation. Deployments have also asked for a page-turn animation.

  • Priority for Sugar: High
  • Difficulty (as a GSoC project): Medium (w/o annotation); very hard (w/annotation)
  • Skills needed: Strong Javascript/DOM skills, some interlanguage integration (Python/Javascript), ability to adapt Read activity's communications code (Python).

KDEEdu

Sugarize any KDEEdu activity, especially the ones which have no corresponding Sugar activity. This probably means recoding the C to use GTK instead of QT and to use Sugar conventions.

  • Priority for Sugar: High
  • Difficulty (as a GSoC project): easy-hard
  • Skills needed: C/C++, GTK.

Educational Toolkit

Either based on the existing educational toolkit, or starting from scratch, enable XO use in classroom scenarios. Such scenarios could include

  • Teacher shows slides, reproduced on child's screens
  • Teacher asks questions - either pre-prepared or on-the-fly
  • Students give answers via collaboration
  • Teacher or student chooses - explicitly or randomly - an answer for further discussion
  • Students split in groups and go from their individual answers to a collaborative answer
  • Teacher can review all answers later
  • Teacher gives individual or group feedback (offline) which will be shared with appropriate students when they come online
  • Teacher checks what's on a child's screen - (experience on other platforms shows this "look over shoulder" ability reduces goofing off even though it is rarely used.)

The low-hanging fruit on Educational Toolkit is the following:

  • Enable collaboration scenarios
  • Work on the GUI to provide support for multiple types of questions.
  • Add API to make it easy to add new question types.
  • Priority for Sugar: High
  • Difficulty (as a GSoC project): medium-hard
  • Skills needed: intermediate ability with Python and communications

Improved Imageviewer Activity

Implement missing bits in Imageviewer, some of which are

  • Sharing support
  • Basic image effects support (grayscale, sepia effects, colorize, etc)
  • Exif support

There are more things that can be implemented, but the above are the basic minimum one should try to implement.

  • Priority for Sugar: High
  • Difficulty (as a GSoC project): easy-medium
  • Skills needed: Python, GTK. the Sugar collaboration framework

Etc., Etc.

It should not be hard at all to imagine educational activities or games which would be useful for primary or secondary school education. Let your imagination run wild!

  • Priority for Sugar: Medium
  • Difficulty: Medium
  • Skills needed: Python, GTK, Sugar collaboration framework

Brainstorm / unexplained ideas

Core Software

  • Accessibility Support: Sugar currently doesn't have anything available for the visually impaired.
  • Improve automatic testing across the system. This would improve our check-in and build process immensely. Very high priority which nobody is addressing head-on.

Homework turn-in

  • "Homework turn-in" support: Certain metadata on a file causes new versions to be pushed out over the net (via SMTP, rss, or other; note that Moodle already has support for routing from special email addresses to a "location"). No new UI in Sugar, and a trivial amount of changes to Moodle.

Research projects: code exists, but more-or-less unpolished, and it would be awesome to get one of these really working well

  • There is also Journal, reloaded, another research project with real code behind it that is promising but languishing. In this case, the idea is to make the journal "tagging" view transparently compatible with a traditional hierarchical directory structure.
  • bemasc's groupthink, expanded: The idea is to have a data structure which keeps itself in sync across many laptops "behind the scenes", thus providing drop-in collaboration as long as the structure in question provides the needed functionality. The problem is that the existing code is unpolished, and only supports some pretty limited data structures. I have some ideas of how groupthink could be more general. Homunq 00:43, 11 March 2009 (UTC)

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 os image
  • Integration of packages into autobuild branch

(This is just to get Java into the build. Creating an application framework would come later.)

Graphical toolkit

Important work left to do:

  • Give focus feedback by showing a rounded rectangle in gtk buttons and HippoCanvas icons.
  • Implement keyboard navigation in HippoCanvas.
  • Implement accessibility hooks in HippoCanvas.
  • Improve keyboard shortcuts - make them easier to create and implement a UI to make them more discoverable, such as transparent letters which appear when you hold <ctrl>

Frameworks/Toolkits

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 Mono here).

The idea for this GSOC project is to greatly enhance this binding:

  • Better integration with the Sugar look & feel and HippoCanvas,
  • Binding to telepathy API,
  • WinForm compatibility,
  • MonoDevelop integration.

Activities

VideoChat activity

telepathy-python has support for audio and video streaming and has recently gained support for using gstreamer, which means that we could easily do efficient videoconferencing using fully open source codecs.

So a really nice project would be to do a proper Sugar activity for video conferencing.

Language Trainer

A language trainer with text to speech support would be very nice. Something that could start with letters and then teach words.

Thesaurus

Working together with openthesaurus -- someone could create a thesaurus for kids to learn different words (synonyms and antonyms)

Logo Activity

Logo is a computer programming language used for functional programming. It is an adaptation and dialect of the Lisp language; some have called it Lisp without the parentheses. Today, it is known mainly for its turtle graphics, but it also has significant facilities for handling lists, files, I/O, and recursion.
Logo was created for educational use, more so for constructivist teaching, by Daniel G. Bobrow, Wally Feurzeig and Seymour Papert. It can be used to teach most computer science concepts, as UC Berkeley Lecturer Brian Harvey does in his Computer Science Logo Style trilogy. — Wikipedia article on the Logo programming language

There is a "Sugarized" Logo—UCB Logo—but it does not record data into the Journal or use the standard Sugar toolbar.

There are two possible approaches we could take: (1) digging deeper into UCB Logo and (2) working with another Logo, possibly PyLogo.

  • Priority: high as Logo is an important tool engaging children in programming
  • Difficultly: moderate to high, depending upon the approach chosen
    • Integrating Pylogo would be relatively easy, but it is a very limited implementation of Logo that would need enhancing
  • Experience: some Python and C if the UCB Logo approach is taken

FoodForce2 Activity

  • Integrate story board into the game.
  • Make an extensible API to enable educators to add their own storyboards.
  • Add Speech Support into the project.
  • Optimise the speed and efficiency of the game.

Link : http://code.google.com/p/foodforce/

Some ideas for improving Sugar Activities

Activities Site (addons)

  • The activities http://activities.sugarlabs.org, is in need of a serious sugarization, a GSOC project could be giving some love to the dressing and coding of the underlaying activities site (based on mozilla's addons).

More of your ideas

Preeti's list

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:

http://wiki.laptop.org/go/User_talk:59.178.99.172

Regards Preeti