Is there anything *enjoyable* about our development process?

Josh Sled jsled at asynchronous.org
Fri Oct 14 16:09:41 EDT 2005


On Fri, 2005-10-14 at 15:39 -0400, Stuart D. Gathman wrote:
> On Fri, 14 Oct 2005, Josh Sled wrote:
> > On Fri, 2005-10-14 at 13:53 -0400, Chris Shoemaker wrote:
> 
> > - get rid of scheme, it's dependencies and the startup loop.
> 
> There needs to be some kind of embedded script language.  Both
> to provide a high level interface to the underlying C code, and so
> that the high level code is immune to bugs like buffer overflows and
> dangling pointers.  

Actually, it's this assertion I challenge.  80% of the codebase right
now is in C, and it should be 100%.  I don't see a need for any of it to
be in a scripting language.

I could see SWIG (conditionally) used to provide bindings to the core
logic in a number of languages, for external projects to interface
against.  But think the core code, UI and the official distribution
should be simply C.  I could even see this change back over time, as a
new major component is developed using those bindings.  But right now we
must focus on simplicity.

A notable exception is the reports, which can be more
templates-iteration-and-basic-control-flow than embedded-scripting.


> 	Scheme
> 
> What is causing the dependency problems using scheme?

- Simply the dependencies themselves (guile, slib, g-wrap)

- The natural impedence mismatch between C and Scheme.

- The lack of layering we have now, where C and scheme call back and 
  forth freely, and parts of the system are defined primarily in scheme.

- Gnucash init is actually a scheme script that loads a bunch of 
  modules and init, but then calls into a normal C/GTK event loop.  
  Which makes it a PITA to debug (the C code is fine, but especially 
  as the calls go back into scheme code...).

Also, frankly, it just puts people off.  I love scheme, and I think
every developer should learn it; it's one of the single most important
things in computing, period.  And I'd be fine if gnucash was 100%
scheme.  But this 80/20 thing is distracting and annoying, especially
given the real, inherent complexity that gnucash has to deal with.

...jsled
-- 
http://asynchronous.org/ - `a=jsled; b=asynchronous.org; echo ${a}@${b}`


More information about the gnucash-devel mailing list