:compat-mode: legacy
= Frequently Asked Questions =

[qanda]
Who is this document intended for?::
 Anyone who wishes to read and/or edit the Pacemaker source code.
 Casual contributors should feel free to read just this FAQ, and
 consult other chapters as needed.

Where is the source code for Pacemaker?::
 indexterm:[downloads]
 indexterm:[source code]
 indexterm:[git,GitHub]
 The https://github.com/ClusterLabs/pacemaker[source code for Pacemaker] is
 kept on https://github.com/[GitHub], as are all software projects under the
 https://github.com/ClusterLabs[ClusterLabs] umbrella. Pacemaker uses
 https://git-scm.com/[Git] for source code management. If you are a Git newbie,
 the http://schacon.github.io/git/gittutorial.html[gittutorial(7) man page]
 is an excellent starting point. If you're familiar with using Git from the
 command line, you can create a local copy of the Pacemaker source code with:
 `git clone https://github.com/ClusterLabs/pacemaker.git`

What are the different Git branches and repositories used for?::
 indexterm:[branches]
 * The https://github.com/ClusterLabs/pacemaker/tree/master[master branch]
   is the primary branch used for development.
 * The https://github.com/ClusterLabs/pacemaker/tree/2.0[2.0 branch] contains
   the latest official release, and normally does not receive any changes.
   During the release cycle, it will contain release candidates for the
   next official release, and will receive only bug fixes.
 * The https://github.com/ClusterLabs/pacemaker/tree/1.1[1.1 branch] is similar
   to both the master and 2.0 branches, but for the 1.1 release series.
   The 1.1 branch receives only backports of certain bug fixes and
   backward-compatible features from the master branch. During the release
   cycle, it will contain release candidates for the next official 1.1 release.
 * The https://github.com/ClusterLabs/pacemaker-1.0[1.0 repository] is a
   frozen snapshot of the 1.0 release series, and is no longer developed.
 * Messages will be posted to the
   http://clusterlabs.org/mailman/listinfo/developers[developers@clusterlabs.org]
   mailing list during the release cycle, with instructions about which
   branches to use when submitting requests.

How do I build from the source code?::
 See https://github.com/ClusterLabs/pacemaker/blob/master/INSTALL.md[INSTALL.md]
 in the main checkout directory.

What coding style should I follow?::
 You'll be mostly fine if you simply follow the example of existing code.
 When unsure, see the relevant chapter of this document for language-specific
 recommendations. Pacemaker has grown and evolved organically over many years,
 so you will see much code that doesn't conform to the current guidelines. We
 discourage making changes solely to bring code into conformance, as any change
 requires developer time for review and opens the possibility of adding bugs.
 However, new code should follow the guidelines, and it is fine to bring lines
 of older code into conformance when modifying that code for other reasons.

How should I format my Git commit messages?::
 indexterm:[git,commit messages]
 See existing examples in the git log. The first line should look like
 +change-type: affected-code: explanation+ where +change-type+ should be
 +Fix+ or +Bug+ for most bug fixes, +Feature+ for new features, +Log+ for
 changes to log messages or handling, +Doc+ for changes to documentation or
 comments, or +Test+ for changes in CTS and regression tests. You will
 sometimes see +Low+, +Med+ (or +Mid+) and +High+ used instead for bug fixes,
 to indicate the severity. The important thing is that only commits with
 +Feature+, +Fix+, +Bug+, or +High+ will automatically be included in the
 change log for the next release. The +affected-code+ is the name of the
 component(s) being changed, for example, +controller+ or
 +libcrmcommon+ (it's more free-form, so don't sweat getting it exact). The
 +explanation+ briefly describes the change. The git project recommends the
 entire summary line stay under 50 characters, but more is fine if needed for
 clarity. Except for the most simple and obvious of changes, the summary should
 be followed by a blank line and then a longer explanation of 'why' the change
 was made.

How can I test my changes?::
 Most importantly, Pacemaker has regression tests for most major components;
 these will automatically be run for any pull requests submitted through
 GitHub. Additionally, Pacemaker's Cluster Test Suite (CTS) can be used to set
 up a test cluster and run a wide variety of complex tests. This document will
 have more detail on testing in the future.

What is Pacemaker's license?::
 indexterm:[licensing]
 Except where noted otherwise in the file itself, the source code for all
 Pacemaker programs is licensed under version 2 or later of the GNU General
 Public License (https://www.gnu.org/licenses/gpl-2.0.html[GPLv2+]), its
 headers and libraries under version 2.1 or later of the less restrictive
 GNU Lesser General Public License
 (https://www.gnu.org/licenses/lgpl-2.1.html[LGPLv2.1+]),
 its documentation under version 4.0 or later of the
 Creative Commons Attribution-ShareAlike International Public License
 (https://creativecommons.org/licenses/by-sa/4.0/legalcode[CC-BY-SA-4.0]),
 and its init scripts under the
 https://opensource.org/licenses/BSD-3-Clause[Revised BSD] license. If you find
 any deviations from this policy, or wish to inquire about alternate licensing
 arrangements, please e-mail the
 mailto:developers@clusterlabs.org[developers@ClusterLabs.org] mailing list.
 Licensing issues are also discussed on the
 https://wiki.clusterlabs.org/wiki/License[ClusterLabs wiki].

How can I contribute my changes to the project?::
 Contributions of bug fixes or new features are very much appreciated!
 Patches can be submitted as
 https://help.github.com/articles/using-pull-requests/[pull requests]
 via GitHub (the preferred method, due to its excellent
 https://github.com/features/[features]), or e-mailed to the
 http://clusterlabs.org/mailman/listinfo/developers[developers@clusterlabs.org]
 mailing list as an attachment in a format Git can import. Authors may only
 submit changes that they have the right to submit under the open source
 license indicated in the affected files.

What if I still have questions?::
 indexterm:[mailing lists]
 Ask on the
 http://clusterlabs.org/mailman/listinfo/developers[developers@clusterlabs.org]
 mailing list for development-related questions, or on the
 http://clusterlabs.org/mailman/listinfo/users[users@clusterlabs.org]
 mailing list for general questions about using Pacemaker.
 Developers often also hang out on http://freenode.net/[freenode's]
 #clusterlabs IRC channel.
