This is a testing site only. See the live Public Lab site here »

Public Lab Wiki documentation


This is a revision from September 03, 2015 20:23. View all revisions
4 | 80 | | #9491

The Public Lab Developers group is an open group for Public Lab related (or -interested) programmers and developers. Float ideas, solicit feedback, get involved in existing PL programming projects, or start your own!

Sign up

How to contribute

We are actively seeking contributors, so please introduce yourself on the developers list and ask about how you can help keep these free and open source software projects working (and improving) for our thousands of community members!

Start by reading our contribution guidelines

Public Lab Software

Project Description Source Code
MapKnitter Assemble aerial images into maps. github:publiclab/mapknitter
Spectral Workbench Material analysis using DIY spectrometry. github:spectral-workbench
Leaflet.Illustrate Leaflet plugin built for MapKnitter. Enables text annotations on Leaflet maps. github:manleyjster/Leaflet.Illustrate
Leaflet.DistortableImage Leaflet plugin built for MapKnitter. Enables images to be distorted. github:publiclab/Leaflet.DistortableImage This very website! github:publiclab/plots2
Infragram Analyze plant health with infrared imagery. github:p-v-o-s/infragram-js
MapMill Upload and collaboratively rank large batches of aerial imagery. github:publiclab/mapmill

Public Lab is on Github at:

Google Summer of Code

Lots of development on Public Lab software happens as part of the GSoC program, supported generously by Google. Looking at the GSoC Ideas list is a great place to find projects which our community really needs to get done, whether or not you're in the program.

Read more at, and review recent GSoC proposals/projects at

Testing server

We have a plots2 testing server available for testing larger code changes and database migrations; please contact for details, and submit a public key for access. General testing procedure is as follows:

  • thoroughly test on local copy, with seeded database
  • get ssh access to

  • reimport db if needed (web@ can help with this)

  • create new git branch in /home/warren/sites/
  • pull in new changes
  • rake db:migrate etc if needed
  • run rake test
  • run ./restart from rails root dir
  • manually compare with
  • wash, rinse, repeat
  • check with web@ about deployment to production once you're ready!

Installation videos


Simple installation with Cloud9

Cloud9, at, can be used to set up a complete development environment, for free, in the cloud -- including Git and a test suite, so you can make changes and create pull requests. These instructions are for, but there are similar instructions available for Spectral Workbench and MapKnitter (coming soon). Each is listed in that project's README file:

  1. If you have a GitHub account, visit and log in with the GitHub button.
  2. Fork this repository to your own GitHub account, creating a yourname/plots2 project. (or the corresponding project you're working on)
  3. Name your project, then (order important!) choose the Ruby template, THEN enter yourname/plots2 (or the corresponding project) in the "Clone from Git or Mercurial URL" field, and press Create Workspace
  4. In the command line prompt at the bottom of the page, type ./ and press enter.
  5. Enter your username when prompted, and click "Run Project" when it's done.
  6. You're done! Go to the URL shown!

Really basic Github contribution

There is a way to contribute to Public Lab software without using a command line or having any special computer or setup, as long as your changes are simple -- this works best for just changes to text or HTML, not executable code. You'll need a Github account:

screenshot 2015-08-24 at 12 35 42 pm

  • Edit the code, then below, create a pull request with your new change (give it a name like 'yourname-header-tweaks'):

screenshot 2015-08-24 at 12 37 53 pm

At this point, we'll see your pull request, provide feedback, test it out, and hopefully integrate it. Things may get more complex, but this is a great starting point.