Skip to content

Contributing to Loomio

jonlemmon edited this page Jul 12, 2012 · 18 revisions

Our development & design processes

Loomio is being developed in Ruby on Rails by a team of dedicated volunteers. We are passionate about agile methodology and we favour rapid iteration and continual improvement over trying to do everything perfectly the first time. We have a strong focus on user-centered design. We operate with a “flat” structure, meaning at the end of the day there’s no single person calling the shots. We all work together and decide collectively what the best decisions are. And we make these decisions using Loomio itself.

Choosing a task to work on

If you want to start contributing code to Loomio and you're not sure where to start, send a message to the Loomio Developers mailing list at loomio-dev@googlegroups.com. Just mention what your skills/interests are and someone can point you in the right direction.

If you're interested in seeing what the rest of the team is working on, check out our Current Development Trello Board. We currently use Trello (a project/list management tool) to manage our project. For more information on how we organize our tasks, have a read through Loomio Trello Workflow.

Submitting changes to the Loomio codebase

Here is the easiest way to submit code contributions to Loomio:

  1. Fork the repository - https://github.com/enspiral/loomio
  2. Make some changes and then push your changes to a branch on your fork
  3. Submit a pull request - this will notify others that your code is waiting to be reviewed
  4. Check back on your pull request to see if there are any comments - different people from the team may have comments about the code, and you can talk about potential improvements/changes before it is accepted into the codebase

Writing tests for your changes

We're big on the whole "test-driven development" thing. We use rspec to write our tests. If you're making changes to any Rails code, you should be writing tests for your changes as well. If you haven't already, Google "rails rspec" and do some reading. Then have a look in our spec directory to see some examples of how we write our tests.

To run the tests, simply execute bundle exec guard inside your Loomio project directory. 0 failing tests == a good thing. If you have any questions about how to write/execute tests feel free to pipe up in the mailing list.

Note: we use Jasmine to test our javascript. If you haven't already, you'll need to install PhantomJs (a dependency of Jasmine) to get the javascript tests to run. Also note: if you’re installing PhantomJs on Mac, we recommend not using brew - it doesn’t seem to work (as of June '12). Just download the zip file, extract it, and move the bin/phantomjs file into your /usr/local/bin directory.