help in understanding GNUCash architecture

John Ralls jralls at ceridwen.us
Mon Mar 27 16:05:22 EDT 2017


> On Mar 27, 2017, at 12:52 PM, Станислав Тактаев <stanislav at taktaev.com> wrote:
> 
> May be more easy way is to use QIF/OX mechanisms for sending between users only updates of transactions in main XML ? 
> 
> 
> 
> 23.03.2017 20:22, John Ralls пишет:
>> 
>>> On Mar 23, 2017, at 8:48 AM, Станислав Тактаев <stanislav at taktaev.com> wrote:
>>> 
>>> 
>>>> John, thank you for your answer!
>>>> 
>>>> Befor you say me,  I planned to use simple way, to substitute functions, that read and write data and copy data both locally (for speed) and distributed by calling blockchain API . What do you think, how big scope of such work, in programmer-monthes?
>>>> 
>>>> What class and methods responding for read/write?
>>>> 
>>>> 
>> 
>> Sounds like you want to develop a new backend. Study the existing backends and src/libqof/qof/qofbackend.cpp and src/libqof/qof/qofsession.cpp. The doxygen comments are presented in a more readable form at https://code.gnucash.org/docs/MASTER (the capitalization of MASTER is significant!). I can't do a time estimate for you, it depends too much on your skill level. I'd expect it would take me on the order of 1-4000 hours, i.e between 6 months and two years of full time work.
>> 
>> A couple of notes: We hope to have GnuCash querying using SQL instead of QofQuery by the major release after this year's.         Under our current release policy that would be released at the end of 2021. Your new backend should therefore be SQL queryable. Second, your new backend code should be in modern (i.e. heavily templated and lightly metaprogrammed) C++. We'll probably use C++17 as the baseline for the next dev cycle, so make sure you're working with a current distro and compiler suite. GnuCash is a GPL application, so also make sure to use only dependencies which are licensed under GPL-compatible licenses.
>> 
>> One more thing: Keep in touch! Don't go off in a corner and emerge a year from now with a completed PR hoping that it will fit in. The odds of that working out are really slim. Join the community: Discussing your plans, engaging in our deliberations about other parts of GnuCash, sharing your work early and often, and helping out on other work so that you're part of the team will greatly improve the chance of your contributions being acceptable. Reading our wiki, starting with https://wiki.gnucash.org/wiki/Development and following all of the links there, will also help get you off to  a good start.


I don't know if it would make it easier or not. You do need some way to serialize and deserialize object diffs between GnuCash and the blockchain API. GnuCash does know how to import QIF and OFX, but not write them. They're also not sufficient to encode everything GnuCash needs to store.

Regards,
John Ralls
 


More information about the gnucash-devel mailing list