File diff 71ca4b8fa68e → 494e759f7a05
GSoC2014Ideas.mdwn
Show inline comments
...
 
@@ -55,51 +55,57 @@ fits your skills and background best when submitting your application.
 
   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.
 

	
 
5. Add a JSON/RESTful API to [Hledger](http://hledger.org)'s [hledger-web](http://hackage.haskell.org/package/hledger-web) app, mirroring the C++/python API.
 
    This would provide an alternate implementation useful for testing, validation and future-proofing.
 

	
 
5. Add a JSON/RESTful API to [Hledger](http://hledger.org)'s
 
    [hledger-web](http://hackage.haskell.org/package/hledger-web) app,
 
    mirroring the C++/python API (improvement for which is described in (1)
 
    above, as part of another task).  This would provide an alternate
 
    implementation useful for testing, validation and future-proofing.
 

	
 
    The ideal here would be that the NPO Accounting Project could use
 
    *either* Ledger-CLI *or* hledger as a back-end.  This work may require
 
    coordination with other students who might be working on (1).