File diff 3a3dd351d760 → 4e34ef272f32
GSoC2014Ideas.mdwn
Show inline comments
...
 
@@ -36,29 +36,30 @@ skills and background best when submitting your application.
 
    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. 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 the beginnings of a test suite, but its test harness
 
    needs work and improvement, and it would be very good if a test coverage
 
    report was generated.  There is also work to be done to investigate what
 
    test coverage tools should be used  for the project.
 

	
 
    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 lconv 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.
 
    
 
3. 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