Introduction
************

This whole document is completely outdated. Don't read this. All function names and every described structure has changed completely. Only read this if you want to know how gnucash looked like in 1999. This is completely outdated!

This document defines the design and architecture of the GnuCash program, an application for tracking finances. GnuCash is composed of several subsystems or modules. This document describes each module, specifying its interface and, where appropriate, its implementation, as well as describing the interactions between each module.

Who Should Read This Document?
==============================

Anyone who plans on making a significant change or addition to GnuCash's functionality should read this document. By adhering to the structure presented here, your contribution will be more likely to work correctly with existing and future features.

Goals
=====

GnuCash is intended to be a finance and accounting program for individuals and small businesses. As such, it should have the following primary features:

  * A sound underlying model for financial entities such as currencies, transactions, and accounts.

  * A user interface which provides an efficient way to accomplish common tasks, such as transaction entry, account reconciliation, etc.

  * The ability to generate and print standard financial reports such as Income Statements, Balance Sheets, etc.

  * The ability to generate and print graphs of financial information.

A more comprehensive list of current and planned features for GnuCash is located at http://cvs.gnucash.org/linux/gnucash/projects.html.