Summer of Code/2007: Difference between revisions

From OLPC
Jump to navigation Jump to search
(mentor section)
(Time waits for no man. Deprecated.)
 
(41 intermediate revisions by 16 users not shown)
Line 1: Line 1:
{{OLPC}}
{{OLPC}}
{{Translations}}
{{Deprecated |The 2007 Summer of Code has ended. [[OLPC_Google_Summer_of_Code| Click here for the 2008 Summer of Code]].}}
Archives: [[/2006|2006]]
Archives: [[/2006|2006]]


This is a page for '''2007 Summer of Code Ideas'''.
This is a page for '''2007 Summer of Code Ideas'''. For Summer of Content ideas, see '''[[Summer of Content 2007]]'''. Content-related activities described below are suitable projects to migrate to the latter's project discussions.


See last year's [http://blogs.law.harvard.edu/ivan/olpc-summer06 internship announcement] for more context. If you have additional ideas, please leave a note on this [[Talk:Summer of Code|talk page]].
See the 2006 [http://blogs.law.harvard.edu/ivan/olpc-summer06 internship announcement] for more context. If you have additional ideas for projects, or comments on the ones below, please leave a note on this [[Talk:Summer of Code|talk page]].




Line 12: Line 14:
== Mentoring ==
== Mentoring ==


If you are interested in mentoring participants, please read the [http://code.google.com/soc/mentorfaq.html mentor FAQ]. Note that both the ability to spend significant time mentoring, and the quality of the students are key to a good return on investment by the mentor, and the learning by the students. Please do not sign up to be a mentor unless you are certain you can meet the obligations of being a good mentor. If you are interested in mentoring, please send mail to [[User:Sj|Sj]] and leave a note below with a linnk to your userpage, where you should describe your bakground.
If you are interested in mentoring participants, please read the [http://code.google.com/soc/mentorfaq.html mentor FAQ]. Note that both the ability to spend significant time mentoring, and the quality of the students are key to a good return on investment by the mentor, and the learning by the students. Please do not sign up to be a mentor unless you are certain you can meet the obligations of being a good mentor. If you are interested in mentoring, please send mail to [[User:Sj|Sj]] and leave a note below with a link to your userpage, where you should describe your background.


=== Interested mentors ===
=== Interested mentors ===
'''Game development'''
'''Game development'''
* Kent Quirk
* Kent Quirk
* Ben Sawyer
* [http://www.DonHopkins.com Don Hopkins]


'''Hardware testing, input options'''
'''Hardware testing, display optimization, input options, alternative power and charging'''
* Mary Lou Jepsen
* Mary Lou Jepsen
* Richard Smith


'''Library design and content assessment'''
'''Library design and assessment'''
* [[User:Jeff|Jeff Keller]]?

'''Tools for local content creation'''
* [[User:Sj|SJ Klein]]
* [[User:Sj|SJ Klein]]

'''Activities'''
* Erik Blankinship?
* [http://jeanpiche.com Jean Piché]
* [http://www.tuquito.org.ar Mauro Torres]
* John Resig?
* John Harrison?
* Mark Tyler?
* Barry Vercoe?

'''User stack architecture'''


'''Mesh application design'''
'''Mesh application design'''
* [[User:AaronKaplan| Aaron Kaplan]]?


'''Distributed collaborative projects'''
'''Distributed collaborative projects'''


'''System Software'''
* [[User:JimGettys|Jim Gettys]]?
* Chris Ball?


= Projects =
= Projects =
== Input and device options ==
== Input and device options ==
=== Vision input ===
=== Using the camera as control device ===
:''Mentor:Kent Quirk''
Vision input similar to itoy concept -- looking at an image, and extracting some shape from this, low res, to use as input to a game.


A nice SoC project would be to build an API to use the XO camera as a game input device. A few ideas come to mind:
''Mentoring:Kent Quirk''


* Detect one or more regions of distinctive color (a ball, a sheet of paper) and track its position as an X-Y input device (possibly even Z if you can take size into account). User could then move the object in space to provide input to a game.
== New power and hardware drivers ==
* Detect motion of the image background so as to infer the motion of the XO itself. It would be a substitute for a tilt-swivel sensor and could be used to play games like Marble Madness and Super Monkey Ball.
'''Low-level development and hardware integration for power applications...'''
* Detect motion of the image background so as to provide simple dead reckoning position tracking. This would be unbelievably crude but it might be possible to use a down-facing camera to make some sort of hide and seek game enabled by the XO.
* Detect faces and/or hands like the Sony EyeToy. Face tracking can provide a nice input model.
* Capture a background with no user involved, then notice the changes as the user moves in the frame to return an outline of the area that's "different" (this is the "Shadow Garden" model).


It's unlikely that all of these ideas would be implemented, but a high quality subset of them would be nice to have.
''Mentoring:Mary Lou''


The API must include Python support, and be capable of operating at "reasonable" frame rates (preferably at least 10 fps).
=== Power aware applets ===

:''Comment:Peter Korn''

Please see "head mouse" products that use a reflective dot pasted onto the person's forehead or glasses that can be more easily tracked by cameras. A good listing of these commercial products can be found at [http://enablemart.com/productGroupDetail.aspx?store=10&dept=20&group=48 enablemart]

== New Power Inputs and Alternative Power and Energy ==
:''Mentor:Mary Lou Jepsen or Richard Smith''
* Explore alternative power inputs for the XO laptop
* Solar and human power input testing - testing our solar panels with the laptops, the human power crank, yoyo, etc.
* Gang charger and power system design for in country gang chargers off of car batteries - finding car batteries readily available in country, optimizing to our gang charger design, getting feedback from user testing in country and making modifications with gang charger supplier(s). Working closely with Firmware team on charging issues"
* Testing batteries and recharge ability for various vendors batteries
* Testing weird power inputs to motherboard and assuring safety for strange inputs

==Display Readability Optimization and Testing==
:''Mentor: Mary Lou Jepsen''
* Testing of display readability and optimization of graphical layouts to enhance display readability. Our display is very different from a standard display and has 3X the luminance resolution compared with chrominance resolution. Studies of display readability in both backlit and sunlight readable mode and the font configuration for optimized readability (with testing on children) are to be done.

==Power aware applets==
:''Mentor:??''
Nutshell: we need some applets that display information better to become better power aware.
Nutshell: we need some applets that display information better to become better power aware.



== User Stack architecture ==
== User Stack architecture ==
: ''Many of these projects still need help''
: ''Many of these projects still need help'' <!--.. ''Mentor:ik?'' -->
Nutshell: We're looking for several exceptional students to spend their summer in Boston, working within the user stack team, building the architecture and application suite which will be the children's primary mode of interaction with the laptop. This suite currently consists of the E-book reader, a distributed wiki notebook, and e-mail and IM clients.
Nutshell: We're looking for several exceptional students to spend their summer in Boston, working within the user stack team, building the architecture and application suite which will be the children's primary mode of interaction with the laptop. This suite currently consists of the E-book reader, a distributed wiki notebook, and e-mail and IM clients.


=== ebook reader ===
<!--: Mentor: johnr?-->
:''Mentor: Don Hopkins''
Work with a crossmark/html book reader, or produce tools for converting to/from this format, to give children annotatable access to the worlds digitized books.

Don Hopkins is developing a PDF based eBook reader for the Internet Archive, using the "poppler" library to draw with Cairo. It will have a simple book reading user interface to search, page, zoom, pan, rotate, arrange pages in various configurations, follow links, navigate the index, etc. It should be fully usable in "book mode" with the game controller. It will be able to browse and search the Internet Archive eBook library, and download eBooks to read. It can use the Internet Archive RSS feeds and web services to get lists and descriptions of books, and search the archive, and download XML meta-data and PDF documents.

Other interesting eBook related projects:

Optimizing eBook activity and libraries for low power and memory consumption.
Optimizing Cairo library image rendering.
Reusing the "poppler" PDF rendering module for other purposes.
Integrate useful PDF generation modules (i.e. PyGraph, ReportLab).
Write some useful components and applications using PDF generation and rendering modules.
Extending Poppler's API to support editing PDF documents.
Developing a simple PDF editor component (for annotating eBooks and editing graphics).

Collaborative shared eBook reading activity: synchronize the document, page and a cursor over the network, so kids can take turns reading an eBook out loud together, with special support for plays and scripts. Each child chooses one or more characters to read, and the eBook parses the text to know who speaks each line, and prompts each child to read their lines by zooming and highlighting the text to read.

=== wiki-notebook ===
<!--:Mentor:Sj? -->
Help improve features on a wikireader -- a notebook for reading, annotating, and editing collaborative texts. Features include online/offline synchronization, distributed versioning and conflict resolution for text, and providing a variety of views and zoom levels for a given document.

=== IM client ===
nutshell: a fast instant messaging client that integrates neatly into many applications. Extensions: connect with an automatic im-translation setup; or with a network of human interpreters. See '''[[Instant messaging challenges]]''' for the complete implications of an olpc IM system.

=== email client ===
nutshell: develop a lightweight email client for children.


== Content creation and review ==
== Content creation and review ==
=== [[Content stamping]] ===
=== [[Content stamping]] ===
: <!-- ''Mentor:jeffk?-->
Nutshell: develop a simple system for building review groups and content reviews of all types of content, and clients for viewing / downloading materials via the Open Library Exchange using these reviews to inform the view.
Nutshell: develop a simple system for building review groups and content reviews of all types of content, and clients for viewing / downloading materials via the Open Library Exchange using these reviews to inform the view.


=== Distributed translation ===
=== Distributed translation ===
: ''Mentor:Sj''
Nutshell: design an online distributed translation system that matches users with language skills to parts of large localization/interpretation/translation projects.
Nutshell: design an online distributed translation system that matches users with language skills to parts of large localization/interpretation/translation projects.


Line 67: Line 141:


==Game development ==
==Game development ==
=== SDL & PyGame port ===
=== PyGame port ===
:''Mentor:Kent Quirk?''
Nutshell: get PyGame's api to work on the laptops, either by porting it to pygtk or by getting SDL to work smoothly on the laptop.
Nutshell: get PyGame's api to work on the laptops.


Details: work to implement the details (that will soon be) laid out in [[PyGame Implementation]] and/or [[SDL Implementation]].
Details: work to implement the details (that will soon be) laid out in [[PyGame Implementation]].


=== Easy Game Toolkit ===
=== Easy Game Toolkit ===
:''Mentor: Ben Sawyer''
Nutshell: build a collection of Python libraries that make it as easy as possible to build certain classes of games in Python.
Nutshell: build a collection of Python libraries that make it as easy as possible to build certain classes of games in Python.


Line 91: Line 167:
== Accessibility ==
== Accessibility ==
=== Vision and hearing tests ===
=== Vision and hearing tests ===
: ''proposer: [[User:Felipecarvalho|Felipecarvalho]]''
Nutshell: It would be good to include tests on bootup that can check the user's vision and hearing.
Nutshell: It would be good to include tests on bootup that can check the user's vision and hearing.


This would help identify if a child needs to be pointed to a doctor to better use the Laptop. This should be easy for a teacher or older child to administer.
This would help identify if a child needs to be pointed to a doctor to better use the Laptop. This should be easy for a teacher or older child to administer.
: original proposal by [[User:Felipecarvalho|Felipecarvalho]]



=== Virtual Magnifying Glass ===
=== Virtual Magnifying Glass ===
: ''Proposer: --[[User:Felipecarvalho|Felipecarvalho]] 2 May 2006 (EDT)''
Nutshell: Improve the magnifier so it can take advantage of X Composite Extension and be more adequate for the Laptop and much more efficient. See [http://magnifier.sourceforge.net/ Virtual Magnifying Glass], &c.
Nutshell: Improve the magnifier so it can take advantage of X Composite Extension and be more adequate for the Laptop and much more efficient. See [http://magnifier.sourceforge.net/ Virtual Magnifying Glass], &c.


Add Dynamic Mode to the software by using the X Composite Extension. This allows the user to see the current desktop contents under the magnifier window. The user can also interact with the window under the magnifier (such as mouse, scroll wheel, keyboard, etc...).
Add Dynamic Mode to the software by using the X Composite Extension. This allows the user to see the current desktop contents under the magnifier window. The user can also interact with the window under the magnifier (such as mouse, scroll wheel, keyboard, etc...).


== System Software ==
: Proposer: --[[User:Felipecarvalho|Felipecarvalho]] 07:12, 2 May 2006 (EDT)
Performance is important, particularly in the UI stack. There is driver work to
be done; a bit of kernel driver work, but extensive X driver work. Cairo can use
further improvement. Our tinderbox can use extension to testing applications. It would be good to repeat the Packard/Gettys X Network performance tests, to see what we're doing on the wire (finding what is being done stupidly in applications, and
what should be optimized). Security expert people can help on both authentication
of the X protocol and its encryption. Furthermore, Eamon Walsh has done work to generalize X's security framework: we need a policy engine suitable for VServer based systems.


General system performance analysis is also welcome, focused on our core applications.
= 2006 project ideas=
<div style="font-size:50%">


Power management and memory management are also possibilities.
== Mentoring ==


== 2006 project ideas==
If you are interested in mentoring participants, please read the [http://code.google.com/soc/mentorfaq.html mentor FAQ]. Note that both the ability to spend significant time mentoring, and the quality of the students are key to a good return on investment by the mentor, and the learning by the students. Please do not sign up to be a mentor unless you are certain you can meet the obligations of being a good mentor. If you are interested in mentoring, please send mail to
''see [[/2006|the archives]] for '''more project ideas''' from last year''
[[User:Jg|Jg]] with a sketch of your background.

== OLPC Summer of Code Projects ==

=== User stack architecture ===
We're looking for several exceptional students who are willing to spend their summer in Boston, working within the user stack team, building the architecture and the application suite which will be the children's primary mode of interaction with the laptop. This suite currently consists of the E-book reader, a wiki notebook, and e-mail and IM clients.

None of these are traditional applications like the ones we're used to; the OLPC environment poses unique and extremely difficult problems to solve. The development will be done in Python; for more details about what caliber of participant we're looking for, see the original [http://blogs.law.harvard.edu/ivan/olpc-summer06 internship announcement]. If you're planning to apply for this position, please follow the instructions in the previous link and send a resume to Ivan before submitting a proposal through the SoC system.

In return for your outstanding skills, we're offering the ability to work on an incredible software project, on an unprecedented scale of deployment, with extremely bright people, and right out of OLPC's Cambridge offices. It'll be a wild ride -- jump in.

=== GTK+ Toolkit ===

There are a number of simple modifications needed in GTK+. Here are some examples: the cursor in a text area flashes indefinately, rather than turning itself off after a couple cycles. Similarly, we need a theme that is space efficient, works on both grayscale and color by careful selection of colors with differing shades of grey. And at 640x480 resolution, some tuning of the borders between widgets may be needed to enable fewer applications to require modifications to work at this lower effective resolution (note the frame buffer will always stay at the full resolution; turning to color mode reduces the effective resolution without changing the frame buffer size.

=== Power aware applets ===

We expect that a number of applets that display information will need modification to become better power aware.

=== Better memory usage tool(s) ===

Right now, ps, top, xrestop, and so on all give various, often misleading and confusing reporting of memory usage, that defies all but system wizards understanding. A utility that would gather up the various memory usage attributable to a process and report it in an understandable way for application programmers would help greatly in clarifying (mis)behaving applications and libraries.

=== Networking ===

Include mesh routing (such as http://www.olsr.org) to the OLPC laptop. Analyse and simulate scalability and performance issues. Contact: aaron@lo-res.org
Analyse and agree on a power aware protocol or plugin. Must work with the Marvel chip.


=== Educational Content ===

==== HIV/AIDS Education ====

Create educational games to help children learn about HIV prevention and AIDS. We want content for children of all ages, simple to use and easy to understand. Collaboration with international AIDS organizations is recommended. Possible partners include the [http://www.nkosishaven.co.za/ Nkosi Johnson AIDS Foundation] in South Africa.

Proposer : [[User:Kpi|Kpi]] 10:10, 2 May 2006 (CET)

==== One dictionary per child ====
Nutshell: Multilingual Wiktionary & Wikidata customization for the laptops/servers.

The [[MetaWikipedia:WiktionaryZ|Multilingual Wiktionary]] project is picking up steam, and will have some active functionality in a few months. A version of this [and of the underlying wikidata implementation] customized to work with the wiki-based reader software already on the laptops/servers should be produced. This would be combined with a parallel content project to produce a 100-language dictionary (with miminal swadesh/other word lists in a further 200 languages) that could be included with every server; and a subset of the same which could be included on each laptop.

Proposer : [[User:Sj]] 04:00, 2 May 2006 (EDT)

==== One encyclopedia per child ====
Nutshell: Wikipedia & Wikimedia Commons customization for laptops/servers

The idea of a "[[one encyclopedia per child]]" project to create a condensed snapshot of Wikipedia content suitable for all OLPC laptops (not just the servers) has been floated on this wiki, and on Wikipedia itself. There is an important software component involved -- the culling of statistics about what articles matter, and the scripted export of Wikipedia content (perhaps only part of each article) into a suitable format, both require work and consideration. On the statistics front, a variety of statistics should be gathered (''by link-popularity, reader popularity, seminality in Wikipedia's internal-link network, centrality in its field, ...'') and analyzed. On the scripting front, scripts should be developed to strip/modify external links; to pull out the first sentence, paragraph, or other subsets of longer articles; to properly reformat or remove image or media links; to properly handle templates and other wikitext features which may not be supported in the native reader.

As for handling of images and media, some work might also be done to better produce and store compressed thumbnails of content, so that a variety of such content may be included. Some form of temporary local caching of requested media, pulled from the nearest server, or of media sharing across machines on a mesh network, could also be useful.

Proposer : [http://en.wikipedia.org/wiki/Special:Contributions/Ian_Geoffrey_Kennedy Dr. Ian Geoffrey Kennedy]* (general idea), [[User:Sj]] (the specific proposal above) 04:00, 2 May 2006 (EDT)
: * see [[User:olpcme]], possibly Dr. Kennedy on this wiki


=== Children's books ===

The ICDL is a library for the world's children with books in 35 languages. Design goal is to make the books accessible on The Laptop. This work would involve considering file and data formats, the ebook reader, and image quality for The Laptop display.

Project #1: Develop or improve an AJAX and/or [http://developer.mozilla.org/en/docs/Drawing_Graphics_with_Canvas Canvas] web book reader that displays a layer of text as image on top
of the book scan image so that the text image (which is one image per word) is resizable,
reflowable, and searchable.

Project #2: Develop an AJAX and/or [http://developer.mozilla.org/en/docs/Drawing_Graphics_with_Canvas Canvas] web book reader that moves the functionality of the ICDL
spiral reader into a regular web page (some work underway... example book in [http://www.childrenslibrary.org/library/books/readers/hrdaxlf_00320001-spiral.jnlp Spiral Reader])

=== Accessibility ===

==== Vision Test ====

In Brazil the number of people with a disability is 10%, and on others can be much more, with visual impairment corresponding to a big part of that number, so it might be a good idea to include a vision test software that can check the child's vision and sees if she needs to be pointed to a doctor to better use the Laptop.

Proposer: --[[User:Felipecarvalho|Felipecarvalho]] 06:54, 2 May 2006 (EDT) (as a student)

==== Virtual Magnifying Glass ====

Nutshell: Improve the magnifier so it can take advantage of X Composite Extension and be much more adequate for the Laptop and much more efficient.


[http://magnifier.sourceforge.net/ Virtual Magnifying Glass] is a free, open source, multiplatform, screen magnification tool. It is simple, customizable, and easy-to-use.

The propose consists in adding Dynamic Mode to the software by using the X Composite Extension. This allows the user to see the current desktop contents under the magnifier window. The user can also interact with the window under the magnifier (such as mouse, scroll wheel, keyboard, etc...).

Proposer: --[[User:Felipecarvalho|Felipecarvalho]] 07:12, 2 May 2006 (EDT)

=== twexter language learning ===
Nutshell: text formatter for wide world of language learners

http://twext.cc/dev/summer-of-code.html proposes open software enabling translators to easily format bilingual text to help kids learn languages. Interface enables users to easily create "twext" translations and to add new languages. System promises to build bridges between a wide variety of languages; especially useful with songs, pithy quotes, proverbs, sayings, poems, etc.. System could integrate with variety of softwares, including multilingual Wikis.. http://twext.cc/license is currently GPL/CCL, with flexibility to host variable licenses by permission. Twext language learning system subscribes neither to theory of grammar study (boring), nor to philosophy of "immersion" (stressful), but rather to Stephen Krashen's theory of "Comprehensible Input" http://www.sk.com.br/sk-krash.html

Proposer : [C] [http://xc.cx/duke.html] duke crawford; mentor needed for this
project to be further considered.


== Rejected Projects ==

The proposed projects below were reviewed and rejected.


=== Indication of no glyph ===

<i>The following proposal is, for the reasons in the comments appended below, not useful</i>

I have no knowledge of linux, most of my experience with PCs is with Windows, mostly Windows 98. So, I could not carry out this project, yet it could be something worth doing so maybe it would be a good project for someone else. I have no idea how big a job it would be.

I will try to explain what I mean in terms of what I am used to within Windows in the hope that someone who knows about both Windows and linux will assess the idea for possible benefit to the One Laptop per Child linux environment software packages.

Suppose that, in Windows 98, one opens a [[Unicode]] text file in WordPad. WordPad will use a TrueType font to display the text. If the [[Unicode]] text file has within it a character for which the particular TrueType font being used does not have a glyph, then the .notdef glyph of the font would be displayed. This could be an outline of a rectangle or some other shape as decided by the designer of the particular font.

However, if one is, say, opening a many page document, perhaps with a view to printing it, it may not be easily apparent if there are only one or two places in the document where the .notdef glyph is displayed. Even if there are no places where a .notdef glyph is displayed it could take quite a time to discover that that is the case.

My suggestion is that there be a facility within the software packages, a module which all such packages could use, that when a text file is opened that that module checks which character display requests to the font have a .notdef glyph returned for display and then either states on a dialogue panel that all characters have glyphs supplied by the font, or states on a dialogue panel that not all characters have glyphs supplied by the font and lists the [[Unicode]] codepoint of each such character and where it occurs in the document, which could be one or more places, also providing the option to save that information to a file.

As I mentioned above, I know nothing of linux. Does linux use TrueType fonts? Anyway, I hope that this suggestion is of interest.

Suggested by William Overington 2006-05-04 1104Z

Linux (the graphical environments like GNOME and KDE) do use TrueType fonts.

Linux does better than Windows, as it can show the codepoint's number in a rectangle for the missing character. For example, suppose that A (0x0041) is missing. It would show as a single character resembling
|---|
|0 0|
|4 1|
-----

Works also for Plane 1.
In general, we should make sure that the supported fonts are installed already on the system.
Linux (fontconfig) makes sure that if there is a font that has a needed glyph, it will use it.

[http://simos.info/blog Simos Xenitellis] [[User:134.83.1.225|134.83.1.225]] 16:50, 4 May 2006 (EDT)
</div>


[[Category:Python]]
[[Category:Python]]

Latest revision as of 21:50, 19 March 2008

  This page is monitored by the OLPC team.
  Please copy/paste "{{Translationlist | xx | origlang=en | translated={{{translated}}}}}" (where xx is ISO 639 language code for your translation) to Summer of Code/2007/translations HowTo [ID# 117869]  +/-  
Stop hand.png WARNING:
The content of this section is considered
DEPRECATED and OBSOLETE
It is preserved for historical or documenting reasons.
The 2007 Summer of Code has ended. Click here for the 2008 Summer of Code.

Archives: 2006

This is a page for 2007 Summer of Code Ideas. For Summer of Content ideas, see Summer of Content 2007. Content-related activities described below are suitable projects to migrate to the latter's project discussions.

See the 2006 internship announcement for more context. If you have additional ideas for projects, or comments on the ones below, please leave a note on this talk page.


Mentoring

If you are interested in mentoring participants, please read the mentor FAQ. Note that both the ability to spend significant time mentoring, and the quality of the students are key to a good return on investment by the mentor, and the learning by the students. Please do not sign up to be a mentor unless you are certain you can meet the obligations of being a good mentor. If you are interested in mentoring, please send mail to Sj and leave a note below with a link to your userpage, where you should describe your background.

Interested mentors

Game development

Hardware testing, display optimization, input options, alternative power and charging

  • Mary Lou Jepsen
  • Richard Smith

Library design and assessment

Tools for local content creation

Activities

User stack architecture

Mesh application design

Distributed collaborative projects

System Software

Projects

Input and device options

Using the camera as control device

Mentor:Kent Quirk

A nice SoC project would be to build an API to use the XO camera as a game input device. A few ideas come to mind:

  • Detect one or more regions of distinctive color (a ball, a sheet of paper) and track its position as an X-Y input device (possibly even Z if you can take size into account). User could then move the object in space to provide input to a game.
  • Detect motion of the image background so as to infer the motion of the XO itself. It would be a substitute for a tilt-swivel sensor and could be used to play games like Marble Madness and Super Monkey Ball.
  • Detect motion of the image background so as to provide simple dead reckoning position tracking. This would be unbelievably crude but it might be possible to use a down-facing camera to make some sort of hide and seek game enabled by the XO.
  • Detect faces and/or hands like the Sony EyeToy. Face tracking can provide a nice input model.
  • Capture a background with no user involved, then notice the changes as the user moves in the frame to return an outline of the area that's "different" (this is the "Shadow Garden" model).

It's unlikely that all of these ideas would be implemented, but a high quality subset of them would be nice to have.

The API must include Python support, and be capable of operating at "reasonable" frame rates (preferably at least 10 fps).

Comment:Peter Korn

Please see "head mouse" products that use a reflective dot pasted onto the person's forehead or glasses that can be more easily tracked by cameras. A good listing of these commercial products can be found at enablemart

New Power Inputs and Alternative Power and Energy

Mentor:Mary Lou Jepsen or Richard Smith
  • Explore alternative power inputs for the XO laptop
  • Solar and human power input testing - testing our solar panels with the laptops, the human power crank, yoyo, etc.
  • Gang charger and power system design for in country gang chargers off of car batteries - finding car batteries readily available in country, optimizing to our gang charger design, getting feedback from user testing in country and making modifications with gang charger supplier(s). Working closely with Firmware team on charging issues"
  • Testing batteries and recharge ability for various vendors batteries
  • Testing weird power inputs to motherboard and assuring safety for strange inputs

Display Readability Optimization and Testing

Mentor: Mary Lou Jepsen
  • Testing of display readability and optimization of graphical layouts to enhance display readability. Our display is very different from a standard display and has 3X the luminance resolution compared with chrominance resolution. Studies of display readability in both backlit and sunlight readable mode and the font configuration for optimized readability (with testing on children) are to be done.

Power aware applets

Mentor:??

Nutshell: we need some applets that display information better to become better power aware.

User Stack architecture

Many of these projects still need help

Nutshell: We're looking for several exceptional students to spend their summer in Boston, working within the user stack team, building the architecture and application suite which will be the children's primary mode of interaction with the laptop. This suite currently consists of the E-book reader, a distributed wiki notebook, and e-mail and IM clients.

ebook reader

Mentor: Don Hopkins

Work with a crossmark/html book reader, or produce tools for converting to/from this format, to give children annotatable access to the worlds digitized books.

Don Hopkins is developing a PDF based eBook reader for the Internet Archive, using the "poppler" library to draw with Cairo. It will have a simple book reading user interface to search, page, zoom, pan, rotate, arrange pages in various configurations, follow links, navigate the index, etc. It should be fully usable in "book mode" with the game controller. It will be able to browse and search the Internet Archive eBook library, and download eBooks to read. It can use the Internet Archive RSS feeds and web services to get lists and descriptions of books, and search the archive, and download XML meta-data and PDF documents.

Other interesting eBook related projects:

Optimizing eBook activity and libraries for low power and memory consumption. Optimizing Cairo library image rendering. Reusing the "poppler" PDF rendering module for other purposes. Integrate useful PDF generation modules (i.e. PyGraph, ReportLab). Write some useful components and applications using PDF generation and rendering modules. Extending Poppler's API to support editing PDF documents. Developing a simple PDF editor component (for annotating eBooks and editing graphics).

Collaborative shared eBook reading activity: synchronize the document, page and a cursor over the network, so kids can take turns reading an eBook out loud together, with special support for plays and scripts. Each child chooses one or more characters to read, and the eBook parses the text to know who speaks each line, and prompts each child to read their lines by zooming and highlighting the text to read.

wiki-notebook

Help improve features on a wikireader -- a notebook for reading, annotating, and editing collaborative texts. Features include online/offline synchronization, distributed versioning and conflict resolution for text, and providing a variety of views and zoom levels for a given document.

IM client

nutshell: a fast instant messaging client that integrates neatly into many applications. Extensions: connect with an automatic im-translation setup; or with a network of human interpreters. See Instant messaging challenges for the complete implications of an olpc IM system.

email client

nutshell: develop a lightweight email client for children.

Content creation and review

Content stamping

Nutshell: develop a simple system for building review groups and content reviews of all types of content, and clients for viewing / downloading materials via the Open Library Exchange using these reviews to inform the view.

Distributed translation

Mentor:Sj

Nutshell: design an online distributed translation system that matches users with language skills to parts of large localization/interpretation/translation projects.

One dictionary per child

Nutshell: Multilingual Wiktionary & Wikidata customization for the laptops/servers, with a dictionary viewer. The main task is to produce a viewer that runs efficiently on the laptops, reads standard dictionary file formats, and can display definitions in multiple languages without redundant copies of definitions.

Distributed map environment

Nutshell: define a distributed map environment for the OLPC network of XOs, school servers, and regional/global servers.

No-language tutorials

Nutshell: develop libraries for creating no-language videos, screencaps, animations, and slideshows depicting people interacting with their environment -- for demonstrations or sharing ideas across language barriers.

Game development

PyGame port

Mentor:Kent Quirk?

Nutshell: get PyGame's api to work on the laptops.

Details: work to implement the details (that will soon be) laid out in PyGame Implementation.

Easy Game Toolkit

Mentor: Ben Sawyer

Nutshell: build a collection of Python libraries that make it as easy as possible to build certain classes of games in Python.

Details: PyGame is a good basic API for games, but its flexibility requires some detailed knowledge of game design and game architecture. In order to help novice programmers to build interesting game-like software, it would be nice to make a collection of libraries on top of PyGame that would do the following sorts of things:

  • Set up the interface and make a drawing surface available
  • Create simple UI structures -- collections of buttons, menus, simple textual displays
  • Create animated sprites and allow them to have certain behavior -- velocity, collisions, interactions
  • Managing a standard asset structure of the sorts of assets that can easily be created on the OLPC -- sounds, music, graphics.
  • Basic networking system for using the OLPC mesh network
  • Implement basic platformer game engine -- gravity, sidescrolling
  • Implement basic 2D arcade game engine -- sprites, missiles, particle systems, sounds, input
  • Implement basic 2D graphic adventure toolkit -- a world of rooms, database and data entry tools, simple command structure.
  • Implement educational game toolkit -- simple text and image manipulation, sound effects, standard quiz database system, data entry tools, tracking and reporting of results

The result should be a collection of libraries that make the creation of a game like Pong a matter of a few dozen lines of code, and creating a basic platformer should be more of an art problem than a programming problem.

Accessibility

Vision and hearing tests

proposer: Felipecarvalho

Nutshell: It would be good to include tests on bootup that can check the user's vision and hearing.

This would help identify if a child needs to be pointed to a doctor to better use the Laptop. This should be easy for a teacher or older child to administer.

Virtual Magnifying Glass

Proposer: --Felipecarvalho 2 May 2006 (EDT)

Nutshell: Improve the magnifier so it can take advantage of X Composite Extension and be more adequate for the Laptop and much more efficient. See Virtual Magnifying Glass, &c.

Add Dynamic Mode to the software by using the X Composite Extension. This allows the user to see the current desktop contents under the magnifier window. The user can also interact with the window under the magnifier (such as mouse, scroll wheel, keyboard, etc...).

System Software

Performance is important, particularly in the UI stack. There is driver work to be done; a bit of kernel driver work, but extensive X driver work. Cairo can use further improvement. Our tinderbox can use extension to testing applications. It would be good to repeat the Packard/Gettys X Network performance tests, to see what we're doing on the wire (finding what is being done stupidly in applications, and what should be optimized). Security expert people can help on both authentication of the X protocol and its encryption. Furthermore, Eamon Walsh has done work to generalize X's security framework: we need a policy engine suitable for VServer based systems.

General system performance analysis is also welcome, focused on our core applications.

Power management and memory management are also possibilities.

2006 project ideas

see the archives for more project ideas from last year