From 58354c78543a0d55d3e7efe5f2f2837fc5abea92 Mon Sep 17 00:00:00 2001 From: John Ralls Date: Mon, 25 May 2020 17:10:45 -0700 Subject: [PATCH] Remove obsolete documentation files. guile-hackers.txt has been copied into https://wiki.gnucash.org/wiki/Scheme. --- doc/CMakeLists.txt | 17 +- doc/README.HBCI | 206 --- doc/README.OFX | 277 ---- doc/README.francais | 345 ----- doc/README.german | 181 --- doc/README.translator.txt | 222 --- doc/README.txt | 6 + doc/TRANSLATION_HOWTO | 395 ----- doc/What_is_Euro_support | 12 - doc/guile-hackers.txt | 96 -- doc/projects.html | 2845 ------------------------------------- 11 files changed, 7 insertions(+), 4595 deletions(-) delete mode 100644 doc/README.HBCI delete mode 100644 doc/README.OFX delete mode 100644 doc/README.francais delete mode 100644 doc/README.german delete mode 100644 doc/README.translator.txt create mode 100644 doc/README.txt delete mode 100644 doc/TRANSLATION_HOWTO delete mode 100644 doc/What_is_Euro_support delete mode 100644 doc/guile-hackers.txt delete mode 100644 doc/projects.html diff --git a/doc/CMakeLists.txt b/doc/CMakeLists.txt index 233dd64d8e..65430fc879 100644 --- a/doc/CMakeLists.txt +++ b/doc/CMakeLists.txt @@ -1,27 +1,12 @@ add_subdirectory(examples) set(doc_DATA - README.francais - README.german - README-ca.win32-bin.txt - README-de.win32-bin.txt - README-fr.win32-bin.txt - README-hr.win32-bin.txt - README-it.win32-bin.txt - README-lv.win32-bin.txt - README-nl.win32-bin.txt - README-zh_CN.win32-bin.txt - README-zh_TW.win32-bin.txt - README.win32-bin.txt - guile-hackers.txt - projects.html gtk-3.0.css ) set(doc_noinst_DATA CMakeLists.txt gnc-fq-dump.1 gnc-fq-helper.1 gnucash.1.in - README.HBCI README.OFX README.translator.txt tip_of_the_day.list.c - TRANSLATION_HOWTO) + tip_of_the_day.list.c README.txt) install(FILES ${doc_DATA} DESTINATION ${CMAKE_INSTALL_DOCDIR}) diff --git a/doc/README.HBCI b/doc/README.HBCI deleted file mode 100644 index 21c25ce009..0000000000 --- a/doc/README.HBCI +++ /dev/null @@ -1,206 +0,0 @@ -README.HBCI ------------ - -1. Introduction -2. Requirements -3. Quick Tour -4. Known Banks -5. Call for Feedback -6. Known Problems -7. Credits - -1. Introduction ------------ - -Since the beta release 1.7.2, GnuCash features HBCI online banking -support. This makes it the world's first *free* HBCI-enabled personal -finance manager. - -Many additional information about GnuCash and HBCI can be found in -German language on https://linuxwiki.de/GnuCash, -https://linuxwiki.de/AqBanking, and https://linuxwiki.de/OpenHBCI. - -HBCI (Home Banking Computer Interface) is a standard used by German -banks for offering online banking service. Through this standard, -business actions like statement retrieval, initiate bank transfer, or -direct debits can be invoked by any HBCI-compliant client application, -i.e. now also from GnuCash. Authentication and encryption is done -through a bank-issued chip card or a self-generated file-based RSA key -pair. (In the latter case, the user prints out his public key finger -print on paper, signs it, and sends it to his bank.) - -Please note that the programmers of GnuCash cannot give warranties for -anything. In particular, some banks are running a poorly implemented -HBCI on their servers, which does not give you any proper feedback -when a transfer order has been rejected and will not be -executed. Please do not rely on time-critical money transfers through -HBCI for now. - -2. Requirements ------------- - -See also https://linuxwiki.de/AqBanking - -Required packages: - -AqBanking 1.3.0, or any later version: Get aqbanking from -https://sourceforge.net/projects/aqbanking . (Historical note: -Until gnucash-1.8.9, the library "openhbci" had been used, but -with gnucash-1.8.10, gnucash switched to the successor of openhbci -which is aqbanking/aqhbci.) (Second historical note: The library -versions aqbanking-1.2.x or older were split into multiple -packages named "aqbanking" and "aqhbci", but with aqbanking-1.3.0 -and newer all of this is now packaged in the single aqbanking -package.) - -which in turn requires: - -Gwenhywfar 1.16.0, or any later version, -https://sourceforge.net/projects/gwenhywfar, which in turn requires -OpenSSL any 0.9.x, https://www.openssl.org . - -If you want chipcard support, you also need libchipcard version -2.0.0 or later, https://sourceforge.net/projects/libchipcard - -(Note: Not all arbitrary version combinations between aqbanking -and gwenhywfar will work! Only those versions that have been -released on approximately the same date will work together without -problems.) - -After aqbanking has been installed successfully, you can build -GnuCash with: - - ./configure --enable-hbci --with-aqbanking-prefix=/your/aqbanking/prefix - -And you need to apply at your Bank to get HBCI access. The bank will -provide you with some paper work which is needed during HBCI setup in -GnuCash. (For problems during compile see 6. Known Problems below.) - -3. Quick Tour ----------- - -HBCI support is accessible through a few new menu items: - -* Setup: In the main window with the account hierarchy, the "Tools" menu -(German: "Werkzeuge") now contains the item "HBCI Setup" ("HBCI -Einrichtung"). This menu item opens the HBCI Setup druid which -will guide you through the setup. (Note: With the new -aqbanking/aqhbci, the Setup druid is an external program provided -by the aqhbci authors, but this will be explaning during the HBCI -Setup druid.) - - - Chip card users and PIN/TAN users will need to run this only - once. (see 6. Known Problems below if this doesn't work) - - - Users with self-generated file-based keys need to run this - twice. First they will be guided to generate their keys and - have their Ini-Letter printed on paper, which they need to - send to their bank. After some days when the bank has - processed that letter, they need to run the HBCI Setup druid - a second time. - - - Either way, eventually you are presented with a list of - HBCI-accessible accounts, and can choose which of your gnucash - account should be matched with each HBCI account. - -* Account functions: In the register window of your GnuCash accounts, -you now find the submenu item "Online Actions" ("Online Aktionen") in -the menu "Actions" ("Aktionen"). Each item in this submenu invokes a -particular HBCI action: "Get Balance", "Get Transactions", "New -Transfer", "New Direct Debit" ("Saldenabfrage", "Abfrage -Kontoumsätze", "Überweisung", "Lastschrift"). Of course those menu -items will only do anything if that particular GnuCash account was -matched to a HBCI account in the setup druid; otherwise, simply -nothing will happen. How to perform each action will be explained -in the respective dialog windows. - -* Preference: By default, the user has to enter his password/PIN each -time a HBCI action is performed. If you prefer to have your password -cached in memory during your gnucash session, you can enable this by -activating the appropriate button in the Edit->Preference dialog -("Bearbeiten->Einstellungen") in the tab "Online Banking & -Importing". Of course the password/PIN is *never ever* stored on -disk anywhere due to security reasons. - -* HBCI Connection window preference: The HBCI Connection window can -either disappear once the connection is closed, or it can still be -left open so that you can read the bank's feedback messages about the -order. The setting of this respective checkbox in the Connection -window is remembered from session to session. - -* Debug Preference: If HBCI connectivity does not work the way you -expected it to work, you can enable a whole lot of HBCI debugging -output. First, on the "General" page of the preferences, activate the -checkbox for "Show Advanced Setting". Then, on the newly appearing -"Advanced" page, or on the "Online Banking & Importing" page, -activate "HBCI Verbose Debug Messages" to get much more debugging -output. - -4. Known Banks ------------ - -Gnucash/AqBanking (or OpenHBCI) is successfully being used with: -- Deutsche Bank -- Kreissparkasse Hannover -- Hamburger Sparkasse -- Sparkasse Wilhelmshaven - -5. Call for Feedback ------------------ - -If you encounter an error, you can report it in German language on -gnucash-de@gnucash.org (Subscriber-only list; please subscribe on -https://www.gnucash.org/cgi-bin/mailman/listinfo/gnucash-de ) and on on -openhbci-general@lists.sf.net. Please remember to include the version -numbers of gnucash and aqbanking as well as any console output and/or -HBCI connection log (can be obtained through the HBCI Verbose Debug -Messages preference mentioned above). - -Also, if you managed to successfully setup a bank that we don't have in -our list yet, please let us know as well. We appreciate any feedback on -this new functionality. - -6. Known Problems --------------- - -* If the compilation of GnuCash fails with 'cc1: changing search order - for system directory ...' as one of the last message lines, then - call ./configure with the additional option - --enable-error-on-warning=no and recompile. - -* If you don't see the menu items mentioned above, then GnuCash was - not built/compiled with --enable-hbci. Please try to compile GnuCash - by yourself or contact the place where you got your pre-compiled - version of GnuCash from. - -* If you cannot select "Chip Card" as security medium, it means that - your installed version of the AqBanking library has been compiled - without chipcard support. You will need to recompile AqBanking while - libchipcard is installed, and then you (probably) need to recompile - GnuCash. - -* Currently each HBCI action can only be executed while you are - online; support for off-line preparation and queueing is not yet - implemented. - -If you think you can do better on any of these issues -- why not give it -a try and start coding on yet more HBCI features? Gnucash only requires -some C and Gtk/Gnome knowledge, and other developers in the IRC channel -#gnucash, irc.gnome.org, will always assist you with problems arising -during coding. You don't need to know anything about HBCI since OpenHBCI -will do everything for you. Also, I (Christian Stimming) will withdraw -from HBCI/Gnucash development due to personal/time constraints in the -medium term. So if you want more features, why don't *you* start coding -today? We definitely welcome any new developer who contributes even the -smallest improvements. - -7. Credits -------- - -The excellent AqBanking/AqHBCI library is written by Martin Preuss - and Christian Stimming -. Libchipcard is written by Martin Preuss -. - -By Christian Stimming -May 10th, 2006 diff --git a/doc/README.OFX b/doc/README.OFX deleted file mode 100644 index 1cff0f91aa..0000000000 --- a/doc/README.OFX +++ /dev/null @@ -1,277 +0,0 @@ -README.OFX ------------ - -1. Introduction -2. Requirements -3. Implemented features -4. The import process and transaction matching -5. When it goes wrong... -6. FAQ -7. Credits - - -1. Introduction ------------ - -Since the first 1.7.x beta releases, GnuCash features OFX online banking -support. This makes it the world's first *free* OFX-enabled personal -finance manager. The development of OFX and HBCI support also spawned the - a new generic import infrastructure, including a much improved transaction -matcher. -OFX (Open Financial eXchange) is an open standard increasingly popular - for offering bank, credit card and investment statement download, as well -as other services, such as bill payment. Features requiring direct access - to a bank's OFX server are not yet supported. - - -2. Requirements ------------- - -LibOFX 0.7.0 or later -https://libofx.sourceforge.net/ - -which in turn requires: -OpenSP 1.3.x or later, https://openjade.sourceforge.net/ - -Then you enable OFX support by building GnuCash with: - ---enable-ofx added to ./autogen.sh (for CVS) or ./configure (for tarballs) -make -If successful, an item will appear in Gnucash's File/Import sub menu. - -If you installed libofx in a non-standard location, you may also have to use: - --with-libofx-prefix=/your/libofx/prefix - - -3. Implemented features ------------- - -Implemented features (some of these are from the generic import module): --OFX/QFX response file import --Account matching, using unique OFX account ID --Full OFX bank and credit card transaction support. --Explicit support for investment transactions, including stock reinvest and - dividends. --Commodity import and matching, for investment transactions. --Transaction duplicate detection, using the unique OFX transaction ID. Even if - downloaded twice, transactions are only imported once. --Transaction duplicate detection, using amount, date, check number, - full or partial memo, full or partial description. --"Destination" account matching, using exact string match on either - memo or description. --Saves ALL transaction data currently supported by LibOFX. - When no gnucash equivalent, it is put in the Transaction's Note field. You must - have double-line mode enabled to view the notes field. --Files containing multiple statements are supported, and transactions can - be matched at the same time. - - -4.The import process and transaction matching ----------- - -First, you must successfully download an OFX response file from your bank. - -If you successfully built GnuCash with ofx support, you will be able to select -the file from the File / Import / Import OFX/QFX menu item. - -Note that Ofx files can contain information for multiple accounts, depending on -the number of accounts in your file, and the presence of absence of investment -transactions, the following two windows will popup one or multiple times: - -A) Account matching window. - --Look carefully at the information in the top part of the -window. From that info you should be able to determine which of your accounts -this is. --Select the matching GnuCash account from the list if there is one, or -create a new one with the button at the bottom. If you choose to create a new -one, currency, account type and name will be filled in for you. Feel free to -change the name to whatever you like. - -NOTE: --investment accounts will -cause more than one account to be matched/created in GnuCash. Most will cause a -cash and a stock account to be created. In addition, if there are dividends in -the transaction, you will be asked to choose an Income account. --All account matches are remembered, and you will not be asked on subsequent imports. - -B) Commodity matching window - -If your statement contains information like stock -transactions, you will be asked to match the stock to a GnuCash commodity. The -process is similar to account matching above. The match is remembered by the -Commodity CUISP. - - -Once the process of account and commodity matching is done, you -will be presented with the transaction matcher window. Let's learn how to use -it by an example. - -Let's assume you import Credit Card/Savings/Checking accounts -in that order (3 separate imports), and your accounts start with no -transactions: You will first have all new transactions in Credit Card, some of -which are transfers going into checking. You then import you savings Savings -account, which will also have misc transactions, and presumably some going into -Checking. You then import your Checking account. The matcher will see -duplicate transactions in checking (Those who have a split in Credit Card and -Savings), and will only clear the split in Checking for those. The other -transactions in savings will be imported as new. - -What most people don't -understand about this process is that there are two different types of matches -that can be done by the importer on a single transaction. - -The first kind of -match will determine if a duplicate of this transaction exists in GnuCash. If -that match determines that there isn't (or if the user overrides), a second -match will be done to try and find the appropriate account to add a split to the -transaction (only if the transaction isn't already balanced). - -Now, for the specifics, there are two possibilities: - -A- You are a "Do everything daily" kind of guy. - -You write a GnuCash transactions every time you write a check, spend money, etc. - -Suppose you -spend 40$ on your credit card at "Overpriced Restaurant". When you come back or -at the end of the week when you get rid of all the receipt in your wallet, you -enter a 40$ transaction from "Credit Card" to "Expenses->Restaurant". At the -end of the week, month, year or whenever, you download your -credit card statement. The importer will spot duplicates (with a certain -confidence level represented by the red, yellow and green bars) and by default -mark them as cleared. - -If you forgot to enter some transactions, the matcher will have an inconclusive - match or will consider them as new and treat them like in the next scenario. - - -B- You are an "Do everything at once kind of guy". - -You don't write your transactions as they occur, instead you download -your statement at the end of the month. - -Now the importer should find that all transactions in your credit -card are new (except maybe payments, if you imported your checking account -prior to your credit card account). The first time you import from that -account, all transactions will say "Need an account to Auto-Balance xxx$". -You will then pick an account for each one. In the case of the 40$ we talked -about, you select "Expenses->Restaurant" (the importer already knows it's coming -from "Credit Card"). Now the next month (since you never learn) you go to -"Overpriced Restaurant" AGAIN. Assuming your bank gives you a minimum of info -electronically, the importer will remember that a transaction at "Overpriced -Restaurant" from account "Credit Card", goes to "Expenses->Restaurant". All -transactions are already cleared at this stage. - -In both scenarios, all transactions are balanced at creation time, and are in -the exact same accounts. - - -5. When it goes wrong... ------------------ - -Tough much effort has been put in implementing relevant parts of the OFX -standardas well as possible, and gracefully treating parts that are not -supported, OFX is not implemented in a consistent manner across banks. If you do -encounter a problem, please report it to the developers (ideally with a sample -file) - -If you encounter an error, you can report it in one of the following ways (in -order of effectiveness for you, but ANY report is apreciated): - -* Open a bug at https://bugs.gnucash.org/ -* gnucash-devel@gnucash.org or gnucash-user@gnucash.org (Subscriber-only list; -please subscribe on https://lists.gnucash.org/mailman/listinfo/ ) -* https://lists.sourceforge.net/lists/listinfo/libofx-devel/ if ofxdump doesn't -give you the expected data. -* many developers hang on the IRC channel #gnucash on irc.gnome.org - -Please remember to include the following information in your report: The version -numbers of gnucash, libofx and OpenSP as well as any console output and/or -output of the ofxdump utility on your file. - - -6. FAQ ----------- - -(1) GnuCash simply hangs when importing an OFX file - -This is probably bug https://bugs.gnucash.org/show_bug.cgi?id=101738 -Unfortunately the main developers are unable to reproduce. So far, this bug -only occurs with OpenSP 1.5. It does not occur for anyone with OpenSP 1.3.x, -which is shipped on most Linux distro as part of openjade, so you may want to -downgrade. (Please note that OpenSP 1.3.x has several other issues however) - -This bug is believed to be a threading issue, and may be a problem in GnuCash, -LibOFX, OpenSP, or some versions of the Linux kernel. If you have any useful -info,please add a comment to the bug above (even if only to say you encountered -the bug,and your version of the previously mentioned packages). - - -(2) Why doesn't GnuCash support direct connections to bank like Quicken/Money - -I am striving to get this working, but banks are simply not cooperative in -general, and my bank doesn't support it at all, so it will not be easy to -debug once implemented. - -All I can say is "We're working on it...". But there are many steps left to -be taken. - - -(3) I don't see the File / Import / Import OFX/QFX menu item! - -If you don't see the menu mentioned above, then GnuCash was -not built/compiled with --enable-ofx. Please try to compile GnuCash -by yourself or contact the place where you got your pre-compiled -version of GnuCash from. - - -(4) When I import in OFX/HBCI, and change the destination account in the -matcher, why doesn't other transaction with the same memo/description change? - -The matcher already "learns" where transactions are assigned. The only problem -is thatcurrently, it only uses what it has learned on the next import. -Re-processing the list during the import process is a feature you can hopefor -early in the 1.8 series. - -(5) Can GnuCash support QFX files (Quicken Financial eXchange?) - -As far as GnuCash is concerned, QFX and OFX files are identical. - -(6) What about OFC support (Open Financial Connectivity, a Microsoft standard) - -OFC is a SGML based format still very commonly used in Brazil, and less -frequently by banks all over the world. - -The main author of LibOFX managed to find -specs, but needs the OFC DTD (Data Type Definition) to add support. That file -is supposed to be available from a link an this page: -https://support.microsoft.com/default.aspx?scid=kb%3Ben-us%3B162872 - -However, despite numerous requests to Microsoft to either fix the broken link or -send him a copy of the file, they still haven't done so. That file is probably -free to redistribute, and was part of their OFC development toolkit. If you still -have a copy or know where to get one, please send the information to -bock@step.polymtl.ca - -(7) Where do I find/How do I download OFX files for bank XYZ? - -Somewhere on one of the banks website. We can't say anymore than this, the -address, interface, and origin of the info used as user id and password changes -from bank to bank. - -(8) Can I export my Gnucash data in QIF, OFX, CSV, etc. ? - -Export capability is currently being built into LibOfx. - - -7. Credits------- - -The LibOFX library is written by Benoit Gr�goire -The Generic Import Infrastructure was written by Benoit Gr�goire -, Christian Stimming and Derek Atkins -. - -By Benoit Gr�goire -Sunday, Feb 2, 2003 - diff --git a/doc/README.francais b/doc/README.francais deleted file mode 100644 index fb01b5c539..0000000000 --- a/doc/README.francais +++ /dev/null @@ -1,345 +0,0 @@ -########################################### - GnuCash version 2.0.x -------------------------------------------- - -######### -Sommaire: ---------- - - - Vue d'ensemble - - Mise � jour depuis la version 1.8.x - - D�pendances - - Mise en route - - Internationalisation - - Compilation et installation - - plates-formes support�es - - Sites de t�l�chargement miroirs - - R�cup�rer les sources avec SVN - - D�veloppement de GnuCash - - -############## -Vue d'ensemble --------------- - -GnuCash est un gestionnaire de finances personnelles. Une interface graphique -d'enregistrement ressemblant au talon de votre ch�quier vous permet d'entrer et -de suivre vos comptes bancaires, actions, revenus et m�me vos op�rations -boursi�res. L'interface est con�ue pour �tre simple et facile � utiliser, mais -elle est adoss�e aux principes de comptabilit� de la partie double pour assurer -l'�quilibre des comptes. - -Quelques une de ces caract�ristiques sont: - -* Une interface facile � utiliser. Si vous savez utiliser le talon de votre -ch�quier, vous savez utiliser GnuCash. Tapez directement dans le registre, -d�placez vous entre les champs, et utilisez quick-fill (saisie rapide) pour -compl�ter automatiquement la transaction. L'interface est personnalisable depuis -l'application elle-m�me (pas de fichiers de config � modifier :) ). -* Transactions r�currentes : GnuCash a la possibilit� de g�n�rer automatiquement -des transactions, de rappeler leur �ch�ance, de proposer de la valider ou de la -retarder et �galement de les supprimer apr�s un certain temps. -* Importation de fichiers OFX : GnuCash est le premier logiciel libre � -supporter le protocole � Open Financial Exchange � qui est de plus en plus -utilis� par les banques. Le d�veloppement du support OFX et HBCI a permis une -am�lioration du m�canisme permettant de retrouver des transactions homologues -et les doublons. -* Support de l'HBCI : GnuCash est le premier logiciel libre � supporter le -protocole allemand d'op�rations bancaires en ligne -* Importation de fichiers Quicken: Importation de fichiers au format QIF de -Quicken. Les fichiers QIF sont automatiquement fusionn�s pour �liminer les -transactions dupliqu�es. -* La fen�tre de rapprochement avec les soldes actuels rapproch�s et point�s rend -le rapprochement facile. -* Portefeuille d'actions/fonds de placements (SICAV et FCP en France): suivi -d'actions individuellement (une par compte) ou dans un portefeuille de comptes -(un groupe de comptes qui peuvent �tre affich�s ensemble). -* R�cup�ration des cours des actions et fonds communs (FCP et SICAV) depuis -diff�rents sites Web, mise � jour automatique du portefeuille. -* Rapports : affichent le bilan , les pertes et profits, �valuation du -portefeuille, rapports de transactions, ou suivi du solde du compte, ou -exportation de ceux-ci en HTML. Vous pouvez �crire votre propre rapport -personnalis� si vous connaissez un peu le langage Scheme. Les rapports peuvent -maintenant �tre r�alis�s sur une p�riode comptable. -* Monnaies/devises multiples et March� des changes : de multiple monnaies sont -support�es et peuvent �tre achet�es et vendues (faire du commerce avec elles). -Les mouvements mon�taires entre comptes sont totalement �quilibr�s quand la -partie double est activ�e. Les transferts en devises multiples sont support�s. -* Tableau de comptes : un compte ma�tre/principal peut avoir une arborescence -de comptes d�taill�s en dessous de lui. Cela permet d'avoir des types de -comptes similaires (par exemple Liquidit�s, Banque, Actions) group�s dans un -compte ma�tre (par exemple Avoirs). -* Transactions r�parties : une simple transaction peut �tre r�partie en -plusieurs morceaux pour enregistrer les imp�ts, paiements, et autres entr�es -compos�es. -* Partie double: Quand elle est activ�e, chaque transaction doit d�biter un -compte et cr�diter un autre d'un montant �quivalent. Cela permet de s'assurer -que les "livres sont �quilibr�s" : c'est � dire que la diff�rence entre les -revenus et les sorties est exactement �gale � la somme de tous les avoirs, -qu'ils soient bancaire, liquidit�s, actions ou autre. -* Types de comptes Revenus/D�penses (Cat�gories) : ils ne servent pas uniquement -� cat�goriser votre flux de liquidit�s/argent, mais quand ils sont utilis�s avec -la fonction de la partie double, ceux-ci peuvent fournir un �tat exact des -pertes et profits et donc du r�sultat de la p�riode. -* Extrait de compte/grand livre : de multiples comptes peuvent �tre affich�s -dans une fen�tre registre/d'enregistrement au m�me moment. Cela peut faciliter -l'ennui de la recherche/v�rification des erreurs de frappe/d'entr�e. Il fournit -aussi une mani�re agr�able de visualiser un portefeuille de beaucoup d'actions, -en montrant toutes les transactions dans ce portefeuille. -* �crit en C avec un support �tendu de Scheme via Guile. -* L'acc�s au fichier est verrouill� par un drapeau de s�curit� r�seau, pr�venant -des dommages accidentels si plusieurs utilisateurs essaient d'acc�der au m�me -fichier, m�me si le fichier est mont� par NFS. -* Fournit un format de flux de donn�es (byte-stream format), qui permet aux -comptes et groupes de comptes d'�tre transmis par d'autres processus via pipes -ou sockets. -* Chargement de la date au format europ�en, traductions diverses. -* Nouveau manuel utilisateur : une toute nouvelle aide en ligne a �t� �crite : -elle se focalise sur comment faire les actions en relation avec un tutoriel et -un guide des concepts. -* De nouveaux menus : les menus de GnuCash ont �t� revus pour se conformer aux -principes d'interface de Gnome. - - -Home Page: - -https://www.gnucash.org/ (site officiel - version anglaise) - -Binaires pr�compil�s / ex�cutables: -https://www.gnucash.org/pub/gnucash/ - -Versions de d�veloppement: -https://www.gnucash.org/en/hacking.phtml - -################################### -Mise � jour depuis la version 1.8.x ------------------------------------ - -Il y a beaucoup, beaucoup de changements depuis la s�rie 1.8 - -Jetez un coup d'oeil au fichier NEWS si vous voulez plus de d�tails. - -- GnuCash n�cessite g-wrap version 1.3.4 ou sup�rieur. Consultez la section � -D�pendances � pour plus de d�tails. - -- Les donn�es ne sont plus accessibles � partir de la version 1.6 une fois de -nouvelles fonctionnalit�s utilis�es : il n'y a pas de compatibilit� -descendante. Sauvegardez vos donn�es!! - -- La documentation de GnuCash est d�sormais d�plac�e dans un package s�par� -(gnucash-docs). si vous voyez un message du type � URL non trouv�e �, en -cliquant un item du menu Aide, vous devrez installer la package gnucash-docs. - -Nous esp�rons que vous vous appr�cierez toutes les nouvelles fonctionnalit�s! - -############ -D�pendances ------------- - -Les packages suivants sont requis et doivent �tre install�s pour faire -fonctionner GnuCash: - -[Consultez le fichier README.dependencies] - - -############# -Mise en route -------------- - -Pour les d�tails d'invocation/de lancement de GnuCash, regardez les pages de -man dans doc/gnucash.1. -Vous pouvez �galement taper gnucash --help sur la ligne de commande. - -Vous pouvez d�marrer GnuCash en ligne de commande, avec � gnucash � ou � gnucash - �, o� est un fichier de donn�es de GnuCash. - -Des exemples de comptes peuvent �tre trouv�s dans le sous-r�pertoire "data". -Les fichiers *.xac sont les comptes de GnuCash qui peuvent �tre ouverts avec -le menu � Fichier/Ouvrir �. -Les fichiers *.qif sont des fichiers au format Quicken qui peuvent �tre ouverts -par le menu � Fichier/Importer QIF �. - -GnuCash r�pond aux variables d'environnement suivantes : - - GNC_BOOTSTRAP_SCM - l'emplacement du code scheme initial de bootstrapping. - - GUILE_LOAD_PATH - Pour surpasser le chemin de GnuCash utilis� pour le - chargement de fichiers Scheme. C'est une variable de la m�me forme que les - variables d'environnement PATH ou LIBRARY_PATH. - - GNC_MODULE_PATH - Pour surpasser le chemin de GnuCash utilis� pour le - chargement de modules GnuCash. C'est une variable de la m�me forme que les - variables d'environnement PATH ou LIBRARY_PATH. - - GNC_DEBUG - active la sortie de d�bogage. Cela vous permet d'activer - le d�bogage dans le processus de d�marrageplus rapidement qu'avec l'option - --debug. - - -########################### -Internationalisation (i18n) ---------------------------- - -Des traductions (fichiers .po) existent pour diff�rentes langues. Ceux-ci -sont activ�s avec les variables d'environnement. Par exemple, - -En fran�ais, avec bash: - export LANG=fr_FR - -En fran�ais, avec tcsh: - setenv LANG fr_FR - -Pour la version allemande: - export LANG=de_DE - - -########################### -Compilation et installation ---------------------------- - -[Pour plus de d�tails sur la compilation, lisez doc/README.build-system] - -GnuCash utilise GNU Automake pour traiter le processus de compilation, donc -pour plus de d�tails, regardez les instructions g�n�rales dans INSTALL. - -Ci-dessous nous d�taillons les parties sp�cifiques de GnuCash. - - -Avant de compiler GnuCash, vous devrez obtenir et installer les packages -suivants: - -libtool : Disponible � ftp://ftp.gnu.org/gnu. - Les RPMs et debs sont largement disponibles avec la plupart des - distributions. - -syst�me de d�veloppement gnome: en-t�tes (headers), librairies, etc. - -libxml: disponible sur ftp.gnome.org - -g-wrap : Les RPM's, debs, et sources sont disponibles � - https://www.gnucash.org/pub/g-wrap. - vous devrez utilisez g-wrap 1.3.4 ou sup�rieur - -texinfo: Si vous compilez depuis svn, vous avez besoin du package GNU texinfo, - version 4.0 ou ult�rieure. - - -Ce que vous aurez besoin de r�cup�rer et d'installer pour �tre s�r d'avoir -tous ces �l�ments correctement install�s d�pendra de votre syst�me -d'exploitation , mais ici se trouve une liste partielle de ce que vous aurez -besoin pour les syst�mes que nous connaissons: - - Debian/GNU/Linux: (cf README.dependencies) - actuel: - libgnome-dev - libgtkhtml-dev - guile1.4 - libguile9-dev - libguile9-slib - - -GnuCash comprend quelques options non-standard de ./configure . Vous -devriez lancer � ./configure --help � pour la liste la plus � jour des options -support�es. - -Si vous voulez seulement qu'une langue en particulier soit install�e, vous -pouvez d�finir la variable d'environnement LINGUAS avant de lancer ./configure. -Par exemple, pour installer seulement les traductions fran�aise, lancez - - $ export LINGUAS=fr - $ ./configure - -Si vous voulez �tre s�r que toutes les langues soit install�es, lancez - - $ unset LINGUAS - $ ./configure - -Bien que vous ayez besoin des librairies Gnome install�es, vous n'avez pas -besoin d'utiliser le bureau/interface Gnome. - -Les chemins de lancement et d'installations sont s�par�es. Le --prefix que vous -sp�cifiez � ./configure d�termine le chemin o� les ex�cutables chercheront des -fichiers � leur lancement. Normalement, cela d�termine o� � make install � -installera les fichiers. Cependant, automake supporte �galement des variables. -DESTDIR est utilis�e pendant le processus � make install � pour installer des -objets dans un r�pertoire tampon. Chaque objet et chemin est pr�fix� avec la -valeur de 'DESTDIR' avant d'�tre copi� dans les r�pertoires d'installation. - - make DESTDIR=/tmp/staging install - -Cela place les objets d'installation dans une arborescence de r�pertoire -construit sous `/tmp/staging'. -Si `/gnu/bin/foo' et /gnu/share/aclocal/foo.m4' doivent �tre install�s, la -commande ci-dessus installera `/tmp/staging/gnu/bin/foo' et -`/tmp/staging/gnu/share/aclocal/foo.m4'. - -DESTDIR peut �tre utile quand on essaie de construire des images d'installation -et des packages. - - -######################## -Plates-formes support�es ------------------------- - -La version 2.0.x de GnuCash est r�puter fonctionner sur les syst�mes -d'exploitation suivants: - -GNU/Linux -- x86, Sparc, Alpha -Solaris -- Sparc -FreeBSD -- x86 -OpenBSD -- x86 -MacOS X -- PPC - -GnuCash peut probablement fonctionner avec la plupart des plateformes POSIX, si -les librairies et les outils sont disponibles. - - -############################### -Sites de t�l�chargement miroirs -------------------------------- - -Vous pouvez aussi t�l�charger GnuCash � partir de: - - - https://download.sourceforge.net/gnucash - -Vous pouvez r�cup�rer les packages Mandriva de GnuCash sur les sites Cooker de -Mandriva ou dans les derni�res versions de la distribution) - - -##################################### -R�cup�rer les sources avec git -------------------------------------- - -Une version en lecture seule de l'arborescence git est disponible � -cette adresse : - - https://github.com/Gnucash/gnucash/ - - -######################## -D�veloppement de GnuCash ------------------------- -Avant de d�marrer � d�velopper sur GnuCash, vous devriez faire les choses -suivantes: - -1. lisez le fichier src/doc/coding-style.txt pour apprendre les styles - de codage utilis�s dans le code source de GnuCash. Lisez �galement - https://wiki.gnucash.org/wiki/Development - -2. Plusieurs des r�pertoires sous src contiennent des fichiers appell�s - design.txt qui expliquent beaucoup des aspects de la conception de GnuCash. - Lisez les. - -3. Allez sur le site web de GnuCash et survoler les archives de la liste de - diffusion du d�veloppement de GnuCash (gnucash-devel). - - 4. Rejoignez la liste de diffusion de d�veloppement de GnuCash - (gnucash-devel). Regardez le site web de GnuCash pour des d�tails sur la - m�thode pour y parvenir. - - -Soumettre un patch - -Lisez SVP le fichier README sur les m�thodes utilis�es pour transmettre un -patch � l'�quipe de d�veloppement de GnuCash. - -Merci, diff --git a/doc/README.german b/doc/README.german deleted file mode 100644 index a04810ef77..0000000000 --- a/doc/README.german +++ /dev/null @@ -1,181 +0,0 @@ -************ Unstabile Version ****************** -Alle Versionen der 2.1.x Serie von GnuCash sind experimentelle -Entwicklungsversionen. Sie koennen normal funktionieren, muessen aber -nicht. Benutzung auf eigene Gefahr! - -Die letzte stabile Version war gnucash-2.0.0. -Die n�chste stabile Version wird gnucash-2.2.0 sein. - -############################################## - -GnuCash -------- - -GnuCash ist die freie OpenSource-Finanzverwaltung f�r GNU/Linux -und Unix. - -Das Programm ist eine Komplettl�sung zur Verwaltung der Finanzen -von Privatanwendern und Kleinbetrieben. Das aus dem Rechnungswesen -bekannte Prinzip der doppelten Buchf�hrung wird in GnuCash -konsequent umgesetzt, so dass GnuCash h�chste Anspr�che an die -Kontenf�hrung erf�llen kann. Auch Homebanking �ber HBCI ist -m�glich, wenn die Bibliothek AqBanking installiert ist. F�r den -Gesch�ftsverkehr ist die Verwaltung von Kunden, Lieferanten und -Rechnungen enthalten. Weitere Features sind terminierte Buchungen, -Import von OFX-Dateien und QIF-Dateien, zahlreiche Berichte und -Grafiken mit Torten- und Balkendiagrammen und eine -benutzerdefinierbare Oberfl�che. - -F�r Neueinsteiger ist ein Assistent zur Kontenerstellung -vorhanden. Bestehende Dateien mit Finanzdaten z.B. aus Quicken -oder Microsoft Money k�nnen problemlos �ber den QIF-Import -eingelesen werden. - -Bei Fragen zur Installation und zur Benutzung steht eine -deutschsprachige Mailingliste gnucash-de zur Verf�gung. - -Homepage: https://www.gnucash.org - -Deutsche Wiki-Seite: https://linuxwiki.de/GnuCash - -�bersetzungen der englischen Stichworte siehe po/glossary/de.po. - - -Ben�tigte Pakete: ------------------ - -Siehe README.dependencies; im wesentlichen alle -Gnome2-Entwickler-Pakete sowie guile, slib und swig. (g-wrap wurde -mit gnucash-2.2.0 durch swig ersetzt und wird nicht mehr benutzt.) - -F�r die HBCI-Funktionen muss au�erdem das Paket aqbanking -installiert sein, welches noch ein Paket namens gwenhywfar -ben�tigt. Siehe auch doc/README.HBCI. - - -Starten von GnuCash: --------------------- - -GnuCash kann von der Kommandozeile aus gestartet werden, und zwar einfach -mit "gnucash" oder mit "gnucash ", wobei filename der Name eines -gespeicherten Gnucash-Daten-Files sein muss. - - - -�bersetzung und Installation ----------------------------- - -Diese Schritte sind nur f�r die Sourcedistribution erforderlich, nicht -f�r die Bin�rdistribution. - -Siehe auch https://www.linuxwiki.de/GnuCash/SourceInstall - -Nur beim Uebersetzen von GnuCash braucht man zusaetzlich die folgenden -Pakete: - -libtool -- Erhaeltlich bei ftp://ftp.gnu.org/gnu. - RPM's und deb's sind in ihrer Betriebssystem-Distribution. - -Normalerweise wird GnuCash wie folgt �bersetzt und installiert: - - # ./configure - # make - # make install - -Um deutsche oder franzoesische Versionen zu uebersetzen, muss die -Umgebungsvariable entsprechend gesetzt sein. - - -An GnuCash mitentwickeln : --------------------------- - -Bevor Sie an GnuCash mitentickeln , sollten sie folgendes tun: - -1. Lesen von: https://wiki.gnucash.org/wiki/Development - -2. Viele der Verzeichnisse unter 'src' enthalten desing.txt-Dateien, - die viele Aspekte des GnuCash-Designs erklaeren. Auch lesen. - -3. Die Gnucash development mailing Liste ueberfliegen, das Archiv ist - auf der GnuCash-Website. - -4. Abonnieren der GnuCash development mailing Liste. Details dazu auf - der Website. - - -Einen Patch einsenden ---------------------- - -Wenn sie etwas Arebit geleistet haben, wollen sie ihr Ergebnis -anderen zur Verfuegung stellen. Dazu senden sie einen Patch ein. -Es gibt ein Perl-Skript in Gnucash, das diesen Patch fuer sie -erzeugen kann. -'make-gnucash-patch' wird so benutzt: - -Als erstes die Entwicklungsverzeichnisse wie folgt aufsetzen : - -< GnuCash home development directory > - | - |---- < directory containing original GnuCash sources > - | - |---- < directory containing your modified GnuCash sources > - -Ein konkrete Beispiel koennte wie folgt aussehen : - -/home/me/gnucash - | - |---- /home/me/gnucash/gnucash.pristine (original sources) - | - |---- /home/me/gnucash/gnucash.mywork (original sources + my edits) - -Kopieren des 'make-gnucash-patch'-Skripts in das Haupt-Entwicklungsverzeichnis. -Danach die folgenden Variablen veraendern, damit diese die Namen ihrer -Verzeichnisse enthalten :(am obigen Beispiel orientiert) - -my $old = 'gnucash.pristine'; -my $new = 'gnucash.mywork'; -my $gnc_home = '/home/me/gnucash'; - -Jetzt das Skript in Gang setzen. Hinweis: Das Skript benoetigt die -Programme 'makepatch', 'gzip', 'diff', und 'uuencode' -(und natuerlich 'perl') um zu funktionieren. - -Drei Dateien werden erzeugt, wenn man das Skript laufen laesst : - - gnc.diff - Eine Ascii Text-DAtei, die die Unterschiede zwischen - den Original Sourcen und den von ihnen bearbeiteten enthaelt. - Am Schluss ist eine Liste, die die Files enthaelt, die - hinzugefuegt, veraendert oder geloescht wurden. - - Bitte untersuchen sie dieses File!(insbesondere die Liste - am Schluss) um sicherzustellen, dass alle Aenderungen in der - Datei vorhanden sind. - - Diese Datei nicht einschicken! - - gnucash.diff.gz - Die gzipp'te Version der obigen Datei. - - Nicht einschicken! - - gnucash.diff.gz.uue - Die uuencoded (ascii-encoded) Version - der obigen Datei. - - Dies ist die Datei, die eingeschickt werden muss. - -gnucash.diff.gz.uue an gnucash-devel@gnucash.org per E-Mail schicken. - - -Vielen Dank schon mal im Voraus! - - ------------------ - -Entwickler: siehe AUTHORS - -Stand : 01.05.2006, Christian Stimming - -P.S.: Dieses README ist nur eine teilweise Uebersetzung der -englischen Version, und ist damit eher selten auf aktuellem Stand, -da diese den aktuellen Entwicklungen angepasst wird. Im Zweifel -also bitte die englische Original-Version zu Rate ziehen. - diff --git a/doc/README.translator.txt b/doc/README.translator.txt deleted file mode 100644 index 4fe4ff7af1..0000000000 --- a/doc/README.translator.txt +++ /dev/null @@ -1,222 +0,0 @@ -This document describes some loosely related notes about the different -things needed to translate GnuCash for a particular locale. - -NOTE: A much more up to date and exhaustive HOWTO for translators can -be found in the file TRANSLATION_HOWTO. - - -Table Of Contents - -1. How to create a GnuCash translation file for use with gettext - -2. Remarks about the keyword 'fuzzy' in the po file - -3. How to translate the GnuCash manual - -4. How to translate the files containing the new account hierarchies - ----------------------------------------------------------------------- - - - 1. How to create a GnuCash translation file for use with gettext - -This section explains how to create a GnuCash translation file for -use with GNU gettext. - - by Yannick LE NY , the French translator - V1.1 - 20000813 - - -1) Take the file gnucash.pot, edit it with any text editor and save it - as 'CODE-COUNTRY.po' (it must be a plain text file only not formatted text) - where the CODE-COUNTRY is two or more letters which denote the language - and country for the translation. - - For example: 'it' for Italy, 'fr' for France, 'de' for Germany, - and fr_BE.po for people in Belgium who speak French. - - For france, the file is 'fr.po'. - - -2) Now at the top of the file, you have this: - -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR Free Software Foundation, Inc. -# FIRST AUTHOR , YEAR. - -You need to update this with the current information. - -For example in the de.po file, we have this: - -# Messages in Deutsch für GnuCash -# Copyright (C) 1999 Free Software Foundation, Inc. -# Jan-Uwe Finck , 1999. - - -3) Next, you need to translate each English string into the target - language, for example: - -Before: - -#: messages-i18n.c:11 -msgid "" -"The GnuCash personal finance manager.\n" -"The GNU way to manage your money!" -msgstr "" - -After, the translation in the de.po file: - -#: messages-i18n.c:11 -msgid "" -"The GnuCash personal finance manager.\n" -"The GNU way to manage your money!" -msgstr "" -"GnuCash: Ihr persönlicher Finanzmanager.\n" -"Der GNU-Weg, ihr Geld zu verwalten !" - - -4) When you are ready to test out the strings you have translated, - save the file in the 'po' directory of the gnucash source tree. - You can test if your file is good with this command line: - msgfmt -c -v -o /dev/null FILE.po where FILE is the CODE-COUNTRY. - If you have fuzzy errors, take a look at the end of this document. - - -5) Now, if you have the gettext package installed, you can compile your - po file with this command (run it in the gnucash/po directory): - -msgfmt fr.po --output=./gnucash.mo - - This will create the file 'gnucash.mo' which you can copy to the - appropriate locale directory for your installation. On a RedHat 6.1 - - installation, the directory is /usr/share/locale/fr/LC_MESSAGES. - Alternatively, instead of creating and installing the gnucash.mo - file by hand, you can edit the file 'configure.in' and the file - 'configure' and add your language string ('it', 'fr', etc.) to - the definition of the ALL_LINGUAS variable. - If you add the be.po file, the old line is in the 2 files: - ALL_LINGUAS = "de en_GB fr it ja ru sv" - and the new line is in the 2 files: - ALL_LINGUAS = "de en_GB fr it ja ru sv be" - Now rerun 'make' and 'make install' to build and install the - gnucash.mo file. - -When running GnuCash, you must set the appropriate locale environment -variables: - -In French, with bash: - export LANG=fr_FR - -In French, with tcsh: - setenv LANG fr_FR - -6) Once you have a finished, working po file, need to compress your file - with gzip. On command line, type 'gzip fr.po' (for the French file) and - now you have a new compressed file named 'fr.po.gz'. - Email this file to gnucash-patches@gnucash.org. - - ------------------------------------------------------------------------------- - - - 2. Remarks about the keyword 'fuzzy' in the po file - -You can get more information about gettext and the po file format in -the 'info' pages for GNU gettext. Type 'info gettext' at the command -line. - -Dave Peticolas , the CVS maintainer for GnuCash, -regularly updates the po files, and you may need to add some -translations to the file or correct some strings. - -In the updated po files, you should not have the word 'fuzzy', -otherwise GnuCash will not use the translated string. - -Two examples from the file de.po: - -1) You have this: - -#: messages-i18n.c:35 -#, fuzzy, c-format -msgid "" -"There was an error writing the file\n" -" %s\n" -"\n" -"%s" -msgstr "" -"Es gab einen Fehler beim Öffnen der Datei. \n" -" %s." - -You need to correct the translated string and remove the 'fuzzy' keyword. -For example: - -#: messages-i18n.c:35 -#, c-format -msgid "" -"There was an error writing the file\n" -" %s\n" -"\n" -"%s" -msgstr "" -"Es gab einen Fehler beim Öffnen der Datei. \n" -" %s." - -2) You have this: - -#: messages-i18n.c:251 -#, fuzzy -msgid "Show Income/Expense" -msgstr "Einnahmen/Ausgaben anzeigen" - -You need to correct the translated string and remove the 'fuzzy' keyword. -For example: - -#: messages-i18n.c:251 -msgid "Show Income/Expense" -msgstr "Einnahmen/Ausgaben anzeigen" - ----------------------------------------------------------------------- - - - 3. How to translate the GnuCash manual - -This section describes the actions needed to translate the manual. - -1) Create a new directory doc/sgml/ (where is - something like es, en_GB, or pt_PT). -2) Copy the files from doc/sgml/C into this directory. -3) Recreate the image files in doc/sgml/C/gnucash so that they are - appropriate to the locale. -4) Edit all the sgml files and translate for the locale. - ----------------------------------------------------------------------- - - - 4. How to translate the files containing the new account hierarchies - -This section describes the actions needed to translate the files -containing the new account hierarchies. - -1) Create a new directory accounts/. -2) Copy the acctchrt_* files from accounts/C to accounts/ -3) Do not change any xml tags. -For each file: -4) Change the gnc-act:title, gnc-act:short-description, and - gnc-act:long-description to contain appropriately translated text. - Do not add any newlines in the long description except at the end - and beginning of the string. -5) For each gnc:account in the file translate the act:name, and - act:description fields. Please do not translate any other fields. - -Note: You absolutely don't need to translate all of the files from -accounts/C. A subset of those are fine as well. Probably several of -them will not apply to your local legislative/economic system anyway. -For a really customized account hierarchy you might better create a -new account hierarchy file in GnuCash, and then, by hand-editing the -xml code, split it up into several files and cut&paste the appropriate -tags from the accounts/C/acctchrt_* files. ----------------------------------------------------------------------- - -Thanks so very much to all the translators for their hard effort and -excellent work. diff --git a/doc/README.txt b/doc/README.txt new file mode 100644 index 0000000000..63e3caf919 --- /dev/null +++ b/doc/README.txt @@ -0,0 +1,6 @@ +This directory contains manpages, the tip-of-the-day message +source, and a sample gtk-3.0.css to demonstrate how to customize +GnuCash's Graphical User Interface. + +The example directory contains some basic files for +elementary testing and to illustrate the formats. diff --git a/doc/TRANSLATION_HOWTO b/doc/TRANSLATION_HOWTO deleted file mode 100644 index 11bea7ce22..0000000000 --- a/doc/TRANSLATION_HOWTO +++ /dev/null @@ -1,395 +0,0 @@ -HOWTO: Translating GnuCash -Last update: 2003-07-04 - -The concept of this document is to give you step-by-step instructions on -how to update (or create if non-existent) language translations for the -gnucash project. - -Any additions or corrections to this file should be sent to either Jon -Lapham , Christain Stimming , -or directly to the gnucash-devel mailing list. - -Sections: -1) Mailing lists, IRC and web sites -2) Get the source -3) Contact the maintainer of your language -4) Building, Installing and running GnuCash -5) The glossary file -6) Initial processing of the translation file -7) Translating the .po file -8) Testing and submitting your translations -9) Problems -10) How to translate the GnuCash guide and/or help files -11) How to translate the files containing the new account hierarchies - -============================================================================== -1) Mailing lists, IRC and web sites - -Translators will probably find 3 gnucash mailing lists of interest. General -use questions and answers are found on the gnucash-users mailing list, -specific development questions go to the gnucash-devel list and your finished -translation file are sent to the gnucash-devel list. - -To subscribe or view archives of these lists, go the the gnucash web site, -and follow the links to the mailing lists: -https://lists.gnucash.org/mailman/listinfo - -Another excellent place to get help is on IRC, as many of the developers hang -out there and are eager to help. Go to the #gnucash channel at -"irc.gnome.org". If you don't know what that mean, fire up an IRC client -(for example, xchat), connect to irc.gnome.org and then type "/join -#gnucash". - -The main gnucash web site is loaded with information: -https://www.gnucash.org/ - -The GNU Translation Project is another way to submit translations: -https://translationproject.org/html/welcome.html - -============================================================================== -2) Get the source - -The first thing to do is to download the latest STABLE branch of gnucash. -This could be easily done by visiting -https://www.gnucash.org/pub/gnucash/sources/stable/ -and grab the latest stable source package. - -Please do not use the HEAD branch from SVN, since the text in the HEAD branch -changes so much, it would be a waste of time to translate it. Do not worry, -when the HEAD branch becomes stable, the existing translations in the STABLE -branch will be merged. Your work will not be lost. - -============================================================================== -3) Contact the maintainer of your language - -To find out who is the last person to work on your language, look near the -top of the po/XXXX.po file which corresponds to your language. If your -language does not have a .po file available, you can build one my issuing -this command: - -FIXME: command to build a new .po file - -The beginning of your .po file should look something similar to this: - -# Localization for Portuguese-Brazil -# Copyright (C) 2003 Free Software Foundation, Inc. -# Jon Lapham , 2003 -# Jose Carlos Nascimento - , 2001. -# -msgid "" -msgstr "" -"Project-Id-Version: GnuCash 2.0.0\n" -"POT-Creation-Date: 2003-05-16 16:42-0300\n" -"PO-Revision-Date: 2003-06-02 12:00-0300\n" -"Last-Translator: Jon Lapham \n" -"Language-Team: NONE \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=ISO-8859-1\n" -"Content-Transfer-Encoding: 8bit\n" -"Plural-Forms: nplurals=2; plural=n != 1;\n" - -Look to see who the "Last-translator" was, and send an email to that person -and ask what you can do to help. This is important because if there already -is an active maintainer of the translation file, you should interact directly -with him or her. If there is not Last-translator, or that person is not -maintaining the file actively (and tells you to take over), you will become -the maintainer and you should change the "Last-translator" to your name and -email address. - -============================================================================== -4) Building, Installing and running GnuCash - -Before starting to work on your translations, it is suggested that you -build the gnucash source code. This way you can get your system set up -correctly with all the development packages you need. It is a good idea -to actually run gnucash with your new translations because it is quite -helpful to see the phrases in the context of the running program. - -For how to build and install, please refer to ../README - -After installation, insure that it works by running (as a normal user, -no need to be root here): - -$ /usr/local/bin/gnucash - -It is a good idea to use absolute paths like this to insure you run -the proper gnucash executable. To run your OS pre-installed version of -gnucash, usually you can type: - -$ /usr/bin/gnucash - -Unless on some special systems, e.g. FreeBSD, where the OS installed -version sits in /usr/local/bin/, in which case you need OS-specific knowledge. - -In either case, you can easily switch between the various languages the -gnucash has available by setting the LANG env var before the call to the -executable. In sh-like shell environment this could be done by: - -$ LANG=pt_BR /usr/local/bin/gnucash - -(other shell like tcsh may behave differently, please to refer to related -manuals) - -============================================================================== -5) The glossary file - -Inside the po/glossary/ directory should be a "glossary" file for your -language. This file contains a bunch of commonly used terms found in gnucash. -It is recommended that you get this file translated first, and use it as a -guide when translating the real .po file. - -Go into the glossary directory and rebuild your language's glossary file: - -cd po/glossary/ -./txt-to-pot.sh gnc-glossary.txt > gnc-glossary.pot - -If your .po glossary file does not exist, use this gnc-glossary.pot file to -create it: - -cp gnc-glossary.pot XXXX.po - -If your .po glossary file does exist, use the msgmerge program to update it: - -/usr/bin/msgmerge -o XXXX.po XXXX.po gnc-glossary.pot - -Now, open your language's glossary file and translate it completely. - -============================================================================== -6) Initial processing of the translation file - -Before you begin actual translation work, you should update the gnucash.pot -file and use this to update your .po file. This process will insure that -you have the latest translatable strings. - -cd po/ -rm gnucash.pot -make gnucash.pot - -If your language file does not exist, use the gnucash.pot file as a template -for it: - -cp gnucash.pot XXXX.po - -If your language file does exist, update it using the msgmerge program: - -/usr/bin/msgmerge -o XXXX.po XXXX.po gnucash.pot - -The top of the .po file should be edited somewhat. The comments at the -top of the file should be changed to be current: - -# Messages in Deutsch f�r GnuCash -# Copyright (C) 1999 Free Software Foundation, Inc. -# Jan-Uwe Finck , 1999. - -Make sure that the header of your .po file contains this line: -"Plural-Forms: nplurals=2; plural=n != 1;\n" - -...and that you change the "Last-translator" string to your name. - -============================================================================== -7) Translating the .po files - -Finally. You are ready to do some translating! - -There are many translation editors, KBabel, for example, works well for -GnuCash. Some Editors are noted here: -https://translationproject.org/html/software.html - -If you are familiar with a text editor, e.g. vim or emacs, you can also -manually edit the .po files. Here is an example of translating some text -into German: - -Before: -#: messages-i18n.c:11 -msgid "" -"The GnuCash personal finance manager.\n" -"The GNU way to manage your money!" -msgstr "" - -After, the translation in the de.po file: - -#: messages-i18n.c:11 -msgid "" -"The GnuCash personal finance manager.\n" -"The GNU way to manage your money!" -msgstr "" -"GnuCash: Ihr pers�nlicher Finanzmanager.\n" -"Der GNU-Weg, ihr Geld zu verwalten !" - -You should read through every translation in the .po file at least once. -If you translate a string that has the phrase "#, fuzzy" in the comments -above it, remove the word fuzzy. A fuzzy translation means that the -computer guessed what the translation should be. If you use a translation -editor, the "fuzzy" translation are marked in different ways in different -translation editor, please refer to their documents for how to work with them. - -After you finish translating, you should not have any "#, fuzzy" strings left. - -For example: - -#: messages-i18n.c:35 -#, fuzzy, c-format -msgid "" -"There was an error writing the file\n" -" %s\n" -"\n" -"%s" -msgstr "" -"Es gab einen Fehler beim �ffnen der Datei. \n" -" %s." - -You need to correct the translated string and remove the 'fuzzy' keyword. -For example: - -#: messages-i18n.c:35 -#, c-format -msgid "" -"There was an error writing the file\n" -" %s\n" -"\n" -"%s" -msgstr "" -"Es gab einen Fehler beim �ffnen der Datei. \n" -" %s." - -Notice that the comment "c-format" was not removed. That is correct, you -should leave that. - -When you see the comment "c-format", it means that the format codes in the -translatable string are referring to C formatting codes. So, '%s' means text, -'%d' means an integer, etc... - -============================================================================== -8) Testing and submitting your translations - -You must check that your new translations are programmatically correct (ie: -that there are no unclosed quotes, etc). To do this, use the msgfmt program - -/usr/bin/msgfmt -c --statistics XXXX.po - -This will report any errors in your .po file if it finds them. - -If you want to see your translations within a running version of gnucash, -simply place your .po file in your SVN copy of the gnucash source code (which -you have previously installed) and from within the po/ directory type (you -may need to be root to do this): - -make install - -Now you can run gnucash with your new translations: - -$ LANG=XXXX /usr/local/bin/gnucash - -When you are happy with the new translation file, email a gzipped version -of it to the gnucash-devel mailing list. - -gzip XXXX.po -(email this file using your favorite mail client) - -Note that on this list we would kindly ask to send patches as attachments, not -within email text. - -If you know how to make a patch, a patch is also welcome. Patches are more -helpful if there are more than one people working on one translation file. - -============================================================================== -9) Problems - -If you see any "Gtk-CRITICAL" messages while running gnucash, it is probably -because you translated a string differently than how it exists in some other -gnome library. You must discover which string you translated differently, and -change the translation to exactly match that of the gnome libraries. - -To do this, you need to run gnucash under gdb: - -LANG=XXXX /usr/local/bin/gnucash-env gdb /usr/bin/guile - -Then, from within gdb, issue: -run -e main -s /usr/local/libexec/gnucash/overrides/gnucash --g-fatal-warnings - -Eventually, gnucash should crash (because of the --g-fatal-warnings -directive), when it does, issue from within gdb: - -backtrace - -You should see some output that looks like this: - -#0 0xffffe002 in ?? () -#1 0x42028a73 in abort () from /lib/tls/libc.so.6 -#2 0x4019d3d8 in g_logv () from /usr/lib/libglib-1.2.so.0 -#3 0x4019d414 in g_log () from /usr/lib/libglib-1.2.so.0 -#4 0x40500fdd in gtk_type_check_object_cast () from -/usr/lib/libgtk-1.2.so.0 -#5 0x407292e5 in gnc_mdi_tweak_menus (mc=0x825adb0) at gnc-mdi-utils.c:574 -#6 0x40729d13 in gnc_mdi_child_changed_cb (mdi=0x8266fd8, prev_child=0x0, - data=0x8265fd8) at gnc-mdi-utils.c:861 - -Notice position #5 which has "gnc_mdi_tweak_menus at -gnc-mdi-utils.c:574"? Open that source file and find line 574: - -573: widget = gnc_mdi_child_find_menu_item(mc, "_View/_Toolbar"); -574: gtk_signal_handler_block_by_data(GTK_OBJECT(widget), info); - -So, the problem is with the translation of "_View/_Toolbar". The "/" is a -menu separator, so you now know that the problem is with either the -translation of "_View" or "_Toolbar". By switching to an English gnucash -and looking through your .po file, you should be able to find the problem. -Change the offending translation to whatever you see in the gnucash app. -Remember that the translations must contain the proper underscores. - ------------- -To follow gnucash as it access files, -strace /usr/local/bin/gnucash - -============================================================================== -10) How to translate the GnuCash guide and/or help files - -This section describes the actions needed to translate the manual. - -First, you must *have* the gnucash-doc package installed: - -1) Checkout the documentation -cvs -z3 -d :pserver:cvs@cvs.gnucash.org:/home/cvs/cvsroot checkout \ - gnucash-docs - FIXME: change the cvs command to svn here -2) Create a new directory (if it doesn't already exist) in guide/ - where is something like es, en_GB, or pt_PT. -3) Copy the files from guide/C into this directory. -4) Recreate the image files in guide/C/figures so that they are - appropriate to the locale. -5) Edit all the xml files and translate for the locale. -6) Test that your xml file has no syntax errors - xmllint --valid --noout gnucash-guide.xml - -To translate the help files, repeat steps 2-5 but replace the "guide" -directory with "help". - -============================================================================== -11) How to translate the files containing the new account hierarchies - -This section describes the actions needed to translate the files -containing the new account hierarchies. - -1) Create a new directory accounts/. -2) Copy the acctchrt_* files from accounts/C to accounts/ -3) Do not change any xml tags. -For each file: -4) Change the gnc-act:title, gnc-act:short-description, and - gnc-act:long-description to contain appropriately translated text. - Do not add any newlines in the long description except at the end - and beginning of the string. -5) For each gnc:account in the file translate the act:name, and - act:description fields. Please do not translate any other fields. - -Note: You absolutely don't need to translate all of the files from -accounts/C. A subset of those are fine as well. Probably several of -them will not apply to your local legislative/economic system anyway. -For a really customized account hierarchy you might better create a -new account hierarchy file in GnuCash, and then, by hand-editing the -xml code, split it up into several files and cut&paste the appropriate -tags from the accounts/C/acctchrt_* files. - ----------------------------------------------------------------------- - -Thanks so very much to all the translators for their hard effort and -excellent work. diff --git a/doc/What_is_Euro_support b/doc/What_is_Euro_support deleted file mode 100644 index ce5855e581..0000000000 --- a/doc/What_is_Euro_support +++ /dev/null @@ -1,12 +0,0 @@ -The following changes occur in the Gnucash GUI when the "Euro support" -preference is enabled: - -1) In any register denominated in a national currency that been - replaced by the Euro (e.g. an account in DEM), the summarybar will - show totals in both the old currency and in EUR. - -2) There is an additional line labeled "EUR, total" in the account - tree summarybar. The totals in this line are a sum of all accounts - denominated in currencies that have been replaced by the Euro. - (E.G. The sum of all accounts in DEM, plus all accounts in FRF, - etc., etc.) diff --git a/doc/guile-hackers.txt b/doc/guile-hackers.txt deleted file mode 100644 index 5fafed157e..0000000000 --- a/doc/guile-hackers.txt +++ /dev/null @@ -1,96 +0,0 @@ --*-text-*- - -This file is intended to contain information for those interested in -working on the guile bits of GnuCash. - -I've recently added some GUI functions callable from scheme. This is -generally pretty straightforward, and you can look in the code to see -how I did it, but there are a few bits you have to be careful about. - -One of the main sources of useful information is "info guile-ref". -This contains the documentation for all the guile C-side functions -like SCM_CAR(), scm_append(), etc. that manipulate opaque SCM objects -from the guile side. - -Given that and a reasonable understanding of GTK/GNOME, you should be -able to follow what I've done. - -Introduction To Scheme and guile(rgmerk) --------------------------------- -Please skip this if you already know what Scheme is and why it's -so cool . . . - -Scheme is a dialect of LISP (List Programming), one of the earliest -programming languages. It makes so many things easy it's just not -funny. It can be a little confusing for people raised on C and Java, -but any time taken to learn it is made up for with easier-to-write, -easier-to-debug, more reusable, and more robust code. - -Guile is an implementation of standard Scheme which is easily -embeddable in C, making multi-language development relatively -straightforward. You can easily access data and procedures from -either end. Guile supports a superset of R4RS (the Scheme standard). -For initial experimentation, you can use Guile as an interactive Scheme -shell to play around with the system. - -FIXME: Starting gnucash as a guile shell. .. - -While the Guile documentation (in info format) explains -Guile specifics, it doesn't have much information about Scheme, -the language. The Internet Scheme Repository: - -https://www.cs.indiana.edu/scheme-repository/home.html [DEAD LINK] - -has quite a useful collection of information, including -FAQs, online copies of the Scheme standard (which is actually -quite readable and useful), and pointers to web tutorials -and other resources. - -Garbage collection: -------------------- - -One issue to keep in mind is that of garbage collection. You cannot -pass a scheme side item to the C side (through a SCM) and then store -that object off somewhere on the C side such that it lives longer than -all of it's guile side references. If you do, you're likely to get a -crash. The problem is that guile's garbage collector only knows to -save guile items that still have guile side pointers, or that are -found somewhere on the current C side stack. If you store a SCM item -off in a C data structure (say a callback pointer), and then return to -the guile side and drop the guile-side reference to the item, guile -may garbage collect it before it's used by the C side. - -For example, this psudeo-code is a problem: - - void gnc_some_function(SCM scm_thunk) { - gnc_set_push_button_callback(some_button, scm_thunk); - } - - (define (unsafe-guile-function) - (let ((my-callback (lambda () (display "Hello\n")))) - (gnc:some-function my-callback))) - -The problem here is that if you call unsafe-guile-function, it -registers the pointer to the anonymous lambda created in the let -construct with the button on the C-side and then returns. As soon as -it returns, guile has no more references to the anonymous lambda, and -it's not on the C stack, so guile thinks it's OK to garbage collect -the function even though the C side has a pointer to it and may still -use it. - -The moral of this story is that if you need to have the C side ferret -away a scheme item for later, you must also keep at least one -reference to that item on the guile side until the C side is finished -with it. - -You can protect an object using scm_gc_protect_object. When you're done -with it you can release it using scm_gc_unprotect_object. - -Guile Interrupts: ------------------ - -Another issue that I'm not quite sure of myself yet is that of -interrupts. Guile has the ability to protect certain segments of code -with SCM_DEFER_INTS/SCM_ALLOW_INTS, but at the moment I'm not sure -when this is required. If anyone gets the chance to check this out -before I do, then please edit this file and put your findings here. diff --git a/doc/projects.html b/doc/projects.html deleted file mode 100644 index 0528da4064..0000000000 --- a/doc/projects.html +++ /dev/null @@ -1,2845 +0,0 @@ - - - - - GnuCash Project Goals - - - - - - -
- GnuCash Personal Finance Manager
-
- -

GnuCash Project Goals

- -

- The people behind GnuCash - aim to create a world-class GPL'ed Open Source Personal - Financial Application for GNU/Linux and other Unix's. This page - reviews some of the technical issues and development status - surrounding this project. It is a kind of an FAQ for - developers and contributors, providing status, and suggesting - directions and technologies for deploying new features. If you - simply want to get a better idea of what GnuCash is and what it does, visit its - home page. The home page - contains screen shots, news items, and mailing list - archives. -

- -

- There are currently several different versions of GnuCash. - We've adopted the kernel numbering scheme: even minor release - numbers (1.4.x, 1.6.x) are considered to mark stable releases, - while odd numbers (1.5.x, 1.7.x) mark development releases. -

- -
    -
  • The current stable, production release is gnucash-1.6.0 and - is based on the Gnome / - GTK libraries. -
  • - -
  • The 1.7.x releases focus on adding new features and - improving existing functionality. -
  • -
- -

- The latest version is available only via CVS. Occasionally, - some of the more stable CVS versions are given a version number, - and packaged as a precompiled deb or RPM install package. Naive or - beginning users should probably stick to version gnucash-1.6.0. - More adventurous users can try one of the 1.7.x releases, However, - keep in mind that they are in a state of constant change and will - often be unstable. -

- -

This document is divided into several sections.

- -
    -
  1. Architectural Goals
  2. - -
  3. Requirements
  4. - -
  5. Sizings
  6. - -
  7. Features
  8. -
-
- - -

Architectural Goals

-
- There are some over-reaching design principles and philosophies - that we intend to maintain. Some of these concepts and terms - are introduced in this section. - -

Separation of GUI and Data

- First, we must maintain a clean separation between the data - structures and the GUI that manipulates them, along the lines - of the 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. - Thus, the Motif or Gnome GUI's are merely two possible - manipulators of the data; others, based on e.g. - web/cgi-bin, Qt/KDE, emacs, Java applets or Java servlets - ought to be possible.
  • - -
  • The View of the data is a subset or slice of the - data described by the Model. The View may consist of only the - transactions for the month of May, or only the account totals - for certain accounts. The View is used in part to generate - the reports and graphs, but it is also that which the - Controller interacts with. Views are generated by queries to - the data store.
  • -
- -

- 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 from - more mundane sources, such as file imports, or merger of data - from several users. Amongst these terms, the concept of a - global Model-View is dated, and somewhat inappropriate. Rather, - we need to be concerned about how data is represented in the - local address space of the GUI, how the GUI manipulates it, how - data 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 essentially represents a local data - cache of 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.

- -

The Financial Engine

- 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 provides basic accounting structures - These include:

- -
    -
  • Transactions, which consist of a set of 'splits' - or journal entries (JE's) whose values sum to zero. - The transaction includes several date fields, a description, - and a common-currency field, and a universal unique id - (uuid/guid). It also provides hooks to store arbitrary data - associated with the transaction (using a URL-based key-value tree). -
  • - -
  • Journal Entries (internally referred to as - 'splits') which an amount and the account on which it is drawn. - Splits also store reconcile status, dates, a memo field, - and also a key-value based hook for arbitrary data. -
  • - -
  • Accounts, which include a nme, a type, a description - field, and the type of commodity they store. Principlally, - the account consists of a list of journal entries.
  • - -
  • Chart of Accounts, which is a hierarchical tree of - accounts.
  • -
- - The Engine has a basic two-phase commit model, and a - query mechanism for finding the data needed for reports and - views. The goal of the two-phase commit and query model is - allow the creation of multi-user server based backends, such - as an SQL backend, and RPC client-server backend, or an - XML-based HTTP/web backend. This design seems to work - for the above-named backends. - -

The Engine currently handles only a basic set of data - sources:

- -
    -
  • It can import and merge in QIF's (actually, this function - has been moved into the GUI, and is no longer part of the - engine); -
  • - -
  • It can read and write its own XML byte stream; - This ability has been used to provide a multi-user - client-server demo (which is currently broken). -
  • - -
  • It can use a Postgres SQL database as a datastore, thereby - enabling multi-user and auditing functions. -
  • - -
  • It can talk, via RPC, to a gnucash server. (This code is - 'alpha' and incomplete/broken). -
  • - -
  • It can get stock quotes from the net (actually, this - function is provided by a separate module, the Finance::Quote - perl module.) -
  • -
- -

- However, since the Engine is meant to be the interface - between the GUI and the financial data, it is really intended - to be able to do much more. - In particular, it should be possible to create a peer-to-peer - network model, where gnucash peers can synchronize data between - themselves. The engine should also be expandable to handle other - sources of data, such as OFX/IFX, the Open Trading Protocol, or - the OMG CORBA General Ledger submission. 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. -

- -

Modularity, Extensibility and Customization

- -

The above structure should lead us to view GnuCash not so - much as a tightly integrated application, but rather as a loose - confederation of component objects, libraries and interfaces. - This has a number of advantages for both the deeloper and the - user. For the developer, it allows parts to evolve semi-independently - of one-another, and to be used in other, non-gnucash projects. - For the user, a good extensibility allows the use of - arrangements: a way of broadly - customizing the appearance and behaviour of gnucash, and then - allowing users to very easily share these customizations with - one another. Such arrangements might be collections of canned - reports, e.g. for business or home user. Or they might be - the menu contents: one menu arrangement is for gbeginners, another - for 'power users', a third for business owners. Th goal is that - broad areas should be not only customizable, but it should be - possible, even easy, to trade these customizations between users. -

-

- In order to facilitate the gluing together of these parts, as - well as simplify the questions of customizability, change and - rapid development, GnuCash makes use of the - - Scheme extension language (as implemented in the FSF - Guile - interpreter), to glue the pieces together. (Note that the - engine interface is also available with - Perl interfaces, thanks to a - SWIG - wrapper. -

- -

A Web Browser for Financial Data

- -

More and more financial data is moving onto the web. - People shop on-line. They pay bills on-line. There are - even some promising e-wallet systems (such as - WebFunds). For GnuCash - to be relevant in this on-line world, it must be able to interact - with these systems. There are several steps that can be taken - along this path. First, it must be possible to simply and - transparently import financial data off the web. Click on a QIF - file, mime-type "application/x-qif"? Gnucash sucks it in without - burping. But, in a more distant future, can GnuCash originate - transactions? It should be able to! -

-

- GnuCash can be and should be "The Sophisticated Financial Web Browser". - All GnuCash reports and the help system are HTML-based. In fact, - GnuCash has a built-in web browser that can view ordinary web sites. - Interactive gnucash components such as the bar and pie charts, or - the graphs and reports, can all be served up by a remote web server, - as well as locally through the GnuCash application. This allows - GnuCash to blur the line between web browser and financial application, - and offer the best of both worlds. -

-

- Why is this a good thing? One can always have a pure web-based - accounting solution (such as SQL-Ledger) that uses ordinary web - browsers to view the financial data. But there are problems: - dynamically-generated html and cgi-bins aren't as pretty or easy - to use, or as fast, responsive or sophisticated, as what you can - do with a custom client. That is, GnuCash can be more interactive, - easier to user, slicker and more professional looking in style - and presentation than a plain-old dynamic website. Financial - ASP's simply cannot currently offer the kind of utility, flexibility, - responsiveness and integration that GnuCash can offer. -

-

- In theory, the 'Java revolution' was supposed to provide this - function, with downloadable Java applets providing the 'fancier- - than-plain-html' interface. But a Java applet that is this - sophisticated would also be large and slow to download: - it offers no inherent advantages over native code. Another - problem with Java is the inherent propreitary fragmentation: - no two Java applets are alike: every site has their own; there - is no standardization. -

-

- In order to solve the 'no gui standardization between websites' - problem, there are a number of businesses that have arisen to - provide "financial aggregation". You sign up with these sites, - and let them get all of your credit-card, bank and investment info, - and they can provide a unified interface for your bank statements, - with graphs and reports (all for a monthly fee). The existence of - these services highlights a problem: the inability to aggregate - the same data on the users desktop, in a simple, coherent fashion. - Let us posit that GnuCash, with the right on-line interfaces, - would be a natural for this. For the paranoid, - this has the added advantage that no one business has access to - all of your financial records. -

- -

- To put it another way, GnuCash can provide a centralized, trusted - store for financial data that no other application can provide. - The convenience - factor: if you have trading accounts at e*trade and charles schwab, - then GnuCash can be the central place where you can oversee - all of your investments. The trust factor: - maybe you can trust your web bank. Maybe you can trust your web - stock account. But can you trust a single web entity with *all* - of your financial data? Someone who won't treat you as 'just - another consumer' and sell your 'consumer profile' to anyone who - cares to stalk (ahem, target) your financial activity (ahem, - purchasing) patterns? Didn't think so. Of course, you - *could* use some proprietary financial software. Assuming, of course, - that you trust it not to have any built-in covert channels: - nothing that might send back the make and model of your CPU and - the last ten transactions 'home to mommy' for 'diagnostic purposes'. - Because open source software, such as GnuCash, can be audited - it can be trusted in ways that no proprietary software can be. - In an increasingly net-connected world, the ability to build - trust through audits will be increasingly important. -

- -

Looking Into the Future

- Things like support for OFX, and small-business features are - hopefully in the near term future of gnucash. Lets take a look - at some more far-out possibilities. -

-
-
E-Wallet
-
An e-wallet, just like a real wallet, stores cash. You - can use that cash to pay friends or businesses. Just - like a real wallet, an e-wallet should not charge you - monthly fees. It should provide you with some measure - of anonymity and privacy. An e-wallet should also do - something no ordinary wallet can do: show you a monthly - report of expenditures. GnuCash should get e-wallet - features.
- -
Authentication, Authorization and Access Control
-
How does an on-line merchant know that you are who you say - you are? How can you use GnuCash to authorize a bill payment? - Sooner or later, smart-cards will provide the sort of - authentication and access control that is only groped for - with PGP/GPG, keyrings, x.509 certificates, and Microsoft - Passport/Hailstorm. Of all the electronic things in the - electronic world where access control and authentication - are important, real money is the most so. -
- -
Bill Presentment, Bill Pay
-
These magic keywords just mean that a merchant wants to - send you a bill, and wants you to go to their website to - pay that bill (they want your eyeballs). Of course, for - the user, it would be more convenient to have the bill - show up on the desktop, inside of gnucash, and get authenticated - and paid out from the desktop (by gnucash), as you would - do with all of your other bills. -
- -
- - - -

Requirements

-
- Lets take a look at who the current and potential future users - of GnuCash are, and how they might use it. The classes: - -
    -
  • Basic Household Accounting/Budgeting
  • -
  • Personal Stock Portfolio Management
  • -
  • Personal On-line Trading (Day-Trading)
  • -
  • On-line shopping and bill-pay
  • -
  • Small Business Users
  • -
- These different applications may use some of the same - financial terminology, and hopefully might share a fair - bit of code, but have quite different goals and requirements. - -

Basic Household Accounting and Budgeting

- -

Important properties of a personal finance system - include:

- -
    -
  • Approachable and usable by occasional users - who are not knowledgeable about accounting.
  • - -
  • Ease of use and simplicity is critical.
  • - -
  • A reasonable selection of reports, graphs, charts, and - tools for personal finance, such as mortgage - calculations.
  • - -
  • Budgeting support needs to be targeted at naive - users.
  • - -
  • Interfaces to on-line banking, shopping, stock - systems. Bank and credit-card statements should - arrive 'automatically' and always be up-to-date.
  • -
- -

Personal Portfolio Management

- -
    -
  • Support for management of stock portfolios that may - involve considerable sophistication, since individuals - commonly have retirement plans that hold mutual funds, - stocks, options, bonds, and the like.
  • -
  • Reporting infrastructure needs to simplify handling of - tax issues (long-term vs. short-term capital gains/losses, - cost-basis FIFO accounting, simplfied cost-basis - spinoff/merger handling). Need on-line updates of - prices, simple portfolio overview, ability to link - to websites for additional research. -
  • Integration with on-line trading systems. This could - save time typing. -
  • Basic Audit features. There's a problem with blindly - allowing on-line data (prices, transactions) to enter - GnuCash. It may not be clear where it came from, - and even if the source is believed to be 'reputable', - there still may be factual errors in the data. Thus, - there must be a way of audting newly-arrived (or even old) - on-line data, and mark it as 'reconciled', i.e. - manually reviewed and checked for accuracy. That is, - incoming on-line data must be auditable, and audit - trails should mark the history of on-line data import. -
- -

Small Business Needs

- -
    -
  • With a business system, it is likely that there will be - users who use it eight hours a day, which puts the emphasis - on efficiency of user interface rather than on its - approachability to naive users.
  • - -
  • Business systems require network support, and the ability - to support multiple simultaneous users.
  • - -
  • Some business users may want access to the system from an - MS Windows 95/98/NT box. For these folks, a web-based - interface could be just handy. Web interfaces are also nice - a for ASP type deployment.
  • - -
  • - Small businesses do not often have sophisticated investment - portfolios; they instead need support for additional - sophistication in such areas as: - -
      -
    • Customer and Vendor Lists; Invoicing
    • - -
    • Payroll (Batch processed and individual)
    • - -
    • Inventory Control & Asset Management
    • -
    • Amortization Schedules, Depreciation
    • - -
    • Shipping and Receiving
    • - -
    • Accounts Receivable, Accounts Payable (A/R, A/P)
    • -
    • Credit Card Processing
    • - -
    -
  • - -
  • Support for calculations associated with accrual - accounting.
  • - -
  • Ambitions for the future might include interfaces to - online shopping carts, credit card clearing interfaces, and - ERP systems.
  • -
- -

Reconciling Those Needs

- -

A seemingly contradictory factor is that the kinds of - sophistication that are required vary considerably. - Consider:

- -
    -
  • A home user does not generally require most of the - sophistication of accrual accounting that is - required by business enterprises. Thus, home users don't need - much of the sophistication of an Accounts Receivable - or Payable system, or the bizarre depreciation - policies that crop up in Asset Management systems.
    -
    -
  • - -
  • - On the other hand, home users are in increasing need of - surprisingly sophisticated financial tools for managing - stock portfolios, including: - -
      -
    • Mutual funds
    • - -
    • Retirement savings plans, with such identifiers as - 401(k), IRA, Roth IRA, RRSP, or Insurance Annuities
    • - -
    • Corporate stock purchase plans
    • - -
    • Corporate option plans
    • -
    -
  • -
- Another set of contradictory requirements has to do with the - back-end, and interfacing to other systems: - -
    -
  • Home users need a simple-to-install, simple-to-maintain - system. This essentially rules out the use of SQL for the - storage medium/back-end for home users. (That is, the current - state of the art for SQL on Linux does not offer any simple, - fool-proof management for data).
  • - -
  • By contrast, non-SQL systems for business use are almost - unimaginable. SQL provides a high degree of data integrity - and storage robustness, and also simplifies tremendously the - import and export of data. Powerful SQL tools exist that can - work magic in the hands of a good DB admin.
  • -
- -

It may be that these will require completely - different systems, and that GnuCash cannot be "all things to - all people." This remains to be seen.

-
- - - -

Sizings

-
- This section attempts to guess how hard it would be to - implement certain features. - -

Personal Financial Application

- Below are listed the technical work items needed to implement - the features that home users might hope to have. They are - listed in approximate order of priority. - -

The right hand column shows a sizing guesstimate. pm == - person-months. These sizings are meant to show 'effort needed - to complete', rather than 'total effort required'. Thus, - half-finished items have smaller sizings.

- -
    -
  • Done The work item is essentially completed
  • -
  • Small 0 to 4 pm
  • - -
  • Medium 3 to 12 pm
  • - -
  • Large More than 12 pm
  • -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FeatureSizingResponsible
InternationalizationDone-
ReportsMediumStimming/Gribble
GraphsMediumGuppi/Gribble
Transaction QuerySmallLinas/LewisMoss
Simplified LedgerDone-
Themes, Icons, GlitzSmallVarious
Miscellaneous Small TasksDoneVarious
Alerts, Recurring & Scheduled TransactionsMedium?
BudgetingMediumDave
Classes/'Action' FieldSmall?
Books, Accounting PeriodsSmallLinas
Check PrintingSmallGrib
WizardsSmallDave, Bill-qif
ArrangementsSmall?
User Preferences/Session Mgmt.Done?
Quicken(TM) QIF ImportSmallGribble
IIF ImportSmall?
IIF ExportSmallGrib
Multiple CurrenciesMediumRethink Requirements-Linas
Architecture ReviewSmallRLB, Dave
Automated Test SuiteMedium?
Stock Quotes, Price QuotesSmall?
InstallSmall ??
Forced Double EntrySmall?
401K etc.Small?
Searchable DocumentationDonegrib
Reconcile AuditingSmall?
Annotate with Investment NewsSmall?
Loan and Mortgage CalculatorsSmallDave
Overdraft AlertsSmall?
Technical Stock AnalysisMedium?
Depreciation, Sinking FundsMedium?
OFX, Online Banking, Trading, - Bill-payLargeDave
Tab-delimited ASCII exportSmall?
Tax PreparationLarge?
Sync with Palm Pilot - organizersMedium?
Emergency Records OrganizerSmall?
- -

Small Business Features

- Features that small/medium businesses expect. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FeatureSizingResponsible
-
Enriched Engine, Financial - ObjectsLarge?
SQL I/ODoneLinas
Multi-User SupportSmallLinas
Address BookSmall?
A/R, A/P Accounts Payable, - ReceivableMedium?
PayrollMedium?
InvoicingMedium?
Job CostingMedium?
Expense AccountsLarge?
-
- - - -

Features and Functions

-
- This section reviews the current status of various features. - Some of these are 'in process', some are 'almost done', some - are 'completely done'. This section thus provides status on - both where we've been, and where we're going. - -
- -
Internationalization
- -
- All menus, markup and help-text should be - internationalized, so that GnuCash may be usable in any - country. This would include the printing of currency values - in the local country conventions. - -

Current status: - Essentially Done (?) -

    -
  • All GUI messages currently use GNU gettext() - for the message catalogs. Translations exist for English, - British, French, Swedish, German, Japanese.
  • - -
  • Help pages available only in English and French.
  • - -
  • Monetary and string handling done through glibc. The - latest glibc (2.2.3) is needed to get the correct - functions.
  • - -
  • Yannick Le Ny <y-le-ny@ifrance.com> traduction - en francais
  • - -
  • Most GUI input elements use the gtk text widget, and - thus use the XIM input method in Asian locales. This - allows e.g. Kanji, Katakana support. However, the - register does not use XIM, and thus doesn't - currently support the Asian languages. This needs - fixing. (This may be done already??)
  • -
-

-
- -
Reports
- -
- A variety of reports, including Net Worth, Balance Sheets, - and Profit and Loss statements. These should be printable: - that is, exportable as HTML as well as print-ready - postscript. These should be easy to customize. Ideally, - even novice users should be able to create custom reports. - -

The Report Generator should be a separate but "dockable" - subsystem of the whole. That is, it should be possible to - run the report generator in a stand-alone, read-only - fashion without having to start up the main application. It - should be possible to run reports nightly from a - command-line and/or cron job. - The GUI should remember what reports were run last time, and - these should be re-run/redisplayed whenever the report generator - is used. -

- -

One difficult aspect of reporting is designing a - configurable interface, so that people can build custom - reports. The New - Reporting Infrastructure is seeking to build this up - using Guile. Note there are several flavours of customization: -

    -
  • Allow user to specify a custom logo (e.g. company - logo/address) on every page - (generically, having a header and footer for every page). -
  • Allowing user to modify report title/subtitle on the fly - (and possibly add notes at the top or bottom of the report, - e.g. to explain line items). -
  • Allow user to use the transaction query - interface to pick the set of transactions that will make up - the report. -
  • Memorize the report that was asked for, give that report - a name, and in the future, allow that same exact report - to be re-run. Allow user to edit this report properties - at a later date. Note that the basic idea is similar to - that of memorized queries, discussed below. -
- Note that the customization info should be stored in a - Arrangements File (see below). -

- -

Generated reports should be exportable to other gnome - systems (probably using bonobo). - Reports should also be exportable to - the Gnumeric spreadsheet (probably by writing out gnumeric - file format). Export of CSV (comma separated values) and - tab-delimited formats (for other spreadsheet import) would - be good. Tables & etc. should be exportable to AbiWord, - StarOffice, other word processors. (formats: docbook sgml? - would then make convert to richtext, TeX easy.) - Export should be as wysiwyg as possible. -

- -

Must be possible to e-mail reports (for example, - invoices) to users. Suggest an evolution addressbok - /mailer bonobo plugin. -

- -

- Relationship to budgeting not clear ... -

- -

Stock portfolio tools should include a Cost Averaging - report, Market Index report, Stock Option values, - Estimation of capital gains tax liabilities.

- -

Reports should be printable to printer (postscript/ - Adobe Acrobat). - -

- Status: - -

    -
  • A general reporting infrastructure was implemented in - Perl, in the form of html-embedded perl (ePerl). However, - this reporting mechanism was abandoned in part because - ongoing build and install problems related to ePerl and - swig. Also, since ePerl didn't participate in the - interpreter even loop, the report generator had to run - as a separate process, reading data via pipes. This was - uglier than some folks liked.
  • - -
  • A general reporting infrastructure has been implemented in Scheme. - Currently, there are a variety of reports for Profit/Loss, - Balance Sheet, and portfolio valuation; none are - particularly sophisticated.
  • - -
  • Done: Reports are displayed with the gtk-html widget. - This widget provides postscript printing and Acrobat - output. -
  • - -
  • There is currently no way (no longer any way??) to - generate reports from the command line ...
  • - -
  • While many reports have been implemented, there is - no master list of what we should have. We should have .... -
  • - -
  • The following technologies were rejected/unused mostly - because they were too complex, didn't hang together technologies: - SGML and Extensible - Markup Language - XML. In the long run, these are - preferable to HTML, since DSSSL tools such as Jade (James DSSSL - Engine) can be used to convert to RTF, Postscript, etc. - Add to this the consideration that XML is the basis for the - Document Object Model, - which is being integrated into many web-based applications, - and we can see that XML is an increasingly significant - format as we look to the future. -
  • - -
-

-
- -
Graphs
- -
-

Provide support for graphs, charts, etc., such as: - Asset allocation pie chart, portfolio value vs. cost, - ROI. Graphs should be printable to printer. - Graph generation should be fully integrated with reporting, - both for data collection via queries, and for displayed - output. -

-

- Status: -

    -
  • Different graphing packages were evaluated, - GUPPI. - Guppi was chosen. Considered & rejected were - plotutils, gnumeric graphing code (Miguel says - they'll replace gnumeric code with guppi.) - Miguel's/Gnumeric requirements were: - interactive plot editing -- each segment attributes - totally settable/controllable -- drag/move callbacks - when segments are click-dragged. -
  • -
  • Basic pie charts and bar charts are used in GnuCash - reports. There are problems: dates along the bottom - of a bar-chart are not well-spaced/autoscaled. - The over look is a bit klunky. -
-

-
- -
Transaction Query
- -
- Allow user to build (complex) queries to locate a - set of transactions that match some criteria: e.g. - a date range, or a matching payee, description, amount, - etc. Once a user has created a complex query, it - must be possible to memorize it (i.e. give it a name, - and store it for future reuse). - -

- Status:

-
    -
  • The query engine has been implemented (as of 1.4.0, - grib) -
  • -
  • The GUI for creating queries has been implemented - (as of 1.4.0, grib) -
  • -
  • The queries are handled by the Postgres SQL backend. - (as of 1.6.0, linas) -
  • -
  • Queries can be turned into XML and back, for file - storage or network transmission. This used to work - for XML version 1 but was broken in version 2. -
  • -
  • The ability to memorize queries has not - been implemented and awaits further action (needed - for reports, above). -
  • -
-
- -
Simplified Ledger
- -
- Ledger should look clean, work easily. - -

- Status:

- Essentially done. -
    -
  • Multi-line ledger confusion fixed by using correct - left-right journal display style. - Fixed in 1.6.0, Peticolas, Champaigne. -
  • -
  • - Stocks and Mutual funds are handled by placing them each in - their own account. Each account can be viewed individually. - If all of the stock accounts are children of a master - trading account, then the trading account can be viewed and - modified in a General Ledger window. - Layout problems fixed in 1.6.0. -
  • -
  • - How to most simply allow the user to enter loads and fees? - Through multi-line transactions. Seems to work well in - 1.6.0. -
  • -
-
- -
Themes, Icons, Glitz
- -
- A variety of finer touches need work: - -
    -
  • -

    Hint-of-the-Day. A collection of a some - 50-100 hints-of-the-day: short (2-4 sentence) - hints/tips on how to use gnucash. Every time the user - starts gnucash, an new hint shows up ... - Status: Hint infrastructure complete (RGMerkel, - version 1.4.0). Need to add - hints (only a dozen are currently available). -

    -
  • - -
  • -

    Themes. Some theme testing required. The - effect of themes on the register window needs to be - reviewed. Some themes look flaky in the main account - window, might be a gtk bug ???

    -
  • - - -
  • -

    Household Assets/House Inventory - Add wizard to walk user through a set of questions - about household inventory & help user value them. - (do you own a house? appraised value? mortgage? - do you own jewelry? appraised value? etc.) - In particular, show how appreciation - and depreciation should be treated. - See the section Arrangements for - a discussion of the customization issues. -

    -
  • - -
  • -

    More account types Introduce more - 'fundamental' account types: (amortized) Loan, - Mortgage, ESOP, House, Line of Credit.

    -
  • - -
  • -

    Register View Allow user to view only - non-reconciled transactions ...

    -
  • - -
  • -

    Configurable main-window Status Bar Bottom of - main window currently shows total asset, and total - income-expense (profits). Make this configurable, so - that user can show arbitrary sums of arbitrary - accounts. - This is mostly solved by having the MDI interface - have reports, and the use of multi-paning. But the - default display for gnucash should be changed to - show a very small (1-4 line) networth and P&L report, - and maybe a cash-flow report. - See the section Arrangements for - a discussion of the customization issues. -

    -
  • - -
  • -

    Dockable Registers/ aka "Browser Mode". - Currently, when each new register opens, it opens in a - new window. An alternate style would be to 'dock' the - register window in a bigger frame, and just have - 'backward/forward' buttons to navigate through - different registers (the way that a browser navigates - web pages.) This of course would be a user - preference. Possibility for doing this exists with MDI. - Maybe we shouldn't bother doing this ??

    -
  • - -
  • -

    Context sensitive help. When users - create new accounts, need to suggest stuff if the user - typed something unexpected ... (e.g. - non-alphanumeric input) ...

    -
  • - -
  • -

    Folder Tabs Currently, Income/Expense - accounts can be shown or hidden by selecting from a - menu. It would be nice to be able to examine different - account types (Asset, Liability, Income, Expense, - Payables, Receivables, Inventory) by selecting a tab - folder. This is maybe a bs. request that shouldn't - be implemented.

    -
  • - -
- - The following have been completed, but possibly not fully - documented: -
    -
  • -

    Pop-up Calendar All date fields should pop up - a calendar widget; selected date should get entered in - field. (peticolas, version 1.4 ??)

    -
  • - -
  • -

    Pop-up Calculator All price/amount fields - should pop up a calculator widget; output of calculator - gets entered in field. Instead of a popup calculator, - this was implemented by allowing all fields to take - algebraic expressions (plus, minus, times, divide). - (rlb ?? version 1.6.0) -

    -
  • - -
  • -

    Button Bar A user-configurable button-bar. - Solved in version 1.6.0 with tabs, not buttons, via - gnome MDI (gribble, version 1.6.0) - See also the section Arrangements - for a discussion of the customization issues. -

    -
  • -
  • -

    Currency Exchange Table - Keep a currency exchange-rate table. This is now - automatically handled via the 'price database' - (rlbrowning, version 1.6.0) - (the finance::quote perl module handles currency - exchange rate fetches) -

    -
  • - -
  • -

    Currency Selection Pop-up Currency field - should get replaced by menu of long-hand currency - names, three-letter ISO 4217 abbreviations, and symbols. - User should be able to hand-enter non-IS4217 currencies. - Status: - Done in 1.4.0 -

    -

    -
  • - -
  • -

    Cut-n-paste Cut-n-paste of whole transactions - in the register window... Status: Done. (by Dave - Peticolas, in 1.4.0)

    -
  • - -
  • -

    Auto-completion Quick-fill should also - auto-complete amount, memo fields. - Status: - Done in 1.4.0, Dave Peticolas -

    -
  • - -
  • -

    Autoincrement Check numbers should - auto-increment. Hit + key in check number field - (same keystroke as in quicken). - Status: - Done in 1.4.0, Dave Peticolas -

    -
  • - -
  • -

    Navigation Menu navigation using the keyboard - should be possible. Hit the Alt-F to get file menu, - hit Alt-FS to save. - - Similarly, tab-key navigation in the register - should be possible. - Status: - Done (in 1.3.x ?, Dave & all, partly inherited via gtk - widget set.). -

    -
  • - -
  • -

    Fly-Over Help When the user pauses the mouse - over a button, "fly-over" pop-up help windows should - appear. - Status: - Done (in 1.3.x, inherited via gnome/gtk widget set). -

    -
  • - -
  • -

    Grayed-out Form Help Create grayed out - entries in the ledger, titled "Memo", "Description", - etc, helping users understand what should be typed into - each field. Status: Done (by Dave?), as of version - 1.3.2(?)

    -
  • - -
  • -

    Key Bindings for Editing Text Fields. The input fields - use the gtk text widget, which provides key bindings that - are similar to the Netscape/emacs key bindings. - This allows e.g. emacs-style ctrl-a, - ctrl-k to do the right thing. - Status: - Done (in 1.3.x, inherited via - gnome/gtk text widget).

    -
  • -
-
- -
Miscellaneous Small Projects
- -
- A variety of small internal projects. All have been - completed as of 1.6.0 - -
    -
  • -

    File Format. Rework to use text file format. Will be - XML-based. - Status: RLB, LewisMoss. Version 1.6.0 Done. -

    -
  • -
  • -

    Reconcile Window. - Auto-pay credit card when reconciling credit card - accounts (Done, Dave). - Auto-add bank fee when reconciling bank accounts. - (Not done?, Dave). -

    -
  • -
  • -

    Print Register Window. Output register window to - printer. - Status: Done: there is a register report which - is printable, there is a button on register. Done in 1.6.0 -

    -
  • -
  • -

    # of decimal places in prices (penny stock). - Part of the big numeric overhaul. Done, Gribble, others, - version 1.6.0 -

    -
  • -
  • -

    gtkhtml. Move to gtkhtml from gtk-xmhtml. - Done in 1.5, Grib. -

    -
  • -
  • -

    print. Print reports, etc. Done in 1.5, Grib. - This came 'for free' with gtkhtml. -

    -
  • -
  • -

    key-val pairs. Add generic key-slot mechanism - into accounts, transactions, journal-entries. Done in - 1.5.0, Grib. -

    -
  • -
  • -

    guid in fileio. No longer relevant with new file - format. Dave. -

    -
  • -
-
- - -
Books, Accounting Periods
- -
- Ability to close the book at end of the fiscal year. This - consists of several steps: - -
    -
  • Permanently lock some transactions as non-editable. - This should be straight-forward by using the - reconciled field to indicate a locked - value, and not allowing the GUI to edit locked - records. -
  • -
  • Transfer the Income minus Expense for the book period - to an equity account, so that each new period starts with - zero income/expense balances. -
  • -
  • A mechanism to purge really old transactions from the - database. -
  • -
  • Extensions to querying and reporting infrastructure ... - The query changes might be painful ... -
  • -
  • - A user should be allowed to 'delete' an account - only if it has no transactions in the currently - open book. - Of course, it's not deleted from the old books. - From this last, we conclude that every chart of - accounts should have a beginning and ending date (that - match the book period), and the file format needs to - support multiple charts ... -
  • -
  • Memorized Transactions ... Currently, transaction - auto-completion works by auto-completing with the last - 'similar' transaction. This ability will get trashed - when books for the old year get closed, because there - won't be 'similar' transactions. -
  • -
- -

Status: -

    -
  • A mini-design Doc exists in src/engine/extensions.txt - A far more extensive, four-part proposal is ??? somewhere - in the mailing list archives (by Linas Vepstas, circa Feb-May - 2001) -
  • -
-

-
- -
Check Printing
- -
- Create a check-printing ability. Include MICR (Magnetic Ink, - Computer Readable) check printing abilities. - - Yahoo Check Printing provides a list of vendors & printers. -

- Print vendor/client/payee address on the check (so that check - can be mailed with window envelopes.) This requires gnucash - to integrate with addressbook. - -

Status: -

    -
  • More check formats need to be supported. -
  • Done, except for address part, in version 1.4.0. - (gribble) -
  • -
  • Need a sample check/sample transaction to print out - so that user can test printer. -
  • MICR Fonts are available & brought to mailing list. -
-

- -
- -
Wizards
- -
- Create a set of wizards to walk through some of the more - complex tasks, such as new user setup, account creation, - QIF import, budget prep, obscure functional corners. -

- Wizards are great, but lets not throw away the denser GUI's. - For 8-hour-a-day users, the wizards can be irritating. - A single, dense screen can be more efficient and nicer. - So when adding wizards, don't dump GUI's !! (instead, - make them 'advanced' features). - -

- Status: - The following not done: -

    -
  • Account Creation - The account creation panel is somewhat busy. Maybe - could use a wizard? -
  • -
  • Budget Setup - Setting up a budget. -
  • -
  • Obscure Corners - Various obscure corners of the application may be - non-intuitive, and need wizard help. e.g. stock splits? - e.g. using foreign currency on a business trip? -
  • -
- Completed: -
    -
  • - New User Setup Provide - a default Chart of Accounts, which will mostly consist - of a default set of 'Categories' (Income/Expense - Accounts). These are categories such as "Automobile - Expense", "Bank Interest Income", and "Employment - Income". The user should be able to select a default - set of accounts, and have those created - automatically. Profiles: home-owner vs. renter - non-for-profit (some non-profits are very very simple, - just a club). Done in version 1.6.0, C. Champagne, - J LewisMoss -
  • -
  • QIF Import - QIF Import is just complicated enough that it needs - a wizard walk-through of the steps. Grib, - version 1.6.0, Done. -
  • -
-

- - -
Arrangements
- -
- An "application arrangement" is the defining look-n-feel of an application. - The idea is similar to, but not the same as 'skins'/'themes'. Its similar - to, but not the same as allowing a user to set 'preferences'. Its similar - to, but not the same as, allowing a user to generate customized financial - reports. In the context of GnuCash, a 'arrangement' should be a file - (that can be traded by users, uploaded and shared) that controls important - aspects of how the application is configured. -

- In particular, the GnuCash Arrangement should include the following: -

    -
  • A list of sample/initial accounts. These might be tailored for a - home user (groceries, gas, electric), an apartment dweller - (rent, laundry), or different kinds of business users. - Because these sample accounts appear in the Arrangement file, - it becomes easy to create & distribute customized arrangements. -
  • A list of pre-defined reports and graphs. The kind that you'd find - for a home user might be different than for a person managing a stock - portfolio, which is in turn different from what a business might need. - The Arrangement File should include install-specific customizations, such - as the report headers, footers, etc. -
  • Hint of the day. The types of 'hint of the day' would be different - for new users, than it would be for advanced users. Thus, different - arrangements would have different catalogues of 'hint of the day'. -
  • Menu Contents & Navigation. New users might be presented with a simple set - of menu contents. 'Power Users' might be presented with deep, nested - sets of menus, with oodles of features. -
  • Register Layout. The layout of the register might be customized for - different countries: e.g. in Germany, a different type of electronic - banking seems to require the display of account numbers in separate - columns in the register. -
- A good arrangement infrastructure will not only allow gnucash to be configured - for different application domains, but also will allow users to fine-tune - their own preferred arrangement. It can also simplify the code base: - instead of having two products, a home-user application, and a small-business - application, each with a different code base and #defines and what not, instead, - we have one code base, and different arrangements for each. - However, most importantly, the arrangements should be easy to share between users. - They should be such that users are encouraged to trade and use arrangements, - and to create new ones that suit their needs. -

-

- The idea for arrangements was inspired by - Adam Curry's commentary on - - radio formats and Napster. -

-

- Status: - Not started. Individually, all these cusomizable things exist - here and there in gnucash, but they cannot be shared between - users: a gnucash user cannot mail her favorite 'arrangement' - to her friend. -

- - -
User Preferences, Session Management
- -
- A dialog system and file format for manipulating user - preferences. Preferences include things like default - currency, register layout and colors, etc. - -

What are some of the competitive preference-handling - technologies? Lets get some URL's here ... Following the - Unix tradition, there is no global preferences registry. - Note that session management and preferences are related - things ... sort-of. Right now, we don't treat them as such - ...

- -

Status:

- Done, more or less, version 1.6.0. - -
    -
  • Works real good; lots of preferences in the GUI. - Implemented in home-grown scheme. (version 1.4.0, - rlb)
  • - -
  • These are saved in the '.gnucash/config.auto' file. - The current file format is raw scheme code, rather - delicate to tweak by hand ...
  • - -
  • Session management mostly works, but doesn't use the - sawmill/gnome/X ICCCM system. GnuCash remembers MDI - based reports, restart reopens in same state. Sizes - and shapes and positions are remembered. - Done in version 1.6.0 -
  • - -
  • Independently of session management, the register - windows should remember how big they were last time they - were popped up, and they should pop up the same size, again. - The app should remember these sizes from invocation to - invocation. Done in version 1.6.0, but seems a bit buggy. -
  • - -
-
-
-
- -
Architecture Review
-
- The application is wired together partly with C, partly - with Scheme. The architecture of the wiring and how scheme - is fit in needs to be reviewed, with a general overview - created so that additional extensions may be added in a - straightforward manner. - -

The overall architecture is envisioned thus: - All code, including the transaction engine, the file I/O - routines, the menus, and the ledger, will be abstracted - into compact modules that can function independently of - each other. At the highest level, there will be a - infrastructure with extension language interfaces that will - "wire together" the various modules.

- -

Such "wiring together" will consist of a dispatch - infrastructure that will allow arbitrary menu entries to be - hooked to arbitrary modules. The configuration for menu - entries, and their associated callbacks, will be specified - in an extension-language configuration file. At the final - stages, it is highly desirable to be able to, in - some manner, import new modules without requiring - that the application itself be recompiled and relinked.

- -

Status:

- -
    -
  • - Scheme/Guile is the central extension language. Guile - interfaces auto-generated using g-wrap. -
  • -
  • - Optional interfaces to the data engine (for, e.g. - perl) can be generated using - - SWIG. -
  • -
  • - Dave to collate & edit architecture documents. - RLB to provide diagrams. -
  • -
-
-
-
- -
Recurring Transactions, Calendar Alerts, - Scheduled Transactions
- -
- (1)Add support for automatic, recurring transactions, - e.g. mortgage payments, fixed-interest bonds, regular - salary checks, regular gas/phone/electric bills, - etc. - -

(2) Recurring bills, salary income, etc. are simpler to - handle, since they don't have interest rates, balloons, - etc. They do/will have multiple splits (e.g. - payroll gross, fica, futa, income taxes, payroll net).

- -

(3)Provide list of upcoming & recently paid - bills/scheduled payments/scheduled deposits for the next - 1,2,3,6,12 months. Historical view shows payments crossed - out (!?)

- -

(4)Loans & mortgages are one of the more complicated - recurring transactions. Typically, there might be a years - worth of smaller payments, then a long string of larger - payments, followed by a balloon. -

- -

(5)Provide a calendar-display of upcoming & past - scheduled payments. Clicking on a calendar day should raise - up editable list of transactions. Calendaring should - include generic red-lettering of important dates: taxes - due, insurance renewal dates, domain registration renewal - dates, ISP contract expiration date :-). These may or may - not be associated with transactions. Memo's should be - possible. Pop-ups should happen when dates get close. - Technology: best bet is the Ximian Evolution Calendar - component.

- -

Design Notes: Most alerts & data storage - should be driven out of the engine. This will enable - multi-user, distributed use. Note: alerts should be - piggy-backed on a general alert infrastructure within the - engine, viz, registered callbacks when balances change, so - that windows can be redrawn. Not clear on if/how calendar - events might be server-ified. (On the other hand, a good - calendar should be server-ified, and thus viewable by - secretaries, co-workers, etc.)

- -

More complex financial instruments may need a - guile-based extension mechanism to compute values .... - simple interest/mortgage calculators should be done in C in - the engine ... (e.g. depreciation schedules ... - under us tax law, a variety of different schedules are - allowed ... )

- -

May need interfaces to email for emailed alerts.

- -

Plot forecast graphs based on scheduled income & - payments ... is this tied into budgeting ????

- -

Status:

- -
    -
  • Need to create design doc, need to implement engine - pieces, need to hunt down gnome-calendaring bonobo.
  • -
  • Preliminary work started. -
-
-
-
- -
Budgeting
- -
- Ability to create a budget (i.e. - estimates of - future expenditures). Reconcile actual expenditures against - future expenditures. Create simple, step-by-step 'financial - plan' budgeting GUI's: - -
    -
  • Home purchase planner
  • - -
  • Retirement planner
  • - -
  • College tuition planner
  • - -
  • Debt reduction planner
  • - -
  • Scrimp-n-Save planner
  • - -
  • Special purchase planner (big ticket items)
  • -
- Create a summary budget/track-record budget report that a - professional financial planner/advisor could use. - -

Note that the above 'step-by-step' budgeters will have a - very very different GUI than what the budgeting system - required for a small-business might look like.

- -

Note that the utility of budgets is greatly enhanced by using - them with 'classes'. - -

Status:

- -
    -
  • A design doc has been submitted by Bob Drzyzgula. - Take a look at ./src/budget.txt in the source - directory.
  • - -
  • Bryan Larsen has begun work .. it's scheme based ... - Dave Peticolas has some GUI roughed out ...
  • - -
-
-
-
- -
Classes
- -
- Ability to mark certain journal entries as belonging to - a 'class', so that expenses (or income) can be categorized - in more than one way. For example, the expense of a trip - might include food, travel and lodging, and thus be spread over - three different expense accounts. None-the-less, we want all - of these entries to be marked as being in the same class. - (Alternate names: 'job costing' is the report that's generated, - 'cost center', 'cost pool', 'pooling') - Note that classes can be particularly useful when used with - budgets: viz. I set aside $10K in the budget for some activity, - then deduct the actual costs. Note that it should be possible - to roll the remainder over to somehere else (!) -

- Confusion: isn't this what the 'action' field is supposed to do? - The 'action' field is under-utilized. - -

- This requires the following: -

    -
  • Ability to report by class/action -
  • Ability to query by class/action. -
-

- -
-
-
- -
Automated Test Suite
- -
- Build automated test suite, including: -
    -
  • File IO consistency check. Done, 1.6.0, LewisMoss -
  • Currency math correctness. Done ?? Grib. -
-
-
-
- -
Quicken(TM) Import
- -
- Ability to import Quicken QIF files. Both MSMoney and - Quicken use QIF files to export data. Need both wholsesale - data import, and incremental (staged) merge. - -

Status:

- -
    -
  • - Quicken import is implemented and mostly works. - (Bill Gribble, Done, in version 1.4.0) -
  • -
  • - Need a QIF Import wizard (there are several non-intuitive - steps that need to be performed during import. - A dialogue wizard seems like the best idea to carry - through this process. (grib, done in 1.6.0) -
  • -
  • - Work needs to be done for recurring transactions, etc. -
  • -
  • - QIF processing, as used for on-line banking, is - in prototype form (for 1.6.1 ??) - Note that since banks use QIF, the correct - way to updated 'cleared' reconcile state is through - QIF on-line import. - On one side, we have existing recorded transactions; - on the other, the latest bank statement, in QIF - format. -

    -
  • -
-
-
-
- -
IIF Import
- -
- Ability to import IIF (Intuiut Interchange Format, used by Quickbooks) - files, quickbooks, some upsacle accounting packages use this format. - -

Status:

- -
    -
  • - Sample files checked into sample directory. - No formal documentation known. -
  • -
-
-
-
- -
IIF Export
- -
- Ability to export Intuit IIF files. - The IIF format is more rational than the QIF format, - and other 'real' accounting apps support IIF. - Several design alternatives are apparent: - -
    -
  • - A special 'report' that writes out qif could be - created. - This would use the 'reports' infrastructure to - generate QIF's. -
  • - -
  • It is fairly easy to traverse the data in the engine - to write out qif files. This is not hard. Just do it. -
  • -
-
-
- -

Status: not started

-
- -
Stock Quotes, Price Quotes
- -
- Add ability to obtain stock, mutual fund, and currency trading - data from news agencies, web pages. - Add ability to download historical prices as well. - (e.g. get 5-year history of mutual fund - performance vs. DJIA). - -

Right now, stock prices are stored in a separate, simple pricedb. -

- -
    -
  • Prices need to have several different status states. - One state is 'critical/audited', i.e. reviewed by a human, - and important for understanding a historical transaction. - Less mportant may simply be 'audited': i.e. reviewed by a - human, but not a critical price. Lowest level: 'live data' - something that was gotten off the net, may be wrong, may - be right, who knows, who cares. -
  • - -
  • Add to this the idea that we should probably store other - 'technical' stock data, such as share volume, high/low/close, - daily volatility, etc. -
  • - -
  • Need access to historical quotes, for graphing charting - of historic portfolio perfformance. -
  • -
- -

Status:

- -
    -
  • - - Finance::Quote.pm is now a separate development project at - SourceForge. Its a perl module. - It can obtain stock quotes from Yahoo - (NYSE), Yahoo-Europe, Fidelity Investments, T.Rowe Price, - TIAA-CREF, others. Also handles currency exchange rates. -
  • - -
  • A scheme wrapper allows prices to be - fetched from GUI. Done, version 1.6.0, rlbrowning.
  • - -
  • - Commandline-flag replaces script file gnc-prices - perl script). Suitable for use with cron jobs. - (version 1.6.0) -
  • - -
  • A separate, historical-quote module can be found at the - QuoteHist - sourceforge site. It might be a good idea to fold this - together with the Quote.pm module !? -
  • -
-
-
-
- -
Install
- -
- Install on Redhat, Caldera, Corel, SuSE, FreeBSD, TurboLinux, - etc. Possibly use a 'configure'-like way of dealing with - install inconsistencies. -

-
- -
Multiple Currencies
- -
- Need to support multiple currencies. - Work is needed in the GUI. The engine currently supports - multiple currencies by treating them as securities, thus - allowing currency trading. The currency-trading register - needs a complete overhaul as it is obtuse and - unintuitive. Weird stuff is in weird columns. -

-

- A simplified way of dealing with one-shot currency - exchanges needs to be implemented, essentially just a - simple calculator pop-up. This might be handy for the - occasional business traveler or tourist with some minor - currency trades. -

-

- Implement the 'correct' way of handling this when user - is working in multiple currencies on a regular basis. -

-

- SERIFF - Simple Exchange Rate Information File Format. Completely - *.ini-centric in layout and design, but otherwise seemingly - quite complete. -

- -

- Status: -

    -
  • Need to rethink whether the one-shot exchanges - should in fact be recorded full-fledged in the engine. - Also: Euro support is currently hacked in: the EURO is treated as - a 'special' currency. Virtually all the Euro code can be fully - generalized (and should be). -
  • New split architecture should store quantity and value, and - never the price. This will simplify currency movements - between accounts, without requiring/forcing the use of a - currency trading account. (this also solves problems with - rounding that occur when a price is explicitly specified.) - Grib & dave are working this for next release. -
-

- -
- -
Forced Double-Entry
- -
- The system supports double-entry: every transaction - indicates a pair of accounts: one is debited, and one is - credited. - -

Double-entry is a powerful way of ensuring the integrity - of of the financial data. Currently, while double-entry is - supported, its use is not enforced: the user can - create dangling transactions, where only one account is - indicated.

- -

Although this is acceptable for home use (arguably - desirable, since it allows the casual user the simplicity - they desire), it is not acceptable for business use. (The - counterargument is that casual users that aren't - accountants need all the help at getting things right that - they can get.)

- -

It must be possible to enforce double entry, so that a - transaction cannot be completed until two accounts have - been specified.

- -

Restricted Double Note that sometimes, the words - 'single-entry' have a an alternate meaning: they can mean - 'a double entry account which can only be credited, or - debited, but not both'. We need to implement this.

- -

Current status: - -

    -
  • April 1998 -- The engine has a couple of flags in it - that control double-entry behavior: it can be made lax or - strict, however, they are compiled in, and there is no - way to change them from the GUI.
  • - -
  • Dec 1998 -- Scrubber functions implemented to crawl - through data, and find all unbalanced or orphaned - transactions.
  • - -
  • May 2000 -- Default will be changed to double-entry - always. It will not be possible to disable this and move - to single-entry.
  • -
-

-
- -
401(k), Retirement Savings Plans
- -
- 401K, 403, IRA, Roth IRA, SEP, Keogh ... - Retirement Savings Plans often do not put a high - priority on tracking costs, as the tax implication is that - amounts are taxable upon withdrawal, meaning that there is - little necessity to track capital gains. (huh??) -

-

-
- -
Annotate with News Stories
- -
- Download, save, annotate investment news and research. - Provide a way of storing news stories with accounts, and - possibly annotating individual transactions in the same - way. -

-
- -
Searchable Documentation
- -
Need to add a 'meta keyword' tag to the documentation - pages, this will help the search engine (e.g. - htdig [DEAD LINK]) better categorize the - help. Mifluz [DEAD LINK] - might be more embeddable ... I am told that htdig-API is in - good solid condition for this, but undocumented. -

- - Status: - Done, using a simple keyword search, homegrown. The only - problem is it doesn't support compound expressions. -

-
- -
Reconcile Auditing
- -
When a collection of transactions get processed through the - reconcile dialogue, user needs to be able to add a note to this, - i.e. this set of JE's will be treated as a group. The note - (and date) can be later called up as a part of an audit - procedure. The act of reconciliation is treated as a - historical event that needs to be logged. -

-
- -
Loan and Mortgage Calculators
- -
- Provide a variety of simple GUI utilities to allow user to - calculate the future value of loans, mortgage payments, - interest payments, etc. - -

Consider the following dialogue layout:

-
-loan amount $_____________ currency _________ (pull-down menu)
-Remaining balance $___________
-Payment amount $___________
-balloon  payment $_____________
-other payment $________  (e.g. escrow, tax)
-Payment frequency (weekly/monthly/bimonthly/quarterly/yearly)
-loan start date mm/dd/yy   length -----(weeks/months/years/payments)
-loan time left (number of days/weeks/months, rounded)
-number of payments left
-interest rate  %__________________
-payee ____________
-pay-from account __________________
-next due date mm/dd/yy
-
- Note that in the above, not all fields are independent: - some can be calculated from others. The other - payment should bring up a mini-register, allowing user - to add any number of splits.
-
- -

Status:

- -
    -
  • There is an implementation of the calculation routines by - Terry Boldt in the development branch. There is an initial - GUI implementation of the calculator by Dave. -
  • -
-
-
-
- -
Overdraft Alerts
- -
- Overdraft alerts are pop-ups that pop up whenever the user - enters a transaction that would move an account below some - minimum balance, or above some max balance (for a bank - account) or an expense/spending limit is reached (on an - expense account). A similar but different alert can be - implemented for price highs & lows. Note that these - alerts do not require any sort of calendaring or - recurring transaction support. - -

Design requirements: implement multiple (not just two) - alerts for any account type. Alert should consist of

- -
    -
  • value point or price point
  • - -
  • movement direction
  • - -
  • 'is active' boolean flag (i.e. Should be - possible to 'turn off alert' without deleting it)
  • - -
  • memo text
  • -
- -

Status: -

    -
  • Not Started.
  • -
-

-
- -
Technical Stock Analysis
- -
Provide technical stock analysis graphs, e.g. - volume, 90 moving avg, beta, etc. See gstalker for example of - how to do it ... -

-
- -
Asset Depreciation, Sinking Funds, - Amortization Schedules
- -
Need to - support different depreciation schedules (see IRS books for - that). Asset depreciation is complex; there are many - different depreciation schedules, and these vary from - country to country, and change when new tax laws are - implemented. It might be hard for free software to provide - a no-cost subscription to updated depreciation modules. -

-
- -
OFX support
- -
- Provide the SGML DTD parsers to handle the OFX reports that - many banking institutions are providing, or will soon be - providing, to retail customers. See below for OFX - references. - -

OFX is an open spec from Microsoft, Intuit, and - Checkfree, and which will be supported by Integrion. The - OFX DTD's are included in the 1.1 distributions. See OFX Home Page for - details.

- -

There are two ways to build an OFX parser. One way is to - build a compile-time DTD parser that treats the DTD as if - it were an IDL, and generates C language stubs for a - parser. This approach was attempted and abandoned because - it leads to fragile C code and a very large binary.

- -
    -
  • The parser is fragile because minor DTD - non-compliances are hard to parse, handle and recover - from.
  • - -
  • The parser is huge because the DTD results in - hundreds of (C++) objects being generated.
  • -
- The other method would be to perform run-time DTD parsing. - This is attractive particularly because it is a more - commonly-used approach; there are a variety of XML tools - available that provide this function. - -

Run-time parsing may be slower, but on the OFX client - side, this should not be a bottleneck.

- -

Status:

- -
    -
  • A compile-time parser was developed and - abandoned.
  • -
- -

Note that the organizations developing OFX are looking - to use XML as their "formats of the future;" this may - encourage the use of one of the many XML parsers available - for UNIX.

-
- -
Other on-line support
- -
-
->> the German T-Online
->> homebanking system BTX.
->>
->> I Germany we have a very popular online homebanking system,
->> based on the T-Online BTX (Datex-J) system. All of the
->> commercial homebanking software packages like MS-Money or
->> Quicken work with that online system. With that system,
->> you can retrieve  account data from your bank, and also
->> send your transfers.
->>
->> I am using since more than 2 years a GPL software written
->> by a former colleague of mine, Niek Busscher, to work with
->> the T-Online homebanking system. That software package with
->> the name ZKA4BTX is very unknown, since Niek published it only
->> by email.
->>
->> Some words to the features of ZKA4BTX :
->>
->>  - Completely written in Tcl
->>  - Uses Xcept as a BTX browser
->>  - Retrieve account data from multiple banks
->>  - Send transfers, using TAN
->>  - Export retrieved account data to CBB, Xfinans and QIF files      
->>  - Export retrieved account data to CBB, Xfinans and QIF files
->>
->> With a simple click to an icon on my desktop, ZKA4BTX logs into
->> T-Online, gets all my account data from several banks, and writes
->> (adds) it to my CBB, Xfinans or GnuCash (QIF) files.
->>
->> Another very important thing is that I can do all my transfers
->> offline, editing a transfer sheet, and ZKA4BTX sends these
->> transfers in one step to my bank.
->
->One thing we could do in the short-medium term is have gnucash
->launch ZKA4BTX to get the data, export it to QIF, and then load
->it in, all through one command.
-
-
- -
Tab-delimited ASCII file format
- -
- People like to be able to read file contents in - ASCII; there are many Unix tools for manipulating ASCII. An - ASCII equivalent of the current file format should be easy - to develop ... just substitute the writes with - printf()s. - -

The tab-delimited format should be compatible with that - of /rdb, aka RAND/Hobbs /rdb or - - NoSQL. (NoSQL is available as part of the Debian GNU/Linux distribution, - for instance.)

- -

The /rdb format is thus:

-
-field-name  tab  fieldname  tab fieldname   \n
-------------------------------------------  \n
-value       tab   value     tab value       \n
-value       tab   value     tab value       \n
-etc ...
-
- -

It is a very simple, very basic flat table format. The - use of /rdb with GnuCash should try to match with - SQL schemas as much as possible in order to minimize I/O - complexity and incompatibility.

-
- -
Tax Preparation
- -
- Gotta prepare those taxes. - W-2, W-3, 941, 940 Processing. - -
    -
  • - TurboTax -- - categorize items according to different tax - schedules -
  • - -
  • VAT -- Value Added Tax. Varies from country to country. -
  • - -
  • Estimate income taxes. - Estimate itemized deductions, find potential - deductions, categorize them
  • -
-

-
- -
Sync with Palm Pilot organizers
- -
There are Quicken-workalikes that run on the - PalmComputing platform; it would be good to inter-operate - with this. See - PalmLink - and Palm & Linux. -

-
- -
Emergency Records Organizer
- -
Put together a single-page report showing critical info - about accounts, etc. -

-
- -
Logging, Crash Recovery
- -
- Logging serves two purposes: (1) return the system to the state - it was in on some earlier date. (2) recover from a crash. - Probably need two distinct mechanisms to support this. The - mechanisms are (A) backup copies. These can be compactly handled - via RCS (actually, deltax) for storage. (B) Logging. Write - out to disk each & every change made. -

-

Status: -

    -
  • Crude transaction logging/auditing in place; should - be suitable for error/crash recovery but has not been - "tried by fire."
  • - -
  • Backup files automatically created and - time-stamped.
  • -
-

- - -
- -
Enriched Engine, Financial Objects
- -
- The current system makes a distinction between the data - (account, transaction) and they GUI that displays it. The - data is embedded within and controlled by the "Engine", - which is a set of routines to access accounts, - transactions, etc. The engine serves as a kind of a dynamic - cache between the permanent data repository (file, sql db) - and the GUI. - -

The current engine is rather simple: it provides support - for accounts, account hierarchies and transactions - consisting of multiple entries.

- -

Many of the features described elsewhere will require - that the engine have a far richer, more sophisticated data - model, including such things as:

- -
    -
  • Linking to "Address Info" ( e.g. names, - addresses)
  • - -
  • Transaction identifiers
  • - -
  • Part numbers, SKU IDs
  • - -
  • Interest rates
  • - -
  • Budget policy
  • -
- -

Note: it makes no sense at this point to make the engine - API much richer than what the GUI can currently - support.

- -
    -
  • Locks When splits are implemented, and the - parent transaction has been marked as cleared/reconciled, - the record - should be locked, so that further modifications to the - amount can't be performed (or at least, a warning is - generated to prevent accidental garbaging up of old - transactions).
  • -
- -

Current Status:

- -
    -
  • - BeginEdit()/RollbackEdit()/CommitEdit() - routines mostly in place, - these "Transaction processing constructs" should - simplify creation of an SQL back end, or some other - more sophisticated transactional server. -
  • - -
  • Multiple currency support is present but still pretty - "raw."
  • - -
  • Query engine has been broadly extended (Bill Gribble). - Documentation for Query Engine??
  • - -
-

-
- -
SQL I/O
- -
- A module is necessary to allow data to be fetched from an - SQL database, and for that database to be updated. - There has been much discussion about this on - mailing lists both for GnuCash and - CBB [DEAD LINK]. - Major points have included: - -
-
-
    -
  • The use of a database allows only that data which - is actually in use to be loaded into - memory. This permits managing larger sets of - transactions more efficiently. -
  • -

    - -
  • It also allows data to be pushed out to the DBMS - immediately after entry, rather than waiting - for the user to "save the books." -
  • -

    - -
  • Using a client/server SQL database might make it easier - to turn GnuCash into a multi-user system. -
  • -

    - -
  • By using a well-known DBMS, outside programs are - provided a well-defined way of getting at, and - perhaps even modifying, GnuCash data. - (Actually, this is not true: GnuCash already provides - a uniform, well-documented, preferred data access API. - As long as this - API is used, there is some guarantee that data is stored - in a self-consistent fashion. Not using the GnuCash - programming interfaces risks corrupting the data. - Direct access to the data is dangerous and discouraged. - Furthermore, The API is guaranteed to be backwards - compatible with a variety of data storage formats. - Due to enhancements, the actual form of the data stored in - a flat file, or in the SQL database, may change without - warning.) -
  • -

    -
  • - Those SQL databases available on Linux tend to involve - considerable administrative overhead in terms - of getting them set up. - This may be a minor cost to a business enterprise - that routinely hires Database Administrators. - It is not acceptable to require this of - naive users that may find "simple" things like -
    -% su -
    -Password:
    -# cd /tmp
    -# rpm -i gnucash-4.1.3.i386.rpm
    -# exit
    -
    - to be challenging. -
  • -

    - -
  • - It might be useful to use an embedded database engine - like unto Sleepycat - DB [DEAD LINK, now owned by Oracle], - cdb, - or something like - - ISAM (Note CQL++ supports ISAM access methods), or - even an embedded SQL engine such as - - GigaBASE [DEAD LINK]. - The reasons to do so include ... ??? -
  • - -

    -
  • - GnuCash presently uses a document-oriented model, where - the entire set of books are loaded in, and - dumped out, all at one fell swoop. - GnuCash needs to be modified to access the database - in a transactional manner. This is at least partly - implemented with the Begin()/End() constructs - in the engine. - -

    - Some transactional thoughts: entire SQL - tables/databases do not need to be locked while the - user is editing a transaction via the GUI. - Instead, an optimistic approach, similar to that - employed by CVS (concurrent version system, a mechanism - for storing versions of source code) could be used: if - the edits conflict with changes made by others, edits - are be rejected en-masse, allowing the user to merge - and correct their changes. - Important note: updating SQL does not - require locks to be held for extended periods of - time! -

    -
  • - -
  • - The SQL engine chosen should be fully transactional, - passing the 'ACID' test (Atomicity, Consistency, - Isolation, Durability). - Note that - MySQL - does not satisfy the 'ACID' criteria. -
  • -
-

- Status: - Done, more or less, gnucash version 1.6.0, Linas Vepstas. - There's still a laundry list of things that need to be - cleaned up, see the README file in src/engine/sql/README. - -

-
- -
Multi-user Support
- -
- Multi-user support should be added with either an SQL - backend to the engine, and/or through CORBA interfaces to - the engine. - Another possibility is to create a web application - server, and have users do much/most of I/O via a web - interface, possibly using the register object as a browser - plugin. - The following industrial-strength features are - needed: -

- -
    -
  • transaction-oriented queuing of updates
  • - -
  • event subscription channel for updates
  • - -
  • user authentication
  • - -
  • user authorization
  • - -
  • non-repudiability (needed only for peer-to-peer??)
  • - -
  • encryption of network connections
  • -
-

- Status: Partly done. (gnucash 1.6.0, Linas) - The postgres backend fully - supports multiple simltaneous users. This includes - events for automatic updates of all GUI displays. - However, the GUI support is rough, no GUI dialog - for user/password. -

-
- -
Address Book
- -
- Provide support for client/vendor/customer address books, - including street address, eamil, phone. Also: to-do lists, - a mini-contact manager (when is last time this person - was paid? what did they say on phone the last time we - sent them a check? Is there a dispute?) -

- Propose: use Ximian Evolution contact manager/to-do lists. -

-
- -
Accounts Payable, Receivable
- -
Add features to track sales receipts and other pending - sources of income, as well as owed sums. -
    -
  • Need new account type 'ar' and 'ap'. When this account type is - selected, the register display, etc. is slightly different, as below: -
  • Add field to register called 'date due'. The date could be - entered as 'date of transaction +30days'. etc. The account - could have a default: entries always default to +30 or +45 days - or whatever. -
  • Create a report to match 'date due' to current date, and report - overdue balances ... -
  • Create Account aging report: show (average) age of - amount-due/amount-owed. -
  • Create a projected cash flow report: showing projected - future payments based on date due. -
  • Somehow, automatically match invoices to payments. - When an invoice has been paid off, then there should be a - view mode where the invoice and its payment is no longer shown - (i.e. so that only outstanding, unpaid entries are shown ...) -
  • create report showing everything but the a/p: - Here's an example. I buy a chair for a friend, and three - days later he pays me back. What I've been doing is ... -
    ->   1/12/01  Credit    -$100
    ->            A/R       +$100
    ->   1/15/01  Cash      +$100
    ->            A/R       -$100
    -
    - To make it less painful to read and understand, the - report should look like: - -
    ->   1/12/01 Credit -$100
    ->   1/15/01 Cash   +$100
    -
    - i.e. there would be a new kind of 'transaction report' that - would pair up transactions in this way, showing things - 'as if' the A/R didn't exist, and 'as if' a transaction - was spread over a bunch of days. - -
-

-
- -
Payroll
- -
- Payroll introduces a sizable amount of complexity - in terms of the need to comply with constantly-changing - government regulations in whatever country one is in. - While the GnuCash "engine" might remain free, - maintenance of payroll functionality would require - "subscribing" to an update scheme; it might be troublesome - to try to provide such a "subscription" free of charge. -

-
- -
Invoicing
- -
Invoicing. Note that invoicing and order entry are - closely related. - Several components: -
    -
  • Record an invoice. Assign it a serial number. Be able - to reprint/report based on invoice serial number. -
  • Invoice associates customer name to set of transactions. - Need to deal with PIM issue. I.e. need to integrate - with high-function PIM or CRM interface. -
  • Allow historical browsing of invoices customer by customer. -
  • To visually design an invoice, need to have a - mini-word-processor/simple drawing plug-in. Is - Abisource/Abiword a candidate? Probably needs bonobo... -
-
- -
Order Entry
- -
- Mini-GUI allowing users to type in orders. -
    -
  • Should interface to parts/inventory database to confirm - item availability, (maybe recommend additional production)? - inventory should be updated after order placement. -
  • Automatically update accounts receivable. -
  • Allow order revision/update (esp. as partial orders are shipped). -
  • Orders can be invoiced when entered (simple invoicing), or - placed on account (double invoicing). -
  • Allow back-orders to be printed customer-by-customer, or by - product/item. -
  • Allow printing of packing slip. -
-

-
- -
Job Costing
- -
Ability to prepare and track estimates. -
    -
  • Allow estimate/bid to be converted to a firm order & get invoiced. -
-

-
- -
Expense Accounts
- -
Expense Account Automation, including air, car, hotel, - dining. Receipts, reservations, cancellations. -

-
-
- -

References

- All software and technical standard references have been moved to - - https://www.gnucash.org/links.php3 - -
- Draft version 0.51 -- June 2001 - Linas Vepstas - linas@linas.org -
- - -