This document provides guidance on how to make contributions to the Foreman project. It discusses managing issues in Redmine, setting up a development environment, crafting code patches, submitting pull requests, and the review process. Specific issues are listed that could be worked on, related to Foreman core, the Foreman installer plugin, and the Hammer CLI. The goal is to welcome and guide new contributors.
2. Agenda
●
Managing issues
●
Your development environment
●
Crafting your patch
●
Submitting the pull request
●
Review and test process
●
Hack!
Contributing | 2 | Dominic Cleal
3. What can you contribute to?
●
Code fixes, features: Foreman, proxy, SELinux
●
Translations on Transifex
●
Packaging in foreman-packaging
●
Puppet installer in foreman-installer, puppet-*
●
●
User support on #theforeman and foremanusers
Redmine issue triage and cleanups
Contributing | 3 | Dominic Cleal
4. Tracking issues
●
Foreman and related projects all use Redmine
http://projects.theforeman.org
●
●
Look for “Projects”, then “Foreman”
Saved search on the right hand side for easy
and trivial issues
Contributing | 4 | Dominic Cleal
5. Development environment
●
Use a separate Ruby environment
●
rvm or rbenv highly recommended
●
Use a “gemset” or equivalent to isolate
●
Use “bundle install” to install all dependencies
●
Run “rake test” to run all tests
●
Installer can be tested with rspec-puppet, or
directly on a VM
Contributing | 5 | Dominic Cleal
6. Crafting your patch
●
Basic git workflow
–
GitHub help pages are good, e.g.
https://help.github.com/articles/fork-a-repo
●
git clone https://github.com/theforeman/foreman
●
git pull upstream develop
●
git checkout -b 1234-foo-bar
●
git commit -a
–
●
“fixes #1234 – changed foo to handle bar condition”
git push origin
Contributing | 6 | Dominic Cleal
7. Submitting a pull request
●
●
●
When a branch is pushed to GitHub, you can
open a pull request from your fork page
Pull requests will get reviewed by a core
maintainer
Tests will be executed for all Ruby/databases
Contributing | 7 | Dominic Cleal
9. What to work on today
●
Foreman core
–
#2954: fix welcome text to aid translation
–
#3163: add a link to “welcome” page
–
#1618: fix wording of report time drift (patch)
–
#3767: add “new host” menu item
–
#3685: change element sizes on VM form
–
#1916: sorting of subnets in view
Contributing | 9 | Dominic Cleal
10. What to work on today #2
●
Foreman installer (Puppet)
–
–
#3308: installer plugin support
–
●
#2702: consistent “common” module path
#3185: refresh proxy features in installer
Website
–
●
#3132: document installer git repo support
Hammer CLI
–
#4129: error thrown on sc_param command
–
#4131: OS info command missing attributes
Contributing | 10 | Dominic Cleal