Summer of Code/2007: Difference between revisions
(Time waits for no man. Deprecated.) |
|||
(14 intermediate revisions by 8 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 |
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 18: | Line 20: | ||
* Kent Quirk |
* Kent Quirk |
||
* Ben Sawyer |
* Ben Sawyer |
||
* Don Hopkins |
* [http://www.DonHopkins.com Don Hopkins] |
||
'''Hardware testing, display optimization, input options, alternative power and charging''' |
'''Hardware testing, display optimization, input options, alternative power and charging''' |
||
Line 33: | Line 35: | ||
* Erik Blankinship? |
* Erik Blankinship? |
||
* [http://jeanpiche.com Jean Piché] |
* [http://jeanpiche.com Jean Piché] |
||
* Mauro Torres |
* [http://www.tuquito.org.ar Mauro Torres] |
||
* John Resig? |
* John Resig? |
||
* John Harrison? |
* John Harrison? |
||
Line 42: | Line 44: | ||
'''Mesh application design''' |
'''Mesh application design''' |
||
* [[User:AaronKaplan| Aaron Kaplan]]? |
|||
'''Distributed collaborative projects''' |
'''Distributed collaborative projects''' |
||
Line 92: | Line 95: | ||
=== ebook reader === |
=== ebook reader === |
||
<!--: Mentor: johnr?--> |
<!--: 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 |
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 === |
=== wiki-notebook === |
||
<!--:Mentor:Sj? --> |
<!--:Mentor:Sj? --> |
||
Help improve features on a wikireader -- a notebook for reading, annotating, and editing collaborative texts. Features |
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 === |
=== IM client === |
||
Line 123: | Line 141: | ||
==Game development == |
==Game development == |
||
=== |
=== PyGame port === |
||
:''Mentor:Kent Quirk?'' |
:''Mentor:Kent Quirk?'' |
||
Nutshell: get PyGame's api to work on the laptops |
Nutshell: get PyGame's api to work on the laptops. |
||
Details: work to implement the details (that will soon be) laid out in [[PyGame |
Details: work to implement the details (that will soon be) laid out in [[PyGame Implementation]]. |
||
=== Easy Game Toolkit === |
=== Easy Game Toolkit === |
Latest revision as of 21:50, 19 March 2008
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] +/- |
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.
MentoringIf 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 mentorsGame development
Hardware testing, display optimization, input options, alternative power and charging
Library design and assessment Tools for local content creation Activities
User stack architecture Mesh application design Distributed collaborative projects System Software
ProjectsInput and device optionsUsing the camera as control device
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:
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).
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
Display Readability Optimization and Testing
Power aware applets
Nutshell: we need some applets that display information better to become better power aware. User Stack architecture
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
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-notebookHelp 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 clientnutshell: 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 clientnutshell: develop a lightweight email client for children. Content creation and reviewContent stampingNutshell: 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
Nutshell: design an online distributed translation system that matches users with language skills to parts of large localization/interpretation/translation projects. One dictionary per childNutshell: 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 environmentNutshell: define a distributed map environment for the OLPC network of XOs, school servers, and regional/global servers. No-language tutorialsNutshell: 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 developmentPyGame port
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
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:
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. AccessibilityVision and hearing tests
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
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 SoftwarePerformance 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 ideassee the archives for more project ideas from last year |