CONTRIBUTING.md 4.1 KB

Tips for contributors

  • Please make pull requests against next, not master. Ledger follows a git-flow branching model, in which development happens on the next branch and is subsequently merged into master for releases.
  • If you're making changes to ledger-mode, or other files for which the Travis build is not relevant, please add [ci skip] to the end of the commit message.

GLOSSARY

Developing the Ledger software uses a number different tools, not all of which will be familiar to all developers.

Boost: a standard set of C++ libraries. Most Boost libraries consist of inline functions and templates in header files.

Boost.Python: C++ library which enables seamless interoperability between C++ and the Python programming language.

Cheetah: a Python templating engine, used by ./python/server.py.

CMake: A cross platform system for building from source code. It uses the CMakeLists.txt files.

Doxygen: generates programming documentation from source code files. Primarily used on C++ sources, but works on all. Uses the doc/Doxyfile.in file.

GCC: Gnu Compiler Collection, which includes the gcc compiler and gcov coverage/profiler tool.

clang: C language family frontend for LLVM, which includes the clang compiler.

GMP: Gnu Multiple Precision Arithmetic Library provides arbitrary precision math.

MPFR: Gnu Multiple Precision Floating-point Library with correct rounding.

Markdown: A typesetter format that produces html files from .md files. Note that GitHub automatically renders .md files.

SHA1: a marginally secure cryptographic hash function, used only for signing the license file.

Texinfo: Gnu documentation typesetter that produces html and pdf files from the doc/\*.texi files.

Travis CI: a hosted continuous integration service that builds and runs tests each commit posted to GitHub. Each build creates a log, updates a small badge at the top left of the main project's README.md, and emails the author of the commit if any tests fail.

utfcpp: a library for handling utf-8 in a variety of C++ versions.

Orientation

The source tree can be confusing to a new developer. Here is a selective orientation:

./acprep: a custom thousand-line script to install dependencies, grab updates, and build. It also creates \*.cmake, ./CmakeFiles/ and other CMake temporary files. Use ./acprep --help for more information.

./README.md: user readme file in markdown format, also used as the project description on GitHub.

./contrib/: contributed scripts of random quality and completion. They usually require editing to run.

./doc/: documentation, licenses, and tools for generating documents such as the pdf manual.

./lib/: a couple of libraries used in development.

./lisp/: the Emacs ledger-mode lisp code, under the GPLv2 license.

./python/: samples using the Python ledger module.

./src/: the C++ header and source files in a flat directory.

./test/: a testing harness with subdirectories full of tests

./tools/: an accretion of tools, mostly small scripts, to aid development