Talk:Application Developers: Difference between revisions

From OLPC
Jump to navigation Jump to search
(A link to Tutorial for Developers: Text Input Methods added.)
(→‎Basic information is needed: answer some more questions)
 
(19 intermediate revisions by 9 users not shown)
Line 1: Line 1:
= Moved from old page =
==Overview==
There are people in the OLPC management team and there are people working in the OLPC offices and laboratories and there are people working on the OLPC project as part of their employment at various companies and orgnaizations. There are people called interns working on the project over the summer.

There are also people around the world who are interested in the project and who would like to participate in developing applications to run on the laptop. Some of these people may be just making the attempt on home computers or maybe computers in public libraries and even internet cafés, doing the best they can with the equipment to which they happen to have access.

Remembering the concept of External Students of Universities and influenced by the Overwhelmed section of the [[Setting Up a Sugar Development Environment on Windows]] page, it seems reasonable to introduce the concept of External Developers. Thus facilities can be provided for External Developers, hopefully most of them by External Developers themselves.

The situation which started off this line of thinking, namely setting Up a Sugar Development Environment on Windows, could be a good example. Maybe External Developers could document step by step what is necessary to install the system on various types of PC, not necessarily the latest equipment.


==How to get started developing an application==
==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.
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.
Expect that the kids have no [[Paper and Pencils|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.



Ideally you will take some time out to install and play with [[Squeak]] especially the etoy environment for schools described at [http://www.squeakland.org Squeakland].
Ideally you will take some time out to install and play with [[Squeak]] especially the etoy environment for schools described at [http://www.squeakland.org Squeakland].


==Are there projects to join==
==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.
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.
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 [http://dev.laptop.org/git.do git repository] hosting several applications. You can check out a copy of the source code and work on one of these.
==Can applications be developed in a library?==

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?
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 [http://www.voidspace.org.uk/python/movpy/ 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.
: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 [http://www.voidspace.org.uk/python/movpy/ 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.
: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 [http://en.wikipedia.org/wiki/Live_USB Live USB], linux distributions which run off a usb stick. --[[User:MitchellNCharity|MitchellNCharity]] 16:46, 31 January 2007 (EST)


== Language Training for Developers ==
== Language Training for Developers ==


All software must be translated to foreign languages and script.
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.
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.
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
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.
text input methods.


A start is being made on this with the [[Tutorial for Developers: Text Input Methods]] page.
A start is being made on this with the [[Tutorial for Developers: Text Input Methods]] page.


==You can help us==
==You can help us==
Please use this page to develop the concept of External Developers and what facilities are needed.
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?
:*On emulated images? Sugar on arbitary os? [[Develop]]? Arbitrary linux/gnome?
:*What is the role of ... the development wiki, which, even knowing it exists, I can't find a link to?
:*What is the role of [http://hg.fedoraproject.org/hg/olpc/applications/sugar--devel sugar--devel], which seems 7 months old?
:*What are the schedule constraints? A: See [http://dev.laptop.org/roadmap roadmap].

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". --[[User:MitchellNCharity|MitchellNCharity]] 18:17, 31 January 2007 (EST)
: You can download an [[OS images|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.-- [[User:Skierpage|Skierpage]] 16:28, 5 December 2007 (EST)


----
----
[[Category:Developers]]

Latest revision as of 21:37, 5 December 2007

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.


Ideally you will take some time out to install and play with Squeak especially the etoy environment for schools described at Squeakland.

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?
  • On emulated images? Sugar on arbitary os? Develop? Arbitrary linux/gnome?
  • What is the role of ... the development wiki, which, even knowing it exists, I can't find a link to?
  • What is the role of sugar--devel, which seems 7 months old?
  • What are the schedule constraints? A: See roadmap.

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)