summaryrefslogtreecommitdiff
path: root/doc/DEVELOP.md
diff options
context:
space:
mode:
Diffstat (limited to 'doc/DEVELOP.md')
-rw-r--r--doc/DEVELOP.md81
1 files changed, 81 insertions, 0 deletions
diff --git a/doc/DEVELOP.md b/doc/DEVELOP.md
new file mode 100644
index 00000000..ce897741
--- /dev/null
+++ b/doc/DEVELOP.md
@@ -0,0 +1,81 @@
+GLOSSARY
+----
+
+Developing the Ledger software uses a number different tools, not all of
+which will be familiar to all developers.
+
+[**Boost**](http://www.boost.org): a standard set of C++ libraries. Most
+Boost libraries consist of inline functions and templates in header files.
+
+[**Cheetah**](http://www.cheetahtemplate.org): a Python templating engine,
+used by *./python/server.py*.
+
+[**CMake**](http://www.cmake.org): A cross platform system for building
+from source code. It uses the *CMakeLists.txt* files.
+
+[**DOxygen**](http://doxygen.org): generates programming documentation from
+source code files. Primarily used on C++ sources, but works on all. Uses
+the *doc/Doxyfile.in* file.
+
+[**GCC**](http://gcc.gnu.org): Gnu Compiler Collection, which includes the
+*gcc* compiler and *gcov* coverage/profiler tool.
+
+[**GMP**](https://gmplib.org): Gnu Multiple Precision Arithmetic Library
+provides arbitrary precision math.
+
+[**Markdown**](https://daringfireball.net/projects/markdown/): A typesetter
+format that produces *html* files from *.md* files. Note that GitHub
+automatically renders *.md* files.
+
+[**sha1**](http://en.wikipedia.org/wiki/SHA-1): a marginally secure
+cryptographic hash function, used only for signing the license file.
+
+[**Texinfo**](http://www.gnu.org/software/texinfo/): Gnu documentation
+typesetter that produces *html* and *pdf* files from the *doc/\*.texi*
+files.
+
+[**Travis CI**](https://travis-ci.org): a hosted continuous integration
+ service that builds and runs tests each commit posted to GitHub. Each
+ build creates a [log](https://travis-ci.org/ledger/ledger), updates a
+ [small graphic](https://travis-ci.org/ledger/ledger.png?branch=master) at
+ the top left of the main project's
+ [README.md](https://github.com/ledger/ledger/blob/master/README.md), and
+ emails the author of the commit if any tests fail.
+
+[**utfcpp**](http://utfcpp.sourceforge.net): 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 libraries used in development.
+
+**./lisp/**: the [Emacs](http://www.gnu.org/software/emacs/)
+ [ledger-mode](http://ledger-cli.org/3.0/doc/ledger-mode.html) lisp code,
+ under the [GPLv2](http://www.gnu.org/licenses/gpl-2.0.html) 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