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 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.
-
-
- - Architectural Goals
-
- - Requirements
-
- - Sizings
-
- - Features
-
-
-
-
- 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
-
-
-
-
- Feature |
- Sizing |
- Responsible |
-
-
-
- |
-
-
-
- Internationalization |
-
- Done |
- - |
-
-
-
- Reports |
-
- Medium |
- Stimming/Gribble |
-
-
-
- Graphs |
-
- Medium |
- Guppi/Gribble |
-
-
-
- Transaction Query |
-
- Small |
- Linas/LewisMoss |
-
-
-
- Simplified Ledger |
-
- Done |
- - |
-
-
-
- Themes, Icons, Glitz |
-
- Small |
- Various |
-
-
-
- Miscellaneous Small Tasks |
-
- Done |
- Various |
-
-
-
- Alerts, Recurring & Scheduled Transactions |
-
- Medium |
- ? |
-
-
-
- Budgeting |
-
- Medium |
- Dave |
-
-
-
- Classes/'Action' Field |
-
- Small |
- ? |
-
-
-
- Books, Accounting Periods |
-
- Small |
- Linas |
-
-
-
- Check Printing |
-
- Small |
- Grib |
-
-
-
- Wizards |
-
- Small |
- Dave, Bill-qif |
-
-
-
- Arrangements |
-
- Small |
- ? |
-
-
-
- User Preferences/Session Mgmt. |
-
- Done |
- ? |
-
-
-
- Quicken(TM) QIF Import |
-
- Small |
- Gribble |
-
-
-
- IIF Import |
-
- Small |
- ? |
-
-
-
- IIF Export |
-
- Small |
- Grib |
-
-
-
- Multiple Currencies |
-
- Medium |
- Rethink Requirements-Linas |
-
-
-
- Architecture Review |
-
- Small |
- RLB, Dave |
-
-
-
- Automated Test Suite |
-
- Medium |
- ? |
-
-
-
- Stock Quotes, Price Quotes |
-
- Small |
- ? |
-
-
-
- Install |
-
- Small ? |
- ? |
-
-
-
- Forced Double Entry |
-
- Small |
- ? |
-
-
-
- 401K etc. |
-
- Small |
- ? |
-
-
-
- Searchable Documentation |
-
- Done |
- grib |
-
-
-
- Reconcile Auditing |
-
- Small |
- ? |
-
-
-
- Annotate with Investment News |
-
- Small |
- ? |
-
-
-
- Loan and Mortgage Calculators |
-
- Small |
- Dave |
-
-
-
- Overdraft Alerts |
-
- Small |
- ? |
-
-
-
- Technical Stock Analysis |
-
- Medium |
- ? |
-
-
-
- Depreciation, Sinking Funds |
-
- Medium |
- ? |
-
-
-
- OFX, Online Banking, Trading,
- Bill-pay |
-
- Large |
- Dave |
-
-
-
- Tab-delimited ASCII export |
-
- Small |
- ? |
-
-
-
- Tax Preparation |
-
- Large |
- ? |
-
-
-
- Sync with Palm Pilot
- organizers |
-
- Medium |
- ? |
-
-
-
- Emergency Records Organizer |
-
- Small |
- ? |
-
-
-
- Small Business Features
- Features that small/medium businesses expect.
-
-
-
-
-
-
- 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:
-
-
-
-
- - 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.
-
-
-
-
- - 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
-
-
-
-