Project

General

Profile

Contribute » History » Version 24

Version 23 (Corey Osman, 12/10/2012 01:35 AM) → Version 24/25 (Maria Nita, 03/23/2014 09:31 PM)

h1. Contribute



{{toc}}



Foreman is built and maintained by community volunteers. If you enjoy using it and would like give back to the community, there are several ways to contribute back to the project.



h2. Code Related



These require a familiarity with Ruby on Rails development. If you are still new to Rails, Community members can help you if you get stuck with something or have any other questions.



You will need to download a copy of the current development-code. The official code repository is located in Github and can be downloaded by following the [[Installing latest code]].



Please note that there are two important branches:



*Master* - latest stable release code

*Develop* - new features and bug fixes



Master is frozen between major releases.



h3. [[test environment|Setup test environment for unit/functional test]]



h3. Development



First, make sure you are a member of the "Foreman Developers mailing list":https://groups.google.com/group/foreman-dev



Patches to fix bugs or add new features are always appreciated. If you are going to work on a specific issue, make a note in the issue details so the developers will know what you're working on.



We try to keep a one commit per bug/feature policy, please try to create an issue which is specific for your patch details.



h3. Submit Patches



h4. New Way - github



# Please make sure there is a Redmine "issue":http://theforeman.org/projects/foreman/issues open for the change you are going to submit, as you will want to reference it in your commit message. (This is very helpful when generating release notes.)

# Fork theforeman/foreman (https://github.com/theforeman/foreman) to a personal github account

#* https://help.github.com/articles/fork-a-repo

#* Should end up with a repo of <username>/foreman

# Clone personal foreman fork to local system

#* <pre>git clone https://github.com/<username>/foreman.git</pre>

# Reference theforeman/foreman as upstream

#* <pre>cd </path/to/local/foreman/git/repo>

git remote add upstream https://github.com/theforeman/foreman.git

git fetch</pre>

# Create a feature/topic branch

#* <pre>git checkout -b <branchName></pre>

#* Example: git checkout -b 1656-add_TB_support

# Make changes and commit

#* <pre>git add <modifiedFile(s)>; git commit -m 'fixes #<bug> <message>'</pre>

#* Please reference the Redmine issue this commit addresses via "refs" or "fixes" #issueid in the commit message

# Push topic branch to your fork

#* <pre>git push origin <branchName></pre>

#* Example: git push origin 1656-add_TB_support

# Issue a pull request

#* https://help.github.com/articles/using-pull-requests

# Add a thread to foreman-dev

#* https://groups.google.com/forum/?fromgroups#!forum/foreman-dev

#* Subject could be maybe in format foremat of '[PATCH] <git commit msg>'

#* Add patch diff and any notes to body



Once you have followed this process once, it becomes much simpler to add future patches!



# Merge upstream develop to local develop

#* <pre>git fetch upstream

git checkout develop

git rebase upstream/develop develop

git push origin develop

</pre>

# Now follow step 5 to the end from above.



h4. Old Way - mail_patches



Patches are normally reviewed before they are merged into the develop branch, in orderer to send them to the developers mailing list, please commit the code as normal and then execute the following rake task



<pre>

rake mail_patches

</pre>



which would send your patches to review, once accepted they will merged upstream. Please note you need both git and git-email packages installed.



h2. Non Code Related



These don't require any software development experience, just some time and the desire to help.



h3. User support



Helping out other users in the "Forums" is always useful. Frequent problems or questions should be brought up so the wiki can be updated to help future users.



Testing is also very welcomed, for any issue encountered, please open a bug / feature request.



h3. Issue triage



Sometimes issues are reported without all the information needed by a developer. Getting the details of the bug or feature from the reporter and the community will help everyone understand what is needed.



h3. Design and User interface



Foreman uses a very basic design and user interface. Any improvements to it including new themes, skinning, or interface adjustments could help every user.