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!
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
|PublicLab.org||This very website!||github:publiclab/plots2|
|MapKnitter||Assemble aerial images into maps.||github:publiclab/mapknitter|
|Spectral Workbench||Material analysis using DIY spectrometry.||github:spectral-workbench|
|PublicLab.Editor||A general purpose, JS/Bootstrap UI framework for rich text posting, with an author-friendly, minimal, mobile/desktop interface.||github:publiclab/PublicLab.Editor|
|Leaflet.DistortableImage||Leaflet plugin built for MapKnitter. Enables images to be distorted.||github:publiclab/Leaflet.DistortableImage|
|Leaflet.Illustrate||Leaflet plugin built for MapKnitter. Enables text annotations on Leaflet maps.||github:manleyjster/Leaflet.Illustrate|
|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: https://github.com/publiclab
First time contributors
New to open source/free software? Here are some resources to get you started:
A very in-depth guide: https://egghead.io/series/how-to-contribute-to-an-open-source-project-on-github
On our PublicLab.org GitHub repository, we've listed some "good for first timers" bugs to fix here: https://github.com/publiclab/plots2/labels/first-timers-only
We also have a slightly larger list of easy-ish but small and self contained issues: https://github.com/publiclab/plots2/labels/help-wanted
Contributing for non-coders
Not interested (or not yet interested) in coding, but still want to help out? Have a project you really need to get your work done, and trying to encourage coders to tackle it?
You can still help out; in fact, helping to clearly describe and document problems and new feature proposals is at least as important as writing the code itself.
When creating or editing an issue, try to:
- Clearly describe the problem, linking to pages where it can be observed, or where a new feature might live. Include screenshots to be very specific!
- (for bugs) If you don't know the problem, do what you can to help others narrow it down: provide contextual information like your browser, OS, and what you were doing when it happened. Did it used to work? Does it still, but only sometimes? Help them reproduce it!
- Propose a solution. Whether or not you code, describing what should or could happen, or even what you expected to happen is always helpful to someone looking to fix it. This can be as simple as "It should show a notification." or "There should be a way to hide it."
Once an issue is well documented, we can tag it with
help-wanted to get the word out that we're looking for someone to try to fix it. If you're not sure if it's ready, ask on the plots-dev list
Finally, if your issue is well documented, try to get involved in some outreach to new contributors to match someone with the project! Tell them what it'll help you achieve and why you'd appreciate help. And coordinate with the plots-dev discussion list to get the word out.
Preparing issues for newcomers
Related to the above, even if you are a coder, we need help "rolling out the red carpet" (as the Hoodie project calls it) for new contribtors, to grow our contributor base. The steps in Contributing for non-coders are a good starting point, but as a coder, you can also deep-link to the relevant lines of code, with Github links and pointers like:
This is especially great for attracting coders who are not only new to our code, but new to coding in general! Again, please look to this as a good example of a
help-wanted issue: https://github.com/publiclab/plots2/issues/329
For first time contributors, another thing you can add, shown in that issue, is a checklist outlining each step they'll need to do. This can be really helpful to someone who hasn't contributed to open source code before. It's also important that the bug or feature be relatively self-contained, so it's easier to tackle. Not every issue is a good fit for first-time coders.
If you go the extra mile to prep your issue for first timers, consider tagging your issue with
first-timers-only and it'll be syndicated on Twitter and elsewhere via FirstTimersOnly. You might consider marking it with this introduction, too, since it takes some work to make these:
Hi, this is a `first-timers-only` issue. This means we've worked to make it more legible to folks who either **haven't contributed to our codebase before, or even folks who haven't contributed to open source before**. If you have contributed before, consider leaving this one for someone new, and looking through our general [help wanted issues](https://github.com/publiclab/plots2/labels/help-wanted). Thanks!
You can also take a look at this post on the Hoodie project for some tips about what makes a great issue description for new coding contributors.
What if someone else created the issue, but you want to post a "tidied up" version with more clear documentation? Try creating a new issue and leaving a comment on the old one, something like "moving to #343 for a cleaner presentation of the issue". Then the old issue can be closed.
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.
Simple installation with Cloud9
Cloud9, at http://c9.io, 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 PublicLab.org, but there are similar instructions available for Spectral Workbench and MapKnitter (coming soon). Each is listed in that project's README file:
- If you have a GitHub account, visit https://c9.io and log in with the GitHub button.
- Fork this repository to your own GitHub account, creating a
yourname/plots2project. (or the corresponding project you're working on)
- 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
- In the command line prompt at the bottom of the page, type
./install_cloud9.shand press enter.
- Enter your username when prompted, and click "Run Project" when it's done.
- 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. Github has a really great tutorial on this, but we've reproduced the most basic workflow here:
You'll need a Github account:
- Visit the repository (such as https://github.com/publiclab/plots2) you want to contribute to, and fork it with the button to the upper right.
- Find the file you want to edit in your own fork. It'll be on a page (this won't exist until you fork) at a URL like
https://github.com/<yournamehere>/plots2/blob/master/app/views/layouts/_header.html.erb, but you could navigate to it through Github's file browsing interface as well.
- Press the pencil button in the upper right:
- Edit the code, then below, create a pull request with your new change (give it a name like 'yourname-header-tweaks'):
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.