diff --git a/Docs/projects.html b/Docs/projects.html index 5e4f7d9241..bfb2dd290e 100644 --- a/Docs/projects.html +++ b/Docs/projects.html @@ -1,7 +1,7 @@
-The GnuCash pages -provide overview & introductory material about GnuCash, and in -general present a glossier, more accessilbe format. This page is -aimed at developers, not users. +There are currently several different versions of GnuCash. The current +stable, production release is gnucash-1.2.x and is Motif based. However, +development has all but switched entirely over to Gnome; the Motif version +will probably eventually fall to the wayside. (Note that other versions, such as KDE, +Java or PalmPilot have been discussed and/or started. More about this below). +The latest Gnome version, and any latest version in general, is currently +available only via CVS. There are precompiled versions available, but these +are usually only for the stable releases. Don't use the unstable versions +unless you are looking for excitement and adventure.
-We believe that a GNU GPL project should provide goals and motivations -at both the large and the small scales, in order to focus and motivate -the developers. Over-arching and grand goals are difficult to grasp -and carry out; yet their lack serves only to dissuade the grand -thinkers. A list of detailed goals may be mind-numbing to the casual -reader; yet, without them, the roll-up-your-sleeves-and-do-it -coder cannot know where to begin. Detailed goals lend a concreteness -to the discussion: they can be architected, designed and coded at any time -by coders of any ability. Thus, we present a list of goals, large and -small, with the hope that the small goals will fall quickly, and the -large ones shall turn into a multitude of small ones. +This document is divided into several sections. The first deals with +archititectural and philosophical design issues. The second deals with +interesting technologies. The third deals with desirable features and +functions.
-
- -
- -
- -
- -
-
+First, one must maintain a clean separation between the data structures +and the GUI that manipulates them, along the lines of a +Model-View-Controller paradigm. Lists of accounts and the transactions in them can be thought of as a representation of financial data, a Model. The GUI that adds, modifies and deletes these should be thought of as a manipulator of the data, a Controller. -The current Motif GUI is just -one possible manipulator of the data; other GUI's, -some simple, some complex, some possibly based on other graphical -toolkits (Qt, gtk, emacs) should be possible. -The View of the data is a modern way of saying "report". -One typically does not view, or want to view all of the data, -but only a subset: say, only the transactions for the month of May, -or only the account totals for certain accounts. The concept of "View" -in fact consists of two very separate ideas: the Query Engine -and the Report Generator. The Query Engine is used to extract -a list of transactions from the Model database, based on a set of dates, -a set of types, or other criteria. This list is then typically -edited by the controller, or possibly printed. The Report Generator -is used to create summary reports about average account balances, -or profit&loss statements, or cash-flow statements, or may be graphed -as pie charts of asset allocations, or graphs asset value over time. +The Motif or Gnome GUI's are just two +possible manipulators of the data; others, based on e.g. Qt/KDE, +emacs, Java applets or Java servlets should be possible.
- -
-In particular, with respect to OFX & online banking, one should be able to think -of GnuCash as a very special browser, capable of browsing financial web sites. -Instead of talking HTML/HTTP, it would talk OFX or Gold with the remote -server. Besides just statically viewing ones bank account, it should also -allow bill payment and other account manipulation. +However, GnuCash also needs to deal with multiple distributed data +sources: stock quotations from the net or transaction confirmations +from online banks and brokerage houses, or more mundane sources, +such as file imports, or merger of data from several users. In this +language, the concept of a global Model-View is dated, and somewhat +inappropriate. Rather, one is worried about how data is represented +in the local address space of the GUI, how the GUI manipulates it, +how date is brought in and merged from external sources, and how that +data is again output, whether to a file or a local or remote database. +Thus, the View is essentially a local data cache: its the data that +is immediately present and being displayed, reported, and manipulated. +The Model is the abstraction of that data that the GUI (the controller) +can act on. +
+In GnuCash, the Model is implemented via the Engine API, and +the View is the data that is currently in the Engine. Thus, +the Engine is a set of programming API's that the GUI (or a script, +or even a clever command-line-addict) can use to manipulate the data. +Currently, the Engine is fairly poor, and matches the data types and +formats that the GUI can manipulate. These include transactions, +transaction entires (splits), accounts and account heirarchies. +The Engine has a very simple apply/commit model, and a simple +query mechanism for generating reports and views. +The Engine currently handles only a small set of data sources: +it can import and merge in QIF's, it can read and write its own +binary byte stream, and can get stock quotes from the net. +However, since the Engine is meant to be the interface between +the GUI and the financial data, it is meant to be able to do much more. +
+In particular, it should be possible to back the Engine onto an +SQL dataabase, and thereby enable multiple users and/or intrface +to more complex accounting ssytems. The engine should also be +expandable to handle other sources of data, such os OFX, +Integrion GOLD, the Open Trading Protocol, the OMG CORBA +General Ledger submission, the IBM San Francisco business objects, +or closer to home, Linux Kontor. In particular, it should +be possible to use GnuCash not only to view data from these sources, +but also to manipulate it and send it back. +
+The above structure then leads one to view GnuCash not so much as +a tightly integrated application, but a loose federation of parts +objects, libraries and interfaces. In order to facilitate the +glueing together of these parts, as well as simplify the questions +of customizablity, change and rapid development, GnuCash makes use +of an extension language to glue the pieces together. The extension +language that is most central to Gnucash is Scheme, although some +of the interfaces are also available through Perl.
-
-
- cvs -d :pserver:cvs@linas.org:/home/cvs/cvsroot login -- The password is "guest". To get a copy of the source, do a -
- cvs -d :pserver:cvs@linas.org:/home/cvs/cvsroot checkout xacc -- Note that various versions can be accessed with tags. - For example, the tag xacc-10b17 will get you version - 1.0.17 and the tag xacc-11b6 will get you version 1.1.6 - In particular, the latest code in the 1.0.x series (the stable series) - is available on the branch xacc-10-patch. For historical - record, you can view Robin Clark's original source from October 1997 - at xacc-09a. Things have changed a *lot* since then. -
- (March 1988) -
- - -
- -
- -
- Status: Essentially more-or-less done (July/August 1998) -
- -