Getting started programming: Difference between revisions

From OLPC
Jump to navigation Jump to search
m (Fix links)
Line 11: Line 11:
=== Emulation (Recommended for New Developers) ===
=== Emulation (Recommended for New Developers) ===


By far the most time-efficient and effective way to start developing for the OLPC system is to [OS images for emulation|download an operating system image] that can be run in one of the popular emulation/virtualisation systems, such as Qemu, VMWare or Parallels. These images allow you to run a virtual OLPC-configured machine on your regular development workstation.
By far the most time-efficient and effective way to start developing for the OLPC system is to [[OS images for emulation|download an operating system image]] that can be run in one of the popular emulation/virtualisation systems, such as Qemu, VMWare or Parallels. These images allow you to run a virtual OLPC-configured machine on your regular development workstation.


There are two major classes of images available, one group is as close as possible to the OLPC installation. These official images do not provide GUI IDEs or SVG graphics editors. They normally would be used either with command-line tools (e.g. VIM) or with an NFS (or similar) share to a workstation on which you will do your actual coding. As a result, the official images tend to involved either more Unix developer-toolchain familiarity or more setup in your development environment.
There are two major classes of images available, one group is as close as possible to the OLPC installation. These official images do not provide GUI IDEs or SVG graphics editors. They normally would be used either with command-line tools (e.g. VIM) or with an NFS (or similar) share to a workstation on which you will do your actual coding. As a result, the official images tend to involved either more Unix developer-toolchain familiarity or more setup in your development environment.


The second group of images are the [Developer Images], which are intended to be used as virtual desktop machines. The images have far more software than is installed on the OLPC laptops. They resemble a developer's desktop machine which has been upgraded to support the Sugar environment. They tend to have GUI IDEs, full Gnome desktop installations and the like, which make it easy for developers to work entirely within the emulated environment.
The second group of images are the [[Developer Images]], which are intended to be used as virtual desktop machines. The images have far more software than is installed on the OLPC laptops. They resemble a developer's desktop machine which has been upgraded to support the Sugar environment. They tend to have GUI IDEs, full Gnome desktop installations and the like, which make it easy for developers to work entirely within the emulated environment.


Developers working on Developer Images should be sure to test their creations on real OLPC Laptops or official images in order to be sure that they do not have dependencies on software not available on the actual laptops.
Developers working on Developer Images should be sure to test their creations on real OLPC Laptops or official images in order to be sure that they do not have dependencies on software not available on the actual laptops.
Line 25: Line 25:
sugar-jhbuild build-base
sugar-jhbuild build-base


command to build a parallel set of the libraries required to run the OLPC software. This [Sugar with sugar-jhbuild|approach] generally works reasonably well on most modern Linux distributions, though the build system (jhbuild) tends to be very fragile, so you may spend quite some time rebuilding and fixing errors to get a final working system.
command to build a parallel set of the libraries required to run the OLPC software. This [[Sugar with sugar-jhbuild|approach]] generally works reasonably well on most modern Linux distributions, though the build system (jhbuild) tends to be very fragile, so you may spend quite some time rebuilding and fixing errors to get a final working system.


In the [Setting Up a Sugar Development Environment on *IX OSes|second approach] you update your Linux operating system to such a point that it resembles the OLPC environment. You should be aware that such upgrades often will require you to update well beyond the "stable" configurations for your Linux distribution, and as such may make your system unstable. As of 2007-04-08 only Fedora Core 6/7, Gentoo and Ubuntu Feisty Fawn are known to upgrade reasonably well.
In the [[Setting Up a Sugar Development Environment on *IX OSes|second approach]] you update your Linux operating system to such a point that it resembles the OLPC environment. You should be aware that such upgrades often will require you to update well beyond the "stable" configurations for your Linux distribution, and as such may make your system unstable. As of 2007-04-08 only Fedora Core 6/7, Gentoo and Ubuntu Feisty Fawn are known to upgrade reasonably well.


=== Hardware Solutions ===
=== Hardware Solutions ===

Revision as of 17:39, 8 April 2007

This article is a stub. You can help the OLPC project by expanding it.

Developing for the OLPC

Thank you for considering working on the One Laptop Per Child project. This page tries to provide you with the answers you need to get started either by contributing to existing projects or starting your own.

Setting up a Development Environment

The OLPC's software environment is a heavily modified Fedora Core Linux system running a custom GUI shell (Sugar). To develop for the platform you will eventually need access to a platform which runs in a manner substantially similar to the OLPC environment. Luckily there are many available options.

Emulation (Recommended for New Developers)

By far the most time-efficient and effective way to start developing for the OLPC system is to download an operating system image that can be run in one of the popular emulation/virtualisation systems, such as Qemu, VMWare or Parallels. These images allow you to run a virtual OLPC-configured machine on your regular development workstation.

There are two major classes of images available, one group is as close as possible to the OLPC installation. These official images do not provide GUI IDEs or SVG graphics editors. They normally would be used either with command-line tools (e.g. VIM) or with an NFS (or similar) share to a workstation on which you will do your actual coding. As a result, the official images tend to involved either more Unix developer-toolchain familiarity or more setup in your development environment.

The second group of images are the Developer Images, which are intended to be used as virtual desktop machines. The images have far more software than is installed on the OLPC laptops. They resemble a developer's desktop machine which has been upgraded to support the Sugar environment. They tend to have GUI IDEs, full Gnome desktop installations and the like, which make it easy for developers to work entirely within the emulated environment.

Developers working on Developer Images should be sure to test their creations on real OLPC Laptops or official images in order to be sure that they do not have dependencies on software not available on the actual laptops.

Native Linux Installation

There are two major approaches to a native Linux installation of the OLPC Sugar system. In the first, you use the

 sugar-jhbuild build-base 

command to build a parallel set of the libraries required to run the OLPC software. This approach generally works reasonably well on most modern Linux distributions, though the build system (jhbuild) tends to be very fragile, so you may spend quite some time rebuilding and fixing errors to get a final working system.

In the second approach you update your Linux operating system to such a point that it resembles the OLPC environment. You should be aware that such upgrades often will require you to update well beyond the "stable" configurations for your Linux distribution, and as such may make your system unstable. As of 2007-04-08 only Fedora Core 6/7, Gentoo and Ubuntu Feisty Fawn are known to upgrade reasonably well.

Hardware Solutions

Joining or Staring a Project

Communications Channels

Requests and Ideas for Projects

Existing Projects

Available Resources

Documentation

Tutorials

Frequently Referenced Documents

Frequently Asked Questions

Links

Using your PC for development: the Software Development Kit

This collection of programs is designed to assist 3rd party developers begin work on software for the OLPC

Installation

NOTE: The following information is obsolete - Use [pilgrim] instead

Using Yum

 $ su root 
 # cd /etc/yum.repos.d
 # wget http://people.redhat.com/berrange/olpc/sdk/olpc-sdk.repo
 # yum install olpc-sdk

Or if RPMs are desired they can be downloaded from link RedHat

Set up

Work in Progress.

Images of the software on the OLPC

At this stage in development we have daily images that are automatically generated. They work most of the time but it's very possible that some times we get an image that won't boot or has some kind of startup problem. At some point in the not too distant future we'll have a list of "known good" images that have gone through some testing.

If you want to download a daily image, please visit the OLPC Software Testing page for details on how to use them.

Development Notes

Using the Classic Linux Environment on the OLPC

It's possible to install a classic Linux environment on the laptop. You might want to use this to do development or testing of the hardware. Note that this is very different than what will be on the laptop in the end.

Future Notes

  • We should have a small development environment for you to use soon. While it's possible to use a Fedora Core Rawhide release to do development, you will want to make sure that your code works and compiles in a development environment that only contains the software that will be on the end laptop. This will be your final check before attempting to deploy software.
  • We will have more information soon about Sugar and building activities in python. We've only now gotten to the point where the builds are usable and should build out some development documentation soon.
  • Eventually some volunteers will flesh out the information on the OLPC Python Environment to help people set up development environments on their favorite OS.