summaryrefslogtreecommitdiffstats
path: root/doc/unsorted/contribute.txt
blob: a0bdd0ada68660bfb8b48c89e2b80d90d07799d7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
.. -*- mode: rst -*-

.. _unsorted-contribute:

=====================
Contributing to Bcfg2
=====================

There are several ways users can contribute to the Bcfg2 project.

* Developing code
* Testing prereleases
* Adding to the common repository
* Improving the wiki

Development
===========

Send patches to the [wiki:MailingList bcfg mailing list] or create
a trac [https://trac.mcs.anl.gov/projects/bcfg2/newticket ticket]
with the patch included. In order to submit a ticket via the
trac system, you will need to create a session by clicking on the
[https://trac.mcs.anl.gov/projects/bcfg2/prefs Preferences] link and
filling out/saving changes to the form. In order to be considered for
mainline inclusion, patches need to be BSD licensed. The most convenient
way to prepare patches is by using svn diff inside of a source tree
checked out of subversion. The source tree can be checked out by running::

    svn co https://svn.mcs.anl.gov/repos/bcfg/trunk/bcfg2

Users wishing to contribute on a regular basis can apply for direct
subversion access. Mail the mailing list for details.

Several resources for developers exist in the wiki:

* [wiki:DevelopmentTips]
* [wiki:Development/WritingPlugins Writing Bcfg2 Server Plugins]
* [wiki:Architecture]
* [wiki:WritingClientToolDrivers]
* [wiki:Bcfg2SubversionHowto]
* [wiki:LearningPython]
* [wiki:UsingRcache]

Bcfg2 is the result of a lot of work by many different people. They are
listed on the [wiki:Contributors contributors page.]

Feel free to drop in during a [wiki:CodeSprintIdeas code sprint] if you
would like to help out with some easier problems.

Testing Prereleases
===================

Before each release, several prereleases will be tagged. It is helpful
to have users test these releases (when feasible) because it is hard to
replicate the full range of potential reconfiguration situations; between
different operating systems, system management tools, and configuration
specification variation, there can be large differences between sites.

See the [wiki:TrackingDevelopmentTrunk] page for a better view of changes
in the prereleases.

Adding to the Common Repository
===============================

The Bcfg2 common repository is a set of portable examples that new
repositories can be based on. This repo has several parts. The first
is a series of group definitions that describe a wide range of client
systems. The second is a set of portable bundles that have been ported
to use these groups. This makes these bundles transparently portable
across new client architectures.

This approach has several benefits to users

* Configuration specification can be shared across sites where appropriate
* This common configuration specification can be reused, allowing sites to migrate to new systems that other sites have already ported the common repository to
* Setup of new systems becomes a lot easier.

Improving the wiki
==================

Mail the [wiki:MailingList mailing list] for an account on the wiki.