Developers/Projects: Difference between revisions

From OLPC
Jump to navigation Jump to search
(Move the project-starting device in here...)
(Rewrite for coherence.)
Line 1: Line 1:
[[Developers/Stack|Previous]] [[Developers|Up]] [[Developers/Communication|Next]]
[[Developers/Stack|Previous]] [[Developers/Communication|Next]]


= Existing Projects =
Most developers will probably be working on an Activity for use on the OLPC. This kind of development can normally be done with little interaction with other development groups.


[[Software projects]] describes the currently active projects that may need help.
= Requests and Ideas for Projects =


Most new developers are probably wanting to work on an Activity (a stand-alone application) for deployment to end-users (normally children). We are always, however, looking for help on the core systems (e.g. [[Sugar]], [[DataStore]], [[Bitfrost]], [[School Server]]), particularly from advanced Python coders and people interested in doing documentation and [http://www.laptop.org/pootle translation].
[[Software ideas]] describes activity and tool types that are currently needed. If you have an idea for an activity, add it to the list in the appropriate category (create a new category if necessary). You can create a new wiki page to describe your idea in more detail.


If you are looking for a more mature project to join, the various [[Activities]] available on the XO may need help. Bug fixing, testing, documentation, translations and the like are always highly sought-after contributions in mature projects.
= Existing Projects =


= New Projects =
[[Software projects]] describes the currently active projects that may need help. Once you have decided on a project, add yourself to the list along with your contact information, homepage (which may be a wiki page on the OLPC wiki), etceteras. In particular, the various [[Activities]] available on the XO may need help as build time draws near; if you're looking for an existing project to get your feet wet with, check there.


If you are looking to start your own project, there are lots of as-yet-unmet requests to be filled. Or maybe you already have an idea of what you want to do. Either way, read this section for a discussion of how to integrate your project into the OLPC project.
= Starting Your Project =


== Recording the Idea ==
* Announce your project on the [http://lists.laptop.org/listinfo/devel OLPC devel list] so that people know what you are working on and duplication of effort is reduced
* Add your project to the [[Software projects]] page
* Distribute your source code under the GPL, LGPL or MIT license.
* Test your application in an official image (or a physical laptop) before publishing broadly
* When ready to test with real users add your activity to the [[Activities]] page to allow for easy download and installation


If you have a great idea for a new project, please add it to the [[Software ideas]] page so that it is not lost. Consider adding contact information so that people can contact you to ask questions about the idea.
== Available Resources ==


Try to keep the entry to a line or two. If you need more space, create a new wiki page to describe the idea in detail. If you intend to work on the project yourself, this can become the homepage for your project eventually.
The [[Developers Program]] provides general [[Project hosting| project management]] facilities for OLPC projects.

By recording the idea before you begin work, we can ensure that a great idea isn't lost because "life got in the way".

== Finding an Idea ==

The obvious result of recording a great new project idea on the [[Software ideas]] page is that if you are looking for a new project idea, there are lots of them.

If you find an idea on the software ideas page, remember that lots of other people have probably read that page and may also be intending to work on that project. Be sure to advertise your intention to work on the project loudly so that you can flush anyone working on it silently out of the woodwork.

If the requirements are not clear, consider contacting the person who posted the request to get more information about what they were intending. Even if the requirements seem clear, consider contacting the person. Even if '''you''' wrote the requirements, consider [[Developers/Communication|discussing]] the requirements in public so that you can get input and feedback on what/how/whether the project should or could be done.

== Path to Release ==

There are some basic steps you should take to start your new project and get it to the point where children are using it on their laptops:

* [http://lists.laptop.org/listinfo/devel Announce your project] before you even start work
** So that people know what you are working on and can potentially help you out
** In case someone else is already working on a similar project
* Add your project to [[Software projects]]
** Add your contact information so that potential collaborators can reach you
** Homepage (e.g. a page on the wiki with a full description of the project)
* Set up a Source Code Repository, Bug Tracker and the like
** The [[Developers Program]] can provide [[Project hosting]] for OLPC-compatible projects
** You can find other free hosting services such as SourceForge, Savanah and LaunchPad if you prefer
** Be sure you have a public bug tracker available somewhere, think '''millions''' of users, there '''will''' be bug reports!
* '''Code'''
** Remember to use source control, lost work sucks
* Distribute your source code under the GPL, LGPL or MIT license
* Test your application in an official image (preferably on a physical laptop) before publishing broadly
** People will often test new code on their OLPC-XO if you don't have one
* When ready to test with real users add your activity to the [[Activities]] page to allow for easy download and installation


[[Developers/Stack|Previous]] [[Developers|Up]] [[Developers/Communication|Next]]
[[Developers/Stack|Previous]] [[Developers/Communication|Next]]

Revision as of 22:18, 14 December 2007

Previous Next

Existing Projects

Software projects describes the currently active projects that may need help.

Most new developers are probably wanting to work on an Activity (a stand-alone application) for deployment to end-users (normally children). We are always, however, looking for help on the core systems (e.g. Sugar, DataStore, Bitfrost, School Server), particularly from advanced Python coders and people interested in doing documentation and translation.

If you are looking for a more mature project to join, the various Activities available on the XO may need help. Bug fixing, testing, documentation, translations and the like are always highly sought-after contributions in mature projects.

New Projects

If you are looking to start your own project, there are lots of as-yet-unmet requests to be filled. Or maybe you already have an idea of what you want to do. Either way, read this section for a discussion of how to integrate your project into the OLPC project.

Recording the Idea

If you have a great idea for a new project, please add it to the Software ideas page so that it is not lost. Consider adding contact information so that people can contact you to ask questions about the idea.

Try to keep the entry to a line or two. If you need more space, create a new wiki page to describe the idea in detail. If you intend to work on the project yourself, this can become the homepage for your project eventually.

By recording the idea before you begin work, we can ensure that a great idea isn't lost because "life got in the way".

Finding an Idea

The obvious result of recording a great new project idea on the Software ideas page is that if you are looking for a new project idea, there are lots of them.

If you find an idea on the software ideas page, remember that lots of other people have probably read that page and may also be intending to work on that project. Be sure to advertise your intention to work on the project loudly so that you can flush anyone working on it silently out of the woodwork.

If the requirements are not clear, consider contacting the person who posted the request to get more information about what they were intending. Even if the requirements seem clear, consider contacting the person. Even if you wrote the requirements, consider discussing the requirements in public so that you can get input and feedback on what/how/whether the project should or could be done.

Path to Release

There are some basic steps you should take to start your new project and get it to the point where children are using it on their laptops:

  • Announce your project before you even start work
    • So that people know what you are working on and can potentially help you out
    • In case someone else is already working on a similar project
  • Add your project to Software projects
    • Add your contact information so that potential collaborators can reach you
    • Homepage (e.g. a page on the wiki with a full description of the project)
  • Set up a Source Code Repository, Bug Tracker and the like
    • The Developers Program can provide Project hosting for OLPC-compatible projects
    • You can find other free hosting services such as SourceForge, Savanah and LaunchPad if you prefer
    • Be sure you have a public bug tracker available somewhere, think millions of users, there will be bug reports!
  • Code
    • Remember to use source control, lost work sucks
  • Distribute your source code under the GPL, LGPL or MIT license
  • Test your application in an official image (preferably on a physical laptop) before publishing broadly
    • People will often test new code on their OLPC-XO if you don't have one
  • When ready to test with real users add your activity to the Activities page to allow for easy download and installation

Previous Next