Contributing

There are several ways of contributing to the Pingo project.

Use Pingo

If you use Pingo and spread the word about it, that is already very helpful!

In the Drivers Table, check the Status column: drivers with level 0, level 1 and level 2 are ready to use, with the capabilities described in Status of drivers.

If you find bugs or have suggestions for improvements, please report them in the Git Hub issue tracker at:

https://github.com/pingo-io/pingo-py/issues

Get in touch

If have trouble using Pingo, or would like to make suggestions or share your discoveries, our main forum is the pingo-io users and developers group at:

https://groups.google.com/forum/#!forum/pingo-io

If you are in São Paulo, mini-sprints for working on Pingo happen often at Garoa Hacker Clube on Wednesday evenings starting at 19:30.

Write examples

If you’d like to contribute with code, the easiest way to get started is writing examples using Pingo to control any board that you may have available. Many of the Arduino examples may be adapted to use Pingo.

The steps are:

  1. Create an account on Github if you don’t have one.
  2. Fork the pingo-io/pingo-py repository on Github.
  3. Clone your fork to work on it.
  4. Code your examples.
  5. Commit and push your changes to your fork.
  6. Use the Github Web interface to submit a pull request.
  7. If approved, your changes will be merged.
  8. You are now a contributor to Pingo! Celebrate!!

Clone the repository, create your examples in a board subdirectory, for example pingo/pcduino/examples/blink.py.

Contribute to an existing driver

If a driver is at level 0, implementing analog input will take it to level 1, an important step (level 1 is the minimum functionality needed for the classic Coding Dojo with Arduino-or-MiniPC invented at Garoa). Then there is level 2 and other levels yet to be defined.

Within a driver level, we can always fix bugs or improve the performance.

Before contributing to an existing driver, please coordinate with the other contributors. Send a message to the mailing list explaining what you intend to do and wait for some feedback: somebody may be working on the same driver, or have other ideas to help you.

Create new drivers

A growing number of boards capable of running Python is coming to market. Our goal is to have Pingo support all of them.

To create a new driver the best way to start may be to copy the module and tests of a similar board. For example, UDOO and pcDuino both use sysfs as the main means of controlling the GPIO pins. At this writing, there is no pcDuino driver but there is a level 0 UDOO driver, so a level 0 pcDuino driver can be created and tested in a few hours (by the way, analog input is much easier on pcDuino than on UDOO, so a level 1 driver for the pcDuino would not take much longer. See the experiments/pcduino/dojo/ directory).

The experiments/ directory in the main repository has scripts in Python and other languages that show basic programming of the boards. Look in that directory for code that may help you get started, or create your own experiments there to understand how to interact with the board using Python.