Hi Camille,

There is plenty of work on the gnucash project. However I'll focus on your 
eventual goal of 
basing your iOS app on the gnucash core.

I think your first step would be to familiarize yourself with the gnucash build 
system. We have 
wiki pages describing how to build gnucash on linux, MacOS and Windows [1]. I 
assume you are 
developing on MacOS, so I suggest you follow the instructions to setup a 
gnucash build 
environment on that platform and make sure you can build gnucash.

When you get to that point, you can start tweaking the build scripts to make 
them build only 
only what you need for the iOS app. I would think in the gnucash repo itself 
that would be the 
contents of libgnucash.

The biggest caveat here is that libgnucash/app-utils still depends quite a bit 
on guile, which is 
not what you'd want for iOS. So here's another opportunity to help out: rework 
app-utils to no 
longer depend on guile. I'll be honest; that's pretty involved so maybe not a 
good starting 
project.

The alternative approach would be to alter the build scripts such we can 
specify to build without 
the gui (already possible by setting WITH_GNUCASH=OFF to gnucash' cmake 
invocation) and 
without guile (which requires a new cmake parameter, for example WITH_GUILE). 
If both are set 
the build should only include libengine, but then without app-utils. That would 
probably give you 
most of what you need for a first version of the iOS app on top of the gnucash 
logic. As the guile 
separation goal progresses within the gnucash project, more of app-utils can be 
included in the 
minimal build for iOS, giving you even more features to work with.

Besides the gnucash repo there is the gnucash-on-osx repo which contains the 
build system for 
all of gnucash' dependencies on that platform. As it currently stands it will 
build more 
dependencies than you need for an iOS app. You're most likely not interested in 
gtk stuff, 
though you will still need glib (as libgnucash is still using it a lot).

gnucash-on-osx uses the jhbuild build system. To help you build only the parts 
you need for an 
iOS app, you can add a new module in gnucash.modules that would only trigger 
the build of 
dependencies for libgnucash instead of all of gnucash.

My experience with building on MacOS is limited and I have no experience at all 
with building 
for iOS so there are certainly things I am missing or glossing over. For 
example I have no idea 
how different the MacOS environment is from the iOS environment (runtime wise), 
so I can't tell 
if there will be a porting effort involved. I mean the source code of gnucash 
and its 
dependencies have been tweaked to build an run on MacOS. I have no idea 
whatsoever if extra 
tweaking will be required to build for and run on iOS. If so that would be 
another task, though I 
would first try to get the build system to output only the minimal set of 
dependencies and 
gnucash libraries.

I can probably help on the build system side within the gnucash project itself, 
like adding the 
extra switch to disable building with guile. I have a reasonable notion of how 
jhbuild works, but I 
don't have access to a MacOS system any more. So I can give advice or 
suggestions on the 
jhbuild tweaks, but can test any of those.

Skills you'll probably need or need to develop include: working with git [2], 
understanding 
cmake, working with jhbuild and obviously C and C++.

All changes you make in gnucash-on-osx or gnucash repositories can be submitted 
for inclusion 
via either pull requests on github (preferred) or patches in bugzilla. It goes 
without saying these 
changes should be such that they won't break the normal gnucash build.

If you have questions, consult our wiki, ask on irc or the gnucash-devel 
mailing list.

Other than that, enjoy the ride ! Happy hacking :)

Regards,

Geert

[1] https://wiki.gnucash.org/wiki/Building
[2] https://wiki.gnucash.org/wiki/Git


Op zondag 19 april 2020 21:43:46 CEST schreef Camille Rizko:
>  Hello Geert, To help I need guidance and direction. I have never developed
> as part of a project such as gnuCash before. If you can think of a good
> first exercise, I am willing to try. On Sunday, April 19, 2020, 11:00:12 AM
> PDT, Geert Janssens <geert.gnuc...@kobaltwit.be> wrote:
> 
>  #yiv8039829096 p, #yiv8039829096 li {white-space:pre-wrap;}
> Hi Camille,
> 
>  
> 
> Most of the code relevant for your viewer is indeed C/C++. Parts are gnucash
> are also written in guile, but if I understand correctly that language is
> not available on iOS.
> 
>  
> 
> I'm working on separating the guile parts from the non-gui core of gnucash
> specifically to make it easier to port that core to platforms such as iOS
> or Android.
> 
>  
> 
> Unfortunately that work isn't completely done yet so I will concede that at
> this stage it may take some effort to get it going. Perhaps you are
> interested in helping out with this ?
> 
>  
> 
> Regards,
> 
>  
> 
> Geert
> 
>  
> 
> Op zondag 19 april 2020 19:46:11 CEST schreef Camille Rizko:
> > Hello Geert,  I can investigate how to read the database using the code
> > 
> > base. My app is a viewer, so "read only". I have been using gnucash since
> > 
> > 2015, but have not at all looked at the code base. I can probably succeed
> > 
> > with some effort if the code is in C or C++ language. On Sunday, April 19,
> > 
> > 2020, 06:00:54 AM PDT, Geert Janssens <geert.gnuc...@kobaltwit.be> wrote:
> > 
> > 
> > 
> > #yiv2676310034 p, #yiv2676310034 li {white-space:pre-wrap;}
> > 
> > Ok. That's fair.
_______________________________________________
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel

Reply via email to