jralls at ceridwen.us
Sun May 18 23:49:27 EDT 2014
On May 7, 2014, at 10:04 AM, Sumit Bhardwaj <bhardwajs at gmail.com> wrote:
> Hi Everyone,
> Having been a silent viewer on Devel list for some time, it's time for me
> to introduce myself and see how I can contribute.
> Quick intro: I live in the Valley, but my day job involves only Python
> scripts. I am a long-time user of Gnucash (First transaction: Jul 8, 2004).
> Programming experience: Almost exclusively C++. This has been the reason
> why I didn't tinker with the codebase yet.
> Michalis is working on bug cleanup. I can try to work with him so we can
> get the bug list trimmed. Other option is to work with John on qof
> development. Since that's in C++, I would prefer that.
> Thoughts/comments? Looking forward to being an active participant.
My turn to apologize for a tardy response. I was traveling when you wrote that and it's taken me a week to get caught up enough to get back to you.
As Derek pointed out, the C++ task isn't so much developing new code in C++ as reimplenting an existing C/GObject API into still C-callable C++ while at the same time rationalizing the API to remove duplication, enforcing class isolation, and providing testability and the tests to go with it. We want to use modern (in the sense of Alexandrescu's "Modern C++ Design", i.e. compile time polymorphic) C++11 code and use STL and boost as much as possible.
I'll get a wiki page up on the overall plan for the first phase later this week, but the first tasks I plan are:
* Convert GncGUID to use boost::uuid for internals
* Convert GncNumeric to use boost::rational<boost::multiprecision> for internals
* Convert GncDate to use boost::calendar::gregorian and boost::datetime for internals
* Convert other QOF support classes to C++
Another dev, https://github.com/limitedAtonement, lmat on IRC, has begun work on GncGUID.
If that sounds like the kind of work you're interested in, start by forking https://github.com/jralls/gnucash in GitHub (you'll need a GitHub account if you don't have one already) and study classes in src/libqof/qof to get a feel for the API we'll be working with.
More information about the gnucash-devel