Moved from old page
How to get started developing an application
First of all, begin by understanding the OLPC Python Environment. Most external developers will be using Python to develop their application. Next, make sure that you understand the constructionist philosophy of education. The OLPC is not simply a stripped down PC for kids to play with and for teachers to use as babysitters. In the western world, kids do not get much educational benefit from computer use but there are other sources of education to compensate. The OLPC will be going into an environment where these other sources do not exist or will be marginal.
Expect that the kids have no paper, pens, pencils, books or trained teachers. Many OLPCs will be deployed into just such an environment. Of course, not all of the target children are equally deprived, but the point is that your application must actually help children learn something.
Are there projects to join ?
Yes, of course. For one, the Squeak environment is being adapted for the OLPC and has an active community behind it involved in developing educational applications.
There is also a Developers Program for people who have a project which would benefit from having a prototype of the OLPC to test it on.
The OLPC team has a git repository hosting several applications. You can check out a copy of the source code and work on one of these.
Some external projects such as Evince will need to be adapted to run on the OLPC. In part this means stripping out unecessary features that a 3rd world child would never need. This is necessary to reduce the storage footprint of the application. Also, most applications will need their GUI to be simplified, partly to ensure that it functions on a small 640x480 screen, or a monochrome display, but also to make it easier for the kids to use. For instance an ebook reader like Evince should give the user a choice to make the book appear in fullscreen with no visible UI at all. There are some extra keys on the screen that could be used to control the application, or regular keystrokes could be used. Of course, regular keystrokes for a Chinese kid or a Tamil kid, might not be what you consider regular. There are no guarantees that keys like Control or Alt will be available.
Can applications be developed in a library/internet cafe?
Could someone who can use a PC in a public library or in an internet café develop applications without needing to install anything on the local PC if they are allowed to attach something to a USB port?
- In fact, yes this is possible but it does cost a small amount. For £5 (about $9.50) you can buy a Python distribution called Movable Python sometimes referred to as Python-on-a-stick because it runs from a USB stick memory device. For that matter it runs from any USB-powered storage device so it could even be installed on a 20gig Freecom drive. It can be customized by adding your own libraries so you could install GTK , PyGTK and any other bits that you need.
- I haven't personally tried to run Movable Python together with PyGTK but if your GUI is simple then you can even develop using WAX or WxPython and then have someone port it to PyGTK later when you have a working product.
- See also Live USB, linux distributions which run off a usb stick. --MitchellNCharity 16:46, 31 January 2007 (EST)
Language Training for Developers
All software must be translated to foreign languages and script. Most of the software developers don't know anything about languages with different writing systems. A learning software, that helps to learn some chinese, tibetian, thai,... words including script, could bring the nessessary knowledge to the developers.
The aim of this isn't to enable software developers to translate the software, but to give them knowledge about fonts and text input methods.
A start is being made on this with the Tutorial for Developers: Text Input Methods page.
You can help us
Please use this page to develop the concept of application developers and what facilities are needed.
Basic information is needed
Basic information is needed. An "orientation". Linked from Software.
- What software is olpc interested in? What is it not?
- This should be detailed enough for anyone to determine:
- Given an arbitrary FOSS software package,
- is it of interest olpc? or not? A: does it further the educational goals of this project?
- how much interest?
- what needs to be changed to make it acceptable? A: It needs to be modified to match the OLPC_Human_Interface_Guidelines, which means parts must be rewritten to use the Sugar Architecture.
- is there a set of official software? How is it chosen? Is there a pool of not-official olpc software? Where? A: See Activities.
- where can one discuss, obtain guidance, etc. Any mailinglists?
- Given an idea for new software, all of the above, plus
- what is the ideal tool-chain/etc for olpc development?
- And given multiple alternatives, guidance on choosing one.
- How should development be done?
Basically, someone who understands how software development for olpc works needs to sit down and write a one page "orientation" document. The talk you would give a bunch of new staff to get them spun up quickly.
Once it is clear how oplc software should be developed, the community could create an article detailing "given an internet cafe and a usb stick, here is how to install a usb-based linux distribution and get started using/developing olpc software". --MitchellNCharity 18:17, 31 January 2007 (EST)
- You can download an disk image and run it on Linux, Mac, or Windows, thereby Emulating the XO, or you can boot from a live CD. Go do it! Installing and running the Sugar interface on other Linux distributions is not as far along.-- Skierpage 16:28, 5 December 2007 (EST)