Re: GDA: Status

2008-06-03 Thread Derek Atkins
Hi,

Sorry for the delay, but I've been busy offline most of the
weekend and yesterday so I've let this thread sit for a bit.
More comments inline.

Nathan Buchanan [EMAIL PROTECTED] writes:

 So...In the end, what's our options?

 1. Use GDA V3. We will spend time fixing bugs in V3 that will probably not be
 released in a bugfix release of GDA. The advantages of this approach are that
 we get access to sqlite, mysql, and postgres. The disadvantage is that we will
 probably have to ship our own version of GDA, and in a few years, this will
 probably be out of date, requiring the switch to V4 anyway. We will expend
 significant energy to have it working now, much of this energy will be lost
 when moving to V4.

 2. Use GDA V4. We will probably send time fixing bugs here, but we are almost
 guaranteed that a release will happen. The advantages of this approach is that
 we will be current with the new GDA and releases will be done for us (or in
 conjunction with us - depending on how closely we work with the GDA team).
 Work done here will not be towards a dieing version. The disadvantages are
 that we will probably be limited to sqlite until the other providers are
 completed. We may have to distribute pre-release versions of the code until
 there is a 4.0 release, but after that, we hand it over to the official
 releases.

The assumption here (in both #1 and #2) is that GDA-4 will be
released sooner than that gda-dev branch will finish.  I have seen
no such assurance.  What happens if gda-branch finishes, gets
merged back into trunk, but GDA-4 hasn't been released yet?
It means that *we* cannot release GnuCash 2.4 because a major
dependency (GDA) isn't available in the major distributions.

Also, in the past 18-24 months we've seen GDA move from 1.3
to 2.99 to 3.0 to 3.9/4!  Are we really confident that in another
9-12 months they wont scrap this and move to GDA-5 and leave us
in the dust yet again?

 3. Use Libdbi/another approach. Advantages: we hope they are more stable and
 bug free, but do not know. Disadvantages: we have to re-do all the work done
 to integrate GDA :(.

We don't need to hope.  Libdbi *IS* more stable and bug free.  DBI has
been out in the wild for AT LEAST half a decade, maybe more.  It has
providers for all the major OSS DBs as well as ODBC to connect to the
non-OSS DBs.  It is still being actively maintained but it's so rock
solid that there just isn't much that NEEDS to be done.

Another advantage is that DBI has been out in the wild and use-tested
for a long time, so it's unlikely that we'd find any major gotchas
along the way.  It's benefits (and drawbacks) are well understood
by the user community.

The one major downside of DBI is that it IS lower-level than GDA.  It
does not really abstract out the query language like GDA does.  It
does provide a bunch of type abstractions, but doesn't provide a
query abstraction.

I also disagree with your statement of disadvantages.  We would not
have to re-do ALL the work done to integrade GDA.  However we WOULD
have do re-do a lot of it.

 My personal opinion is that we go with #2, use GDA V4. We will need to do
 fixes in either #1 or #2. From a maintenance point of view it's better to put
 those fixes towards a version that has a reasonable chance of a release. (This
 does, of course, assume that V4 actually gets completed). At best the other
 providers get implemented and we have all of them available. At worst, we're
 stuck with sqlite for a while.

 If we really need mysql/postgres right away - it's going to involve
 significant work regardless of the option chosen.

I'll restate my opinion here again.  I think our #1 target is SQLite.
We need to move our home users off of XML and into a DB so we can get
the benefits of save-on-commit.  Then MySQL and PG are tied (in my
mind) for #2.

 Phil, do you have a preference? It's probably your preference that counts ;)

I'm not going to push for DBI over GDA, however I do want to make sure
we're making an educated choice here and not just choosing GDA because
it's shiny and new and happens to have a 'G' in the name.  I also
want to make sure we're chosing a technology that WILL be there for
a long time and wont get us stuck in a situation where we're spending
all our time keeping up with them changing APIs out from under
us.

As an example, just look at what's happening in AqBanking.  It's not a
zero-effort task to move from AqB-2 to AqB-3.  Luckily that work is
limited only to a small section of Gnucash.  Now imagine if we finish
with GDA-4 and they move to GDA-5 (just like we almost finished with
GDA-3 and now they're moving to GDA-4).

Just let that simmer a bit.

-derek

-- 
   Derek Atkins, SB '93 MIT EE, SM '95 MIT Media Laboratory
   Member, MIT Student Information Processing Board  (SIPB)
   URL: http://web.mit.edu/warlord/PP-ASEL-IA N1NWH
   [EMAIL PROTECTED]PGP key available
___
gnucash-devel 

Re: GDA: Status

2008-06-03 Thread Derek Atkins
Phil Longstaff [EMAIL PROTECTED] writes:

 Or would it be more expedient to pick a technology that has a proven
 track record, proven stability, is NOT a moving target, and is
 already available in most distributions?

 One problem with libdbi is that its scope doesn't cover everything that
 libgda's does.  From what I can tell, libdbi doesn't have any apis to
 cover table/index creation, and that is one area that has a lot of
 individuality (e.g. autoinc integer fields).

Is that the only individuality?  Or are there others as well?
Could we abstract those pieces out ourselves?
How do other projects using those technologies handle that?

-derek

-- 
   Derek Atkins, SB '93 MIT EE, SM '95 MIT Media Laboratory
   Member, MIT Student Information Processing Board  (SIPB)
   URL: http://web.mit.edu/warlord/PP-ASEL-IA N1NWH
   [EMAIL PROTECTED]PGP key available
___
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel


Re: Guile threading

2008-06-03 Thread Derek Atkins
Hi,

Charles Day [EMAIL PROTECTED] writes:

 On Sat, May 31, 2008 at 11:07 AM, Derek Atkins [EMAIL PROTECTED] wrote:

 Keep in mind that most of the gnucash code is NOT thread safe!

 The whole reason I was thinking about threading was to be able to put progress
 bars directly in the QIF importer druid pages, rather than using popup dialogs
 (gnc_progress_dialog_xxx functions). I thought I could kick off a long-running
 Guile thread, then check its status occasionally and show the user how things
 are progressing. But threading doesn't seem to be an option.

 So maybe while Guile is running, it could just call a progress reporting
 function once in a while that updates the druid's widgets. Are there existing
 GnuCash functions that support progress bars and let me specify my own
 progress bar widget?

 (My guess would be no, since the splash screen would seem to be a similar
 case, and it appears to have needed to supply custom functions for updating
 its progress bar.)

Um, I'm fairly sure we have guile wrappers for progress bar
reporting functions.  Indeed, I'm pretty sure the QIF importer already
uses them for reading/parsing QIF files!  Search for gnc-progress-dialog
in qif-import/*.scm

 Cheers,
 Charles

-derek

-- 
   Derek Atkins, SB '93 MIT EE, SM '95 MIT Media Laboratory
   Member, MIT Student Information Processing Board  (SIPB)
   URL: http://web.mit.edu/warlord/PP-ASEL-IA N1NWH
   [EMAIL PROTECTED]PGP key available
___
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel


Re: gnucash 2.2.5 does not compile with libgoffice 0.6

2008-06-03 Thread Derek Atkins
Hi,

Rainer Dorsch [EMAIL PROTECTED] writes:

 Hello,

 I am running Debian lenny and tried to compile gnucash. With 
 libgoffice-0-6-dev installed I got:
  
[snip]
 gnc-html-graph-gog.lo -MD -MP -MF .deps/gnc-html-graph-gog.Tpo -c 
 gnc-html-graph-gog.c  -fPIC -DPIC -o .libs/gnc-html-graph-gog.o
 gnc-html-graph-gog.c:47:56: error: goffice/graph/gog-renderer-gnome-print.h: 
 No such file or directory
 gnc-html-graph-gog.c: In function ‘draw_print_cb’:
 gnc-html-graph-gog.c:671: warning: implicit declaration of 
 function ‘gog_graph_print_to_gnome_print’
 make[5]: *** [gnc-html-graph-gog.lo] Error 1

 Doing the same with libgoffice 0.4 works flawless.

What version of GtkHTML do you have installed?  I seem to recall
there being an issue that GtkHTML and GOffice needed to update at the
same time, but configure doesn't do a good job of making
sure the matches are there.

 Thanks,
 Rainer

-derek

-- 
   Derek Atkins, SB '93 MIT EE, SM '95 MIT Media Laboratory
   Member, MIT Student Information Processing Board  (SIPB)
   URL: http://web.mit.edu/warlord/PP-ASEL-IA N1NWH
   [EMAIL PROTECTED]PGP key available
___
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel


Re: Guile threading

2008-06-03 Thread Charles Day
On Tue, Jun 3, 2008 at 8:34 AM, Derek Atkins [EMAIL PROTECTED] wrote:

 Hi,

 Charles Day [EMAIL PROTECTED] writes:

  On Sat, May 31, 2008 at 11:07 AM, Derek Atkins [EMAIL PROTECTED] wrote:
 
  Keep in mind that most of the gnucash code is NOT thread safe!
 
  The whole reason I was thinking about threading was to be able to put
 progress
  bars directly in the QIF importer druid pages, rather than using popup
 dialogs
  (gnc_progress_dialog_xxx functions). I thought I could kick off a
 long-running
  Guile thread, then check its status occasionally and show the user how
 things
  are progressing. But threading doesn't seem to be an option.
 
  So maybe while Guile is running, it could just call a progress reporting
  function once in a while that updates the druid's widgets. Are there
 existing
  GnuCash functions that support progress bars and let me specify my own
  progress bar widget?
 
  (My guess would be no, since the splash screen would seem to be a
 similar
  case, and it appears to have needed to supply custom functions for
 updating
  its progress bar.)

 Um, I'm fairly sure we have guile wrappers for progress bar
 reporting functions.  Indeed, I'm pretty sure the QIF importer already
 uses them for reading/parsing QIF files!  Search for gnc-progress-dialog
 in qif-import/*.scm


Those functions are the same ones I mentioned above. They manage popup
progress dialogs, whereas I am aiming to have a progress bar integrated into
the druid page. Know of any functions that basically do the same thing as
those, but let me specify existing widgets to use, rather than creating new
ones?


  Cheers,
  Charles

 -derek

 --
   Derek Atkins, SB '93 MIT EE, SM '95 MIT Media Laboratory
   Member, MIT Student Information Processing Board  (SIPB)
   URL: http://web.mit.edu/warlord/PP-ASEL-IA N1NWH
   [EMAIL PROTECTED]PGP key available

___
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel


Re: GDA: Status

2008-06-03 Thread Phil Longstaff
Derek Atkins wrote:
 Phil Longstaff [EMAIL PROTECTED] writes:
 
 Or would it be more expedient to pick a technology that has a proven
 track record, proven stability, is NOT a moving target, and is
 already available in most distributions?
 One problem with libdbi is that its scope doesn't cover everything that
 libgda's does.  From what I can tell, libdbi doesn't have any apis to
 cover table/index creation, and that is one area that has a lot of
 individuality (e.g. autoinc integer fields).
 
 Is that the only individuality?  Or are there others as well?
 Could we abstract those pieces out ourselves?
 How do other projects using those technologies handle that?

I took a look at a few projects using libdbi.  They seem to have some
external mechanism (script) to create the db, and they also seem to have
more of a permanent database idea (e.g. a reference database, a library
contents database).

Well, as long as queries and data modification stick to standard sql, gc
could be ok.  Note that there are some things which, whether standard
sql or not, I would like to use if available e.g. the ability to insert
multiple rows at a time (for slots) which is not supported by sqlite.

We could abstract out the pieces.  What I have written could be adapted.
 It's simply a question of risk.  I'm not so tied to libgda that I
couldn't switch, even now.

Phil

___
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel


Re: GDA: Status

2008-06-03 Thread Albert Lash

 One problem with libdbi is that its scope doesn't cover everything that
 libgda's does.  From what I can tell, libdbi doesn't have any apis to
 cover table/index creation, and that is one area that has a lot of
 individuality (e.g. autoinc integer fields).

 Is that the only individuality?  Or are there others as well?
 Could we abstract those pieces out ourselves?
 How do other projects using those technologies handle that?

While not optimal, is it a practical issue? Most SQLite drivers
automatically create  database if the target doesn't exist (not sure
about libdbi), and the tables could be created by a create new file
user event.

As for MySQL / Postgres, I can't imagine a user sophisticated enough
to want this who would be unwilling to follow some simple directions
to install the model.

However, don't take this the wrong way, I'm not advocating we ditch
gda - I'm leaving that decision up to Phil.
___
gnucash-devel mailing list
gnucash-devel@gnucash.org
https://lists.gnucash.org/mailman/listinfo/gnucash-devel


Re: GDA: Status

2008-06-03 Thread Phil Longstaff
Derek Atkins wrote:
 2. Use GDA V4. We will probably send time fixing bugs here, but we are almost
 guaranteed that a release will happen. The advantages of this approach is 
 that
 we will be current with the new GDA and releases will be done for us (or in
 conjunction with us - depending on how closely we work with the GDA team).
 Work done here will not be towards a dieing version. The disadvantages are
 that we will probably be limited to sqlite until the other providers are
 completed. We may have to distribute pre-release versions of the code until
 there is a 4.0 release, but after that, we hand it over to the official
 releases.
 
 The assumption here (in both #1 and #2) is that GDA-4 will be
 released sooner than that gda-dev branch will finish.  I have seen
 no such assurance.  What happens if gda-branch finishes, gets
 merged back into trunk, but GDA-4 hasn't been released yet?
 It means that *we* cannot release GnuCash 2.4 because a major
 dependency (GDA) isn't available in the major distributions.
 
 Also, in the past 18-24 months we've seen GDA move from 1.3
 to 2.99 to 3.0 to 3.9/4!  Are we really confident that in another
 9-12 months they wont scrap this and move to GDA-5 and leave us
 in the dust yet again?

According to the libgda development mailing list, they are targetting
2.26 which seems to be scheduled for Q1 2009.  Depending on distro
release schedules, this means it may not be out in the wild until Q3
2009.  I expect the gda-dev branch to be finished long before then.

 
 3. Use Libdbi/another approach. Advantages: we hope they are more stable and
 bug free, but do not know. Disadvantages: we have to re-do all the work done
 to integrate GDA :(.
 
 We don't need to hope.  Libdbi *IS* more stable and bug free.  DBI has
 been out in the wild for AT LEAST half a decade, maybe more.  It has
 providers for all the major OSS DBs as well as ODBC to connect to the
 non-OSS DBs.  It is still being actively maintained but it's so rock
 solid that there just isn't much that NEEDS to be done.
 
 Another advantage is that DBI has been out in the wild and use-tested
 for a long time, so it's unlikely that we'd find any major gotchas
 along the way.  It's benefits (and drawbacks) are well understood
 by the user community.
 
 The one major downside of DBI is that it IS lower-level than GDA.  It
 does not really abstract out the query language like GDA does.  It
 does provide a bunch of type abstractions, but doesn't provide a
 query abstraction.
 
 I also disagree with your statement of disadvantages.  We would not
 have to re-do ALL the work done to integrade GDA.  However we WOULD
 have do re-do a lot of it.

From what I know now, we wouldn't need to redo *ALL* the work.  However,
it might be roughly equivalent to the amount of work to move from GDA-3
to GDA-4, which was a few weekends.  A lot of the changes are simply
based on the requirements of any SQL backend.

 My personal opinion is that we go with #2, use GDA V4. We will need to do
 fixes in either #1 or #2. From a maintenance point of view it's better to put
 those fixes towards a version that has a reasonable chance of a release. 
 (This
 does, of course, assume that V4 actually gets completed). At best the other
 providers get implemented and we have all of them available. At worst, we're
 stuck with sqlite for a while.

 If we really need mysql/postgres right away - it's going to involve
 significant work regardless of the option chosen.
 
 I'll restate my opinion here again.  I think our #1 target is SQLite.
 We need to move our home users off of XML and into a DB so we can get
 the benefits of save-on-commit.  Then MySQL and PG are tied (in my
 mind) for #2.
 
 Phil, do you have a preference? It's probably your preference that counts ;)
 
 I'm not going to push for DBI over GDA, however I do want to make sure
 we're making an educated choice here and not just choosing GDA because
 it's shiny and new and happens to have a 'G' in the name.  I also
 want to make sure we're chosing a technology that WILL be there for
 a long time and wont get us stuck in a situation where we're spending
 all our time keeping up with them changing APIs out from under
 us.

My memory is that I chose GDA over DBI because DBI did not seem to be
maintained.  In fact, there is nothing on their page re release between
Nov 2005 and Feb 2007 (I remember starting the project in 2006).  What
we are now finding is that GDA-3 will not be maintained (I don't have
any current issues with it, but if I find one, who knows how it might
get fixed in the field).  So, with GDA, I think we have GDA-3 which has
no maintenance (and may not be on all distros) and GDA-4 which won't be
released for another 9 months.

Moving to DBI would require:
1) a procedure to create a new db.  As Albert Lash mentioned, perhaps
support for building sqlite tables could be built-in and external
procedures could be used to build mysql/postgres tables.  I'm not sure
how table upgrades because 

Re: GDA: Status

2008-06-03 Thread Nathan Buchanan
Hi,
On Tue, Jun 3, 2008 at 8:19 AM, Derek Atkins [EMAIL PROTECTED] wrote:

 Hi,

 Sorry for the delay, but I've been busy offline most of the
 weekend and yesterday so I've let this thread sit for a bit.
 More comments inline.

 Nathan Buchanan [EMAIL PROTECTED] writes:

  So...In the end, what's our options?
 
  1. Use GDA V3. We will spend time fixing bugs in V3 that will probably
 not be
  released in a bugfix release of GDA. The advantages of this approach are
 that
  we get access to sqlite, mysql, and postgres. The disadvantage is that we
 will
  probably have to ship our own version of GDA, and in a few years, this
 will
  probably be out of date, requiring the switch to V4 anyway. We will
 expend
  significant energy to have it working now, much of this energy will be
 lost
  when moving to V4.
 
  2. Use GDA V4. We will probably send time fixing bugs here, but we are
 almost
  guaranteed that a release will happen. The advantages of this approach is
 that
  we will be current with the new GDA and releases will be done for us (or
 in
  conjunction with us - depending on how closely we work with the GDA
 team).
  Work done here will not be towards a dieing version. The disadvantages
 are
  that we will probably be limited to sqlite until the other providers are
  completed. We may have to distribute pre-release versions of the code
 until
  there is a 4.0 release, but after that, we hand it over to the official
  releases.

 The assumption here (in both #1 and #2) is that GDA-4 will be
 released sooner than that gda-dev branch will finish.  I have seen
 no such assurance.  What happens if gda-branch finishes, gets
 merged back into trunk, but GDA-4 hasn't been released yet?


We'd be in the same predicament as we would be in with GDA v3 - needing to
distribute our own code to make things work. I'm not saying this is ideal,
just that it isn't any worse.


 It means that *we* cannot release GnuCash 2.4 because a major
 dependency (GDA) isn't available in the major distributions.


This assumes we don't distribute any of it with our code. I believe we have
done this sort of thing in the past, but it was before my time here.



 Also, in the past 18-24 months we've seen GDA move from 1.3
 to 2.99 to 3.0 to 3.9/4!  Are we really confident that in another
 9-12 months they wont scrap this and move to GDA-5 and leave us
 in the dust yet again?


A very valid point.



  3. Use Libdbi/another approach. Advantages: we hope they are more stable
 and
  bug free, but do not know. Disadvantages: we have to re-do all the work
 done
  to integrate GDA :(.

 We don't need to hope.  Libdbi *IS* more stable and bug free.  DBI has
 been out in the wild for AT LEAST half a decade, maybe more.  It has
 providers for all the major OSS DBs as well as ODBC to connect to the
 non-OSS DBs.  It is still being actively maintained but it's so rock
 solid that there just isn't much that NEEDS to be done.

 Another advantage is that DBI has been out in the wild and use-tested
 for a long time, so it's unlikely that we'd find any major gotchas
 along the way.  It's benefits (and drawbacks) are well understood
 by the user community.

 The one major downside of DBI is that it IS lower-level than GDA.  It
 does not really abstract out the query language like GDA does.  It
 does provide a bunch of type abstractions, but doesn't provide a
 query abstraction.


This would be a significant shift in direction and it really would be up to
Phill to make this change (as he's doing the work!). Honestly I'd have no
objection to this, but the decision needs to come (IMHO) from the person
doing the work.



 I also disagree with your statement of disadvantages.  We would not
 have to re-do ALL the work done to integrade GDA.  However we WOULD
 have do re-do a lot of it.


Point taken, absolutes are hard to defend ;)


Nathan



  My personal opinion is that we go with #2, use GDA V4. We will need to do
  fixes in either #1 or #2. From a maintenance point of view it's better to
 put
  those fixes towards a version that has a reasonable chance of a release.
 (This
  does, of course, assume that V4 actually gets completed). At best the
 other
  providers get implemented and we have all of them available. At worst,
 we're
  stuck with sqlite for a while.
 
  If we really need mysql/postgres right away - it's going to involve
  significant work regardless of the option chosen.

 I'll restate my opinion here again.  I think our #1 target is SQLite.
 We need to move our home users off of XML and into a DB so we can get
 the benefits of save-on-commit.  Then MySQL and PG are tied (in my
 mind) for #2.

  Phil, do you have a preference? It's probably your preference that counts
 ;)

 I'm not going to push for DBI over GDA, however I do want to make sure
 we're making an educated choice here and not just choosing GDA because
 it's shiny and new and happens to have a 'G' in the name.  I also
 want to make sure we're chosing a technology that WILL be