2014-02-14 00:22:24 +00:00
Google Summer of Code 2014 Ideas
================================
2014-02-14 02:07:50 +00:00
Welcome, potential Google Summer of Code students! This project is
2014-02-14 00:22:24 +00:00
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
2014-02-14 14:33:18 +00:00
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
2014-02-18 20:39:58 +00:00
is just getting started, there are only the four potential projects below
2014-02-14 14:33:18 +00:00
for a GSoC 2014 student. Assuming Google picks us for GSoC 2014, we'll be
2014-02-18 20:39:58 +00:00
selecting just one student, but we've provided four project choices. We
2014-02-14 14:33:18 +00:00
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.
2014-02-14 00:22:24 +00:00
## 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
2014-02-14 14:33:18 +00:00
[REST API for basic double-entry accounting](http://npoacct.sfconservancy.org/accounting-api/),
and then write some reports using that new API.
2014-02-14 00:22:24 +00:00
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.
2014-02-14 00:25:18 +00:00
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).
2014-02-18 20:18:29 +00:00
2014-02-18 20:14:02 +00:00
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:
2014-02-18 20:14:58 +00:00
* 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.
2014-02-18 20:20:27 +00:00
* Close any bug tickets in the bug tracker that relate to this issue.
2014-02-18 20:14:58 +00:00
* Time permitting: verify that other Ledger implementations don't
face the same problem.
2014-02-18 20:20:27 +00:00
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.
2014-02-18 20:14:02 +00:00
3. Build a better test suite for [Ledger-CLI](http://www.ledger-cli.org/).
2014-02-14 00:22:24 +00:00
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.
2014-02-14 16:48:47 +00:00
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
2014-02-14 16:49:14 +00:00
be nice if lcov or other test-coverage tool could generate reports
2014-02-14 16:48:47 +00:00
automatically.
2014-02-14 00:27:41 +00:00
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.
2014-02-18 20:18:29 +00:00
2014-02-18 20:14:02 +00:00
4. Build a better Python interface to Ledger-CLI for use by our API.
2014-02-14 00:22:24 +00:00
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.
2014-02-14 00:27:43 +00:00
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.