@@ -28,61 +28,64 @@ skills and background best when submitting your application.
and then write some reports using that new API.
This will require the student to get familiar (or already be familiar)
with how Ledger-CLI works, how REST APIs work, and learn some basics of
double entry accounting.
A successful student should be able to complete that work about
three-quarters the way through the summer, and then be able to focus on
actually writing a few specialized NPO-style report using the API. A
great acid test will be to use the API to implement the
[IRS required charity public support test](http://www.irs.gov/Charities-&-Non-Profits/Exempt-Organizations-Annual-Reporting-Requirements-Form-990,-Schedules-A-and-B:-Public-Charity-Support-Test).
* * *
2. Convert [Ledger-CLI](http://www.ledger-cli.org/) to use fixed-point
arithmetic.
Currently Ledger-CLI uses floating point arithmetic, which is definitely a
mistake for an accounting system. This causes
[off-by-one bugs](http://bugs.ledger-cli.org/show_bug.cgi?id=992) on some
types of transactions. This should be fixed.
A successful student on this task will:
* Write various test cases for Ledger-CLI that will clearly show the
floating point issue.
* Rework the codebase to use fixed-point arithmetic so those bugs are
closed.
* Shepherd the patch upstream.
* Time permitting: verify that other Ledger implementations don't
face the same problem.
* * *
3. Build a better test suite for [Ledger-CLI](http://www.ledger-cli.org/).
Since this project relies so heavily on Ledger-CLI, we'd really like there
to be a full test coverage for Ledger-CLI. To do that, a student will
need to be already somewhat familiar C++ and willing to learn about how to
set up test suites for C++ programs, and likes writing tests. The student
could easily spend the whole summer just writing tests and not finish.
Ledger-CLI does have a basic test suite, but it might turn out that using
a more "full featured" test harness is useful. The student will
investigate and discuss this possibility with the mentor. It would also
be nice if lcov or other test-coverage tool could generate reports
automatically.
While this project is of primary interest to this project, it will
require careful coordination with Ledger-CLI as an upstream, and we'll
help mentor the student in that.
* * *
4. Build a better Python interface to Ledger-CLI for use by our API.
Right now, Ledger-CLI has a rather incomplete Python interface, based on