Developers/Getting Started

From OLPC
< Developers
Revision as of 13:27, 4 August 2008 by CScott (talk | contribs) (Sketch out a developer's "Getting Started" page.)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

This document attempts to guide you through the first steps towards using your new XO as a development platform, and to point you to resources for project ideas and programming APIs.

Step 1: Request a developer key

The XO contains hardware and software theft-deterrence features, which sometimes get in the way of a prospective hardware or software hacker. The first step in joining the developer community is to request a developer key to allow you to turn these off if needed. Depending on where you are in the world, getting your developer key may take up to two weeks (!) so putting in the request should be the absolute first thing you do. There are many things you can hack around with even without a developer key, but you might as well get the process started so it won't be an impediment when you need one.

(Since the developer key turns off the theft-deterrence features, a deployment needs to verify that your laptop has not been reported stolen before granting the key. Depending on the deployment and its communications infrastructure, this could take a while, and we try to set the "wait time" to an appropriate interval for each deployment. If you feel like the wait is excessive, please email help at laptop.org -- but try not to burden them unduly.)

Instructions for requesting and installing a developer key are at Activation and developer keys on our wiki.

When you've received your developer key, there are two ways you can use it:

  1. You can invoke 'disable-security' from the Open Firmware prompt to skip all key checking (until you invoke 'enable-security' again). This also turns off "pretty boot" allowing you to see all the start up messages when you boot.
  2. You can install your developer key in /security/develop.sig, where it can be managed with the Security control panel (<trac>6428</trac>).

Although the choice is up to you, we hope you'll chose the latter option, since that exercises the key-checking and "pretty boot" code. Although we hope these never break, bugs do happen, and having our developers regularly testing this code ensures that problems are quickly discovered and fixed. Better you finding the bugs than some poor 6-year-old in Peru!

The Security control panel (will) also let you easily enable/disable the 'unlocking' performed by the developer key, so you can test your code in "secured" mode if necessary. (You can do the same with 'enable-security' from the Open Firmware prompt, but there's less safety checking performed, so it's easier to inadvertently lock yourself out of your machine that way.)

Step 2: Join some mailing lists!

The most important mailing list at OLPC is the devel list; it is the canonical list for all development work. If you're uncertain where your question or patches should go, devel is not a bad choice. The devel list is pretty high volume, though, so not everyone reads every post, which sometimes means that your question or patch might get lost in the noise. There are a number of more focused lists where you might be able to get more attention and/or avoid drowning in the flood of posts:

  • devel-announce is a low-volume list for announcement of interest to developers: typically new code releases and testing instructions. Not for general discussion!
  • sugar is the primary list for high-level user interface development.
  • server-devel is for school server development
  • support-gang is where all the helpful people hang out
  • security is for discussion of linux and bitfrost security, activity isolation, 'rainbow' (our security subsystem), and theft-deterrence measures.
  • And see http://lists.laptop.org/listinfo/ for even more!

Click on any of the links above to subscribe to the list or view archives. In most cases you must be subscribed to a list in order to post to it. Please do take a moment to review the archives of a list before posting, to verify that your question or patch is on topic.

Step 3: Find a project

You may already have in mind something you'd like to hack on. If you need ideas, though, we've begun trying to keep a list of projects we'd like help on, or like to see someone tackle:

  • You're reading a wiki! That means that you can help editing this page (or others on this site) and keeping information up to date or contributing helpful articles. That's always helpful. You can start with this page and flesh it out -- but try to keep it relatively short so we don't drown newcomers.
  • We could use more "how to" and "tutorial" articles. There are a number listed under Tutorials; we can use more! Also, fixes to tutorials as they drift out of date are always welcome.
  • Lots more projects are listed at Projects and proposals and related pages.
  • The mailing lists are always a good source of ideas as well: find the list that best matches what you'd like to work on, and ask if anyone needs some help. Be aware that offers of help greatly out-number actual contributions of helpful code, so if you don't seem to be getting attention, try including some code -- even simple proofs of concept are useful as a way to focus attention on specifics. But, on the other hand, beware of spending 6 months working on your beautiful idea in a cave without talking to anyone: you may find that when you finally unveil your masterpiece that it doesn't actually fit into OLPC's larger plan for the platform. Seek the balance between discussion with the larger community and private hacking to flesh out specifics.
  • This page is relatively "code hacker" centric, but there are lots of opportunities for less-coding sorts of help, from support-gang, to library content, to educator groups.

Step 4: Have fun!

All work and no fun makes Jack a dull boy. Hook up with XO roadshows, contribute to a developer miniconference, write yourself a profile, and have yourself some fun. If you can think of something it would be great for us to have, go ahead and make it. One Laptop per Child relies on thriving local communities to succeed.