diydrones/ardupilot — pull request #183 by wiseman (2013-04-04 19:19:29+00:00)
Title: Document & automate development prerequisites

This change is an attempt to make it easier to set up a development environment for ardupilot.

It does 3 things:

1. Provides specific documentation of development prerequisites (what software needs to be installed).
2. Begins to automate the installation of development prerequisites (via shell scripts).
3. Provides a Vagrantfile that in combination with the script from # 2 allows anyone on OS X, Windows or Linux to create a standardized development virtual machine running Linux in a few minutes.

There is some documentation about setting up a development environment, but it is scattered and underspecified. For example, on the topic of Arduino on Linux, [BuildingWithMake](https://code.google.com/p/ardupilot-mega/wiki/BuildingWithMake) just says you need "a working, current Arduino install." The current ardupilot README tells you to use `make` instead of the Arduino IDE, but doesn't say anything else about installing Arduino. Specific documentation is good, an automated script is even better.

Once a user has VirtualBox and vagrant installed, these two commands are all that is required to bring up a fully functional development environment (including PX4) on OS X, Windows or Linux:

```
vagrant up
vagrant ssh -c "ardupilot/Tools/scripts/install-prereqs-ubuntu.sh -y"
```

Compare to the instructions at [PX4DevEnv in the wiki](https://code.google.com/p/arducopter/wiki/PX4DevEnv)--which only covers Windows.

I think that having at least basic (but specific) development documentation in the repo itself is a good idea--it's right there when someone looks at the github page for the code; they don't have to try to hunt things down in the wiki. It also means that any developer who can change the code can update the development docs.

I've documented the prereqs for (Ubuntu) linux. Someone else who knows how to build on OS X or Windows can add instructions for those platforms.

I still need to test connecting to hardware and uploading firmware from the virtualbox environment, but I wanted to get some feedback on this change.