Design Decisions
Charles Goodwin
charlie at xwt.org
Tue Aug 19 17:40:07 CDT 2003
I've been a distant lurker for some time on the GnuCash project.
Some conversations have cropped up and died down on reasons for
GnuCash's woes with regards to it's developer base.
They all have a common theme. They all end with a GnuCash developer
unequivically stating: "We're not changing project direction."
That's fine, it's *your* project after all. But you cannot then go and
complain in the next breath 'we don't have enough developers' when you
refuse to change your own situe.
This is no rant, but I'm going to be blunt. Few people know
Scheme/Guile and fewer are prepared to learn it. Pursuing purely
Scheme/Guile extensions with GnuCash is tying your own hands behind your
backs.
"But we can't rewrite GnuCash or maintain lots of language bindings!"
No, but you can do what some savvy developer already attempted in
GnuCash, use SWIG. Forget the pure Scheme/Guile bindings and use pure
SWIG instead, which supports Scheme/Guile bindings anyway.
What you, the lead developers, need to do is to put your heads together
and decide on what is vital for the future of GnuCash. What do you need
to do to attract users and developers.
I'll save you some time.
Lowering the barrier to entry should top of your priority list.
Adopting SWIG (which maintains Scheme/Guile whilst allowing
Python/Perl/Ruby) would help tremendously.
Gnome2/Gtk2 support should be next. The world is a vain place as well
as a resource begrudging place.
Reviewing and reorganising the architecture of the GnuCash codebase is
something you should not delay any longer. Whilst I have no real
perception of how well designed or abstracted the various parts of
GnuCash are, the way even all you developers talk about it is as if it's
one giant legacy footprint. What can be it's own library? What can be
used by other applications? What in GnuCash is done better elsewhere
and how can that be used?
Another, more controversial, thing to think about is how the GUI is
written. Could rapid progress be made with something like PyGtk/Glade?
You need to get a decent perspective on things. The Gnome team looked
at 1.4, thought, "we can't easily do what we want with this code base."
They identified the major changes needed and gutted the original
codebase, saving only the savable. People savaged the initial result
(Gnome 2.0) but it's becoming evident now (Gnome 2.4 beta1) that they
did what was best for progress and best for the project.
Sometimes you have to take a step backwards in order to take one
forwards. If you embark on a redesign and adopt the simplest, quickest
route, it's very possible even with a handful of developers to produce
something amazing. Look at AbiWord. AbiWord2 is a complete redesign of
AbiWord1 and is far better for it, and they only have a handful of
active developers.
Plus there's nothing like a rewrite to generate a bit of buzz and
attract a few lurker developers who can't get in on the act with the
original codebase.
Nobody will do this for you with a fork of GnuCash because there is not
a group of dedicated developers disatisfied with the project direction -
other than the lack of abundant help. So it's up to you to do it, to
help yourselves so that others may help you in the future. The AbiWord
team took a year out to do their redesign and rewrite. That's the kind
of sacrifice you'll have to make.
Of course, you could keep moaning about people not being willing to
learn Scheme or run a legacy Gtk1 application, but if you do then don't
expect anybody to feel sorry for you or the fate of GnuCash.
That's the cold, hard truth.
- Charlie
More information about the gnucash-devel
mailing list