Contributing ======================================== Contributions to the library are most certainly welcome. To increase the chances your patch will actually make it into releases in a timely fashion, here are some guidelines for patch submission. Getting The Latest Sources ---------------------------------------- Botan's development occurs using a distributed version control system called `Monotone `_. The main branch of development occurs on the branch named ``net.randombit.botan``; this is probably the branch you want, especially if you are planning on making major changes. To download that branch and set up a new workspace, run:: $ mtn db init --db=botan.mtn $ mtn pull --db=botan.mtn randombit.net 'net.randombit.botan' [...] $ mtn checkout --db=botan.mtn --branch=net.randombit.botan [...] By default the ``checkout`` command will place the workspace in a directory with the same name as the branch you are checking out. If you want a different directory name, just include it after the ``--branch`` option (you can also rename this directory at any time). If this is the first time you've connected to the server, Monotone will print:: mtn: first time connecting to server randombit.net mtn: I'll assume it's really them, but you might want to double-check mtn: their key's fingerprint: 8c0b868f2247215c63c96983b1c8ca0f0f0cfd9a The fingerprint shown above was the correct one as of September 21, 2010. To pull further changes, from anywhere in the workspace run these commands:: $ mtn pull [...] $ mtn update [summary of changes] The ``mtn update`` command will give you a summary of which files changed; to view the full changelog, run ``mtn log``. Monotone's distributed nature means you can check into your database while continuing to merge changes made upstream. This is particularly useful if your change is large or invasive, as you can checkpoint your progress over time. If you are making a large number of changes, you may want to start up a new branch that occasionally merges against the mainline; check the monotone documentation for details. After you finish your changes, you can review them using ``mtn diff`` to diff against the latest official head; send the output to the mailing list for review and inclusion. Don't forget to update the file ``credits.txt`` with your information, if you want to be listed as a contributor. Also, if your patch is substantial enough to be considered copyrightable, add yourself to ``license.txt``. Patches are best directed to the `botan-devel `_.