Summer of Code/Ideas

From OLPC
< Summer of Code
Revision as of 16:43, 23 March 2008 by Jaume (talk | contribs) (Other activities)
Jump to: navigation, search

This is a list of ideas for OLPC's participation in Google Summer of Code 2008. 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.

Contents

School Server

Interface design

  • Admin interface : The school server needs a graphical admin interface to configure/set all the services.

Networked Blogging Project


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

Possible interest

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?
JavaScript-Python Communication

JavaScript Python Communication through the following strategies: PyXPCom, hulahop, and xulrunner.


Publication and Journal sharing

Incorporate the Distribute activity into the shell At the basic level this will require:

  • A way to initiate a transfer (a button in the Journal, a contextual option on an object, a drag'n'drop operation)
  • Notification to the receiver
  • Some method to indicate progress to sender and receiver, with a way to cancel
  • A journal entry for the receiver containing the resulting file

Necessary future support:

  • Transparent support for interrupted connections


Mesh Networking

Tools development

As we reach for increasingly larger numbers of nodes participating in mesh network testbed, it is evident that sophisticated methods and tools for monitoring, logging and debugging will become necessary. Project deliverables include:

  • Maintain our mesh network testbed
  • Review different methods for controlling and monitoring large numbers of machines (control over wireless vs. control over Ethernet, stored logs vs. online logging, etc)
  • Implementation of network application + GUI to remotely control, configure and analyze logs from mesh network experiments on large testbed

Visualization development

A few visualizations of the mesh have been developed so far; the default random visualization, a roughly signal-strength based visualization that shows other XOs a distance away inversely proportional to signal srength. What other visualizations would be useful or interesting? How do these idea scale to thousands of XOs or a number of school clusters?

Health Tools

  • Design software to interact with the different health peripherals.
    Integration of other FLOSS software like OpenMRS.
  • Display and interpret bio-signals (e.g EKG. EMG..)
    Help in Projects/TeleHealth Database


Code libraries

Pygame/sdl

Add as much support as possible using the Geode graphics processor.

xo3d

Develop the xo3d library based on work started by User:Wade. This is a flat shaded software 3D renderer with support for objects, lighting & clipping, exposed to Python. It also features a matrix and vector math library.


Specific Activities

This list of desirable activities is largely a grab-bag, meant to spark ideas. There are plenty more at Category:Software ideas. Part of the work of doing your SoC application would be to do a preliminary evaluation of existing open source options in a domain and their adaptability to OLPC. Python and/or GTK-based programs are the easiest to adapt. Also present in the platform are Javascript, C/C++ (of course), and Smalltalk (squeak). See Sugar and Developers/Stack for further info.

Applications should show serious thought about what can be achieved in the short time available. Whether you are starting from scratch or adapting an existing app, fewer well-implemented/adapted features are far preferable to many poorly-implemented ones. In either case, but especially in the case of an adaptation, a solid foundation makes it easy to add (back) in more features later.


Flash Card creator

The student and mentor would evaluate open source flash card programs together, and then either port or adapt one to XO. The flash card program would be developed with a Sugar-specific UI and features. It would feature one of the well known flash card memorization algorithms for tracking student progress through each deck of cards. (see Drill and test software)


Master Mind (game)

Implement the well known board game: http://en.wikipedia.org/wiki/Mastermind_(board_game)

Typing Turtle

A game-like typing tutor activity would be developed by the student. Existing open source projects would be evaluated for ideas. Features would include adapting to student progress, support for all XO keymaps (take a look at Keyboard#Languages_other_than_English for information on supported keyboard layouts) and written languages, progress tracking graphs, the ability to locally customize the program, etc.


Finance

The student would develop a simple financial planning program, basically the simplest possible version of Quicken. It would provide a simple income / expense register, monthly tracking, budget planning, expense & income categories, and a loan calculator.

This activity idea came from a request by the Nepal deployment.


System Dynamics modeling tool and simulation engine

Create a system dynamics (SD) model editor and simulation engine. The advantages to this would be:

  • Models are visual and mathematical representations of a system, which allows for a different form of visual programing than that of Turtle Art
  • SD is used in international development planning and to teach systems thinking to K-12 students
  • Simulation engine could be accessible from other programs, like Micropolis
  • Programs like Micropolis could have their core logic in SD models and access it through the simulation engine, allowing people to switch to a visual representation of the program logic to understand and change it.

-Bobby Powers (student, looking for mentor)

Inferno

There's a variety of work that is left to be done in Inferno on OLPC, things that might be best done by a student include:

  • fontfs - mapping OLPC fonts to inferno native fonts
  • metafs - mapping file system permissions to OLPC model
  • camera/audio support
  • new window manager for Inferno which better matches OLPC paradigm
  • integration with OLPC collaboration framework
  • integration with OLPC internationalization mechanisms
  • edutainment applications written in Limbo for OLPC

-Eric Van Hensbergen


GIS activity for XO

Engineers Without Borders, Timepedia, and International Symposium on Digital Earth want to work with OLPC to create community-based mapping data collection systems that will feed to global mapping and analysis projects, which will then feed back to the children and their communities. Environment, health, agriculture...

Activity Translation Activity

Similar to the functionality offered by the "View Source" key, an activity should ideally allow the user to translate it. A Translate activity would allow the user to translate any given activity, and optionally let the user share the translation, so that it can be reused by other users in the mesh.

Deducto

Deducto is a Board Game based on pattern recognition initially developed by Walter Bender at MIT Media Labs using Perl language. The game has been re-written in Python by the founding members of Open Source Community-NSIT, India. HTML version of the game is available at [Deducto]. Project is also available at [GIT Repository]. Addition of a feature where a user could generate his/her own levels of the game, development of UI, and re-design using PyGTK are the areas for development.

Food Force Project

World Food Programme's Food Force Project [Windows and Mac] to be re-designed for the Sugar environment.Please visit Food_Force/Design_Document.

Education ToolKit

There was a nice project done in Chile using Ipacks: the "teacher" would pose a problem and the children would formulate an answer. Then they'd gather in groups of four and pool their answers. Each group of four would then reach consensus on an answer they thought was correct. All of the group answers would be shared with the entire class. Then a class discussion would ensue: why did Group A come up with that answer? The role of the computer and the teacher was to facilitate the discussion among the students and to focus discussion around problem areas that revealed themselves in discussion. A nice use of collaboration that has nothing to do with taking control or "all eyes forward".


Social games

Board & card games

A suite of board and/or card games would be developed by the student including things like Chess, Checkers, Othello, Mancala. They would all be built on a common framework so that more games could be developed easily. Features would include multiplayer tournaments (including chat & spectator support), good computer AI, interactive game teaching, game recording & playback, etc.


Hi, I am Preeti, from New Delhi. I am very keen on working with OLPC on developing Board & Card Games. I have already done work in this aspect, in C++, by making several games such as Brainvita, Solitaire and Scrabble. I want to contribute to the Google Summer of Code in this project. Please let me know how I can help..kspreeti@gmail.com

3D Software Renderer & Game

A simple flat shaded 3D graphics library would be developed by the student for the XO platform, with an accompanying game. The game would be something exciting and multiplayer but non-violent, I'm thinking about a first person firefighting simulator (where you shoot water at animated fires and rescue victims) or something like that. The game would be designed by the student with direction from the mentor.

Micropolis (SimCity)

I have a long list of interesting ways to develop Micropolis (aka SimCity), which I have written about on my blog!

The source code is on Google Code, and I've been working on finishing up all the grunt work that requires familiarity with the code and would be hard for other people to do, to enable other people to work on the higher level stuff that depends on that.

There are two Micropolis projects:

  • The old "micropolis-activity" which is the original TCL/Tk version of SimCity for Unix, which I ported to Linux and adapted to the OLPC.
  • The new "MicropolisCore" C++/SWIG/Python module that I've cleaned up and I have started developing a user interface.

It would be best to put effort into developing the new MicropolisCore code for the long term, although there are some small tasks that could be done with the old TCL/Tk code for the short term.

-Don Hopkins


Book and Document readers

  • see project description by jgay


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.

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.

Improve DrGeo

The DrGeo activity (interactive geometry) port need to be finished and improved in different areas.

Parts to be written
  • implementation of the macro-construction system. It is a system to record a set of constructions as a function the user can save and use repeatably. See the original implementation.
  • implementation of the script system. A script within DrGeo is code hooked to an interactive sketch, it is used to perform calculus. See the original implementation in Scheme. The script language will be Smalltalk based.
Parts to improve
  • Improve the load time, the load time is now unacceptable for the user and make DrGeo unadapted for the OLPC.
  • Define a journal type entry to save/load.
  • Improve the user interface, particularly the access to the construction tools.
  • Improve the locus sampling, it is by now suboptimal.

Other suggestions for improvements, see the DrGeo tracker.


Other activities

Email activity

Develop a light, functional and usable email client

  • log children on automatically.
  • cache things locally, both for writing and for reading.
interest: Shikhar is interested in developing an email activity, see proposal outline Email client

Mind mapping activity

A few teachers (including the teacher in Arahuay) have requested a mind-mapping activity. MindMeister and similar suites have offered us some of their toolchains.

interest: Homunq

Elements. 2D physics simulation

Making 2D rigid body physics easily accessible and implementable with python/pygame on the XO laptop. Project started already as 'Elements'

Computer Vision with OpenCV

OpenCV is a computer vision library developed by Intel that greatly simplifies complex tasks like object recognition and tracking and image manipulation. Possible uses for it include vision based games, gesture recognition, and video chat with low bandwidth cartoon characters substituted for video.

Nirav Patel started working with OpenCV and face recognition on the XO laptop.

XOradio and XOtv

The idea is to supply an easy way (1 click) to broadcast contents (audio and video) from a OLPC laptop, and then, put all the available channels together in a OLPC global channel of lectures sharinghowtos sharing, p2p online help, video connected classrooms/sessions,... page in OLPC Austria wiki

Language Learning

Foreign language learning

Focusing on English: A tool to learn foreign languages would be a great addition for the XO. At it's most rudimentary form, it can start with an interactive [[dictionary, but something advanced would be preferred, perhaps along the lines of LingoTeach.

I'm intereted in this task and looking for a mentor. Would be grerat to talk with somebody about my ideas. -Steven Mohr


Speech synthesis

Listen and Spell : A simple game to help children learn to spell words correctly using speech synthesis technology. Words will be spoken, and the child will be expected to correctly spell it.

The game can have the following features:-

  • Difficulty Level - Easy/Medium/Hard
  • Multiple Dictionary Sources
  • Contextual Dictionary Lookups - The application can lookup words related to specific keywords, speak out a small description of the word, and then expect the child to spell it.
  • Mesh Challenge - Children can collaborate over the Mesh Network and challenge each other in a multiplayer game. The child will type the word on his XO, this will be spoken on the other XO, and the player must spell it correctly.

A very basic activity draft that can be suitably scaled is available at talkntype


Misc / needs development

My FilmCity(@INDOKLEY)

Record your songs and upload. Download the songs that is give by the "Music" Teacher. Make Playlist from the list of Songs(here we can resirict the list of songs according to the MUSIC TEACHERS)

Upload Video
Download Video


Embed twexter into activities

twexter software formats twin text (twext) for language learners.. twexter can work with all kindsa tools/activities like moodle or scratch or mediawiki or wixi so we can grow multilingual.. twexter can also annote same language text, for example by translating complex english to "basic english"

synxi

synxi wants to make it easier to add timed text SLS to video..

  1. speech to text
  2. closed captioning
  3. timed text (syllabic level karaoke)
  4. sync w/ audio video

synxi will help us 2.) learn language, 1.) teach language, 0.) share language

Eclipse based development environment for Activities

An [Eclipse] plugin which would allow software developers to easily write Python based activities for Sugar. Some of the features can be

  • Integration with an Xnest/Xephyr window which would run the activity being developed in Sugar
  • Easily accessible developer documentation

Sugar Factory

Sugar Factory is an automated method for Sugarizing non-Python applications. Albert Cahalan has some of this working now.

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.

Mediawiki stuff

I have seen a fair amount of discussion of the possibility of having school-level wikipedias. The issues involved are offline browsing (static content, caching, at 2 levels: global<->school server<->xo) and editing (multilevel synchronization - a problem that probably cannot be "solved" but can be attacked). This person would need to have architectural vision and PHP skills. If there were such a proposal, I would suggest that they could spend a little extra time supporting/mentoring my Summer of Content proposal for a multilingual wiki. Homunq 12:18, 2 March 2008 (EST)

Shared wikis for projects

Some ideas:

  • Keep a shared page for each collaborative project or actvity itself that is shared across a school and/or class : automatically generate pages/namespaces for class + activity + project where help notes, reports, and progress are tracked. Define how these namespaces interact aross clases, schools, and at a global level on wikieducator / wikiversity / similar sites
  • Define how to link together a set of related work into a report : linking to a project/file/record, customized to launch a specific activity via wiki markup.
  • Work on the interface b/t MikMik and a MediaWiki server.

Sugar adaption for the Nasa Colombian ethnic community

One of the 91 indigenous cultures that still exist in Colombia is the Paez people (aka Nasa). They have their own traditions, customs, world view, mother tongue (Nasa Yuwe), i.e. their own culture. It could be possible to take cultural elements into the Sugar Interface, not only language, to provide Nasa children a suitable and familiar interface. Santiago 18:01, 8 March 2008 (EST)

Privacy and Parental Control

  • Access control of the students
  • Trace of Student activity and alert if open illegal and unauthorized websites and contents.
  • Remote control of student laptop by if he is in home network
  • Activiy log of the student and daily usage of laptop
  • Daily,monthly analysis of the student usage (what they have used like fun,studies ,games etc)

Sugar packaging in other distros

Debian

  • Help in maintaining and packaging sugar and activities in debian.
  • Including/adapting debian-edu .debs to sugar

...