92 lines
4.7 KiB
Markdown
92 lines
4.7 KiB
Markdown
Google Summer of Code 2014 Ideas
|
|
================================
|
|
|
|
Welcome, potential Google Summer of Code students! This project is
|
|
currently called "The NPO Accounting Project", for lack of a better name.
|
|
|
|
The project is coordinated by
|
|
[Software Freedom Conservancy, Inc.](https://sfconservancy.org/) which is a
|
|
501(c)(3) charitable not-for-profit organization in the USA. We run all our
|
|
operations solely and completely on Free Software.
|
|
|
|
One area that we've had great difficulty is regarding non-profit accounting
|
|
software. We've launch this project to improve the state of accounting Open
|
|
Source and Free Software for non-profits. Since this NPO Accounting project
|
|
is just getting started, there are only the four potential projects below
|
|
for a GSoC 2014 student. Assuming Google picks us for GSoC 2014, we'll be
|
|
selecting just one student, but we've provided four project choices. We
|
|
need all of these items below done anyway, and we want to find the best
|
|
possible student/project match. Please pick the project that fits your
|
|
skills and background best when submitting your application.
|
|
|
|
## Possible GSoC 2014 Projects
|
|
|
|
1. Add all necessary the tag types found
|
|
[the tutorial on the Ledger-CLI setup for fiscal sponsor 501(c)3 organizations](https://gitorious.org/ledger/npo-ledger-cli/)
|
|
into the
|
|
[REST API for basic double-entry accounting](http://npoacct.sfconservancy.org/accounting-api/),
|
|
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.
|
|
* Close any bug tickets in the bug tracker that relate to this issue.
|
|
* Time permitting: verify that other Ledger implementations don't
|
|
face the same problem.
|
|
|
|
Note that because this would be a major "bombing run" sort of change,
|
|
there may be some resistance to upstreaming this patch, so this task may
|
|
be harder than it looks on the surface from a community advocacy angle.
|
|
|
|
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
|
|
[Boost.Python](http://www.boost.org/doc/libs/1_55_0/libs/python/doc/).
|
|
However, the right approach is probably to use
|
|
[SWIG](http://www.swig.org/) or some other similar mechanism to build a
|
|
proper Python API. Perhaps Ledger-CLI could stick with Boost.Python, but
|
|
what's there clearly needs an overhaul. The upside of using SWIG will be
|
|
that we can get APIs for other languages too.
|
|
|
|
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.
|