update status on logging, books, graphing & misc cleanup

git-svn-id: svn+ssh://svn.gnucash.org/repo/gnucash/trunk@2651 57a11ea4-9604-0410-9ed3-97b8803252fd
This commit is contained in:
Linas Vepstas 2000-08-08 23:44:36 +00:00
parent 19a70fafe0
commit bcaa741c02

View File

@ -477,10 +477,10 @@
</tr> </tr>
<tr> <tr>
<td><a href="#ext">Extension Language Support</a></td> <td><a href="#architecture">Architecture Review</a></td>
<td>Medium</td> <td>Small</td>
<td>RLB</td> <td>RLB, Dave</td>
</tr> </tr>
<tr> <tr>
@ -623,7 +623,7 @@
</tr> </tr>
<tr> <tr>
<td><a href="#engine">Enhanced Engine, Financial <td><a href="#engine">Enriched Engine, Financial
Objects</a></td> Objects</a></td>
<td>Large</td> <td>Large</td>
@ -772,83 +772,76 @@
<ul> <ul>
<li>A general reporting infrastrucutre was implemented in <li>A general reporting infrastrucutre was implemented in
Perl, in the form of html-embedded perl (ePerl). However, Perl, in the form of html-embedded perl (ePerl). However,
this reporting mechanism was abondoned in part because this reporting mechanism was abondoned in part because
ongoing build and install problems related to eperl and ongoing build and install problems related to eperl and
swig. Also, since eperl didn't poarticipate in the swig. Also, since eperl didn't poarticipate in the
interpreter even loop, the report generator had to runn interpreter even loop, the report generator had to runn
as a separate process, reading data via pipes. This was as a separate process, reading data via pipes. This was
uglier than some folks liked.</li> uglier than some folks liked.</li>
<li>A general reporting infrastructure has been <a href= <li>A general reporting infrastructure has been <a href=
"xacc-reports.html#NEWREP">implemented in Scheme</a>. "xacc-reports.html#NEWREP">implemented in Scheme</a>.
Currently, there are simple reports for Profit/Loss, Currently, there are simple reports for Profit/Loss,
Balance Sheet, and portfolio valuation.</li> Balance Sheet, and portfolio valuation.</li>
<li>Reports are currently displayed with the gtk-xmhtml <li>Reports are currently displayed with the gtk-xmhtml
widget but are being ported to the gtk-html widget. The widget but are being ported to the gtk-html widget. The
gtkhtml widget should provide printing abilities through gtkhtml widget should provide printing abilities through
gnome-print (right ????).</li> gnome-print (right ????).</li>
<li>There is currently no way (no longer any way??) to <li>There is currently no way (no longer any way??) to
generate reports from the command line ...</li> generate reports from the command line ...</li>
<li>A list of 'required reports' is needed. Then these <li>A list of 'required reports' is needed. Then these
need to be implemented.</li> need to be implemented.
</li>
<li>Heavy discussion by matt martin, Robert Merkel ...
</li>
<li>Heavy discussion by matt martin, Robert Merkel
...</li>
<li>The following technologies were rejected/unused mostly <li>The following technologies were rejected/unused mostly
because they were too complex, didn't hang together technologies: because they were too complex, didn't hang together technologies:
<a href= "http://www.oasis-open.org/cover/">SGML</a> and <a href= <a href= "http://www.oasis-open.org/cover/">SGML</a> and <a href=
"http://www.oasis-open.org/cover/xml.html">Extensible "http://www.oasis-open.org/cover/xml.html">Extensible
Markup Language - XML.</a> In the long run, these are Markup Language - XML.</a> In the long run, these are
preferable to HTML, since <a href= preferable to HTML, since <a href=
"http://www.jclark.com/dsssl/">DSSSL</a> tools such as <a "http://www.jclark.com/dsssl/">DSSSL</a> tools such as <a
href="http://www.jclark.com/jade/">Jade (James DSSSL href="http://www.jclark.com/jade/">Jade (James DSSSL
Engine)</a> can be used to convert to RTF, Postscript, etc. Engine)</a> can be used to convert to RTF, Postscript, etc.
Add to this the consideration that XML is the basis for the Add to this the consideration that XML is the basis for the
<a href="http://www.w3.org/DOM/">Document Object Model</a>, <a href="http://www.w3.org/DOM/">Document Object Model</a>,
which is being integrated into many web-based applications, which is being integrated into many web-based applications,
and we can see that XML is an increasingly significant and we can see that XML is an increasingly significant
format as we look to the future. format as we look to the future.
</li> </li>
</ul> </ul>
<br>
<br>
</dd> </dd>
<dt><a name="graphs"><b>Graphs</b></a></dt> <dt><a name="graphs"><b>Graphs</b></a></dt>
<dd> <dd>
<p>Graph portfolio value vs. cost</p> <p>Provide support for graphs, charts, etc., such as:
Asset allocation pie chart, portfolio value vs. cost,
<p>Graphs, charts, etc. too ...</p> ROI. Graphs should be printable to printer.
Graph generation should be fully integrated with reporting,
<p>Asset allocation pie chart.</p> both for data collection via queries, and for displayed
output.
<p>The following graph packages are candidates: <a href= </p>
"http://www.gnome.org/guppi/">GUPPI</a>, plotutils,
gnumeric/graph code. The gnumeric/graphcode is already
bonobo-ified.</p>
<p>If gnumeric and gnucash are to use a common graph
solution, the following are gnumeric requirements: --
interactive plot editing -- each segment attributes totally
settable/controllable -- drag/move callbacks when segments
are click-draged.</p>
<p>Graphs should be printable to printer.</p>
<p><b>Status:</b></p> <p><b>Status:</b></p>
<ul> <ul>
<li>Evaluate different graphing packages, including <a <li>Different graphing packageswere evaluagted,
href="http://www.gnome.org/guppi/">GUPPI</a></li> <a href="http://www.gnome.org/guppi/">GUPPI</a>.
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-draged.
</li>
</ul> </ul>
<br>
<br>
</dd> </dd>
<dt><a name="ledger"><b>Simplified Ledger</b></a></dt> <dt><a name="ledger"><b>Simplified Ledger</b></a></dt>
@ -1150,14 +1143,68 @@
<ul> <ul>
<li>Permanently lock some transactions as non-editable. <li>Permanently lock some transactions as non-editable.
This should be straight-forward by using the <tt> This should be straight-forward by using the <tt>
reconciled</tt> field to indicate a <tt>locked</tt> reconciled</tt> field to indicate a <tt>locked</tt>
value, and not allowing the GUI to edit locked value, and not allowing the GUI to edit locked
records.</li> records.
</li>
<li>Transfer the Income minus Expense for the book period <li>Transfer the Income minus Expense for the book period
to an equity account, so that each new period starts with to an equity account, so that each new period starts with
zero income/expense balances.</li> zero income/expense balances.
</li>
<li>A mechanism to purge really old transactions from the
database.
</li>
<li>Extensions to querying and reporting infrastructure ...
The query changes might be painful ...
</li>
<li>
A user should be allowed to 'delete' an account <em>
only</em> 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 begining and ending date (that
match the book period), and the file format needs to
support multiple charts ...
</li>
<li>Memorized Transactions ... Currently, transaction
autocompletion works by autocompleting 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.
</li>
</ul>
<p><b>Status:</b>
<ul>
<li>A mini-design doc exists in
src/engine/future.txt</li>
</ul>
</p>
</dd>
<dt><a name="check"><b>Check Printing</b></a></dt>
<dd>
Create a check-printing ability. Includ MICR (Magnetic Ink,
Computer Readable) check printing abilities.
<a href="http://dir.yahoo.com/business_and_economy/shopping_and_services/financial_services/banking/checks/">
Yahoo Check Printing</a> provides a list of vendors & printers.
<p><b>Status:</b></p>
<ul>
<li>Bill Gribble has built a prototype based on the
gnome-print. Waiting for gnome-print to mature ...</li>
<li>Need a sample check/sample transaction to print out
sot that user can test printer.
<li>MICR Fonts are available & brought to mailing list.
</ul>
<br>
<br>
</dd>
<dt><a name="wizards"><b>Wizards</b></a></dt> <dt><a name="wizards"><b>Wizards</b></a></dt>
@ -1192,69 +1239,6 @@
</li> </li>
</ul> </ul>
</dd>
<li>A mechanism to purge really old transactions from the
database.</li>
<li>Extensions to reporting infrastructure ...</li>
<li>
A user should be allowed to 'delete' an account <em>
only</em> if it has no transactions in the currently
open book.
<p>Of course, it's not deleted from the old books.</p>
<p>From this last, we conclude that every chart of
accounts should have a begining and ending date (that
match the book period), and the file format needs to
support multiple charts ...</p>
</li>
<li>Memorized Transactions ... Currently, transaction
autocompletion works by autocompleting 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.
</li>
</ul>
<br>
<br>
<p><b>Status:</b></p>
<ul>
<li>A mini-design doc exists in
src/engine/future.txt</li>
</ul>
<br>
<br>
</dd>
<dd><a name="check"></a></dd>
<dt><b>Check Printing</b></dt>
<dd>
Create a check-printing ability. Includ MICR (Magnetic Ink,
Computer Readable) check printing abilities.
<a href="http://dir.yahoo.com/business_and_economy/shopping_and_services/financial_services/banking/checks/">
Yahoo Check Printing</a> provides a list of vendors & printers.
<p><b>Status:</b></p>
<ul>
<li>Bill Gribble has built a prototype based on the
gnome-print. Waiting for gnome-print to mature ...</li>
<li>Need a sample check/sample transaction to print out
sot that user can test printer.
<li>MICR Fonts are available & brought to mailing list.
</ul>
<br>
<br>
</dd>
<dt><a name="userpref"><b>User Preferences, Session Management</b></a></dt> <dt><a name="userpref"><b>User Preferences, Session Management</b></a></dt>
@ -1299,8 +1283,7 @@
<br> <br>
</dd> </dd>
<dt><a name="ext"><b>Extension Language Support</b></a></dt> <dt><a name="architecture"><b>Architecture Review</b></a></dt>
<dd> <dd>
The application is wired together partly with C, partly The application is wired together partly with C, partly
with Scheme. The architecture of the wiring and how scheme with Scheme. The architecture of the wiring and how scheme
@ -1308,9 +1291,8 @@
created so that additional extensions may be added in a created so that additional extensions may be added in a
straightforward manner. straightforward manner.
<p>The overall architecture is envisioned thus:</p> <p>The overall architecture is envisioned thus:
All code, including the transaction engine, the file I/O
<p>All code, including the transaction engine, the file I/O
routines, the menus, and the ledger, will be abstracted routines, the menus, and the ledger, will be abstracted
into compact modules that can function independently of into compact modules that can function independently of
each other. At the highest level, there will be a each other. At the highest level, there will be a
@ -1329,14 +1311,20 @@
<p><b>Status:</b></p> <p><b>Status:</b></p>
<ul> <ul>
<li>Scheme/Guile is the central extension language.</li> <li>
Scheme/Guile is the central extension language. Guile
<li>Optional interfaces to the data engine can be interfaces auto-generated using g-wrap.
generated using <a href= </li>
"http://starship.skyport.net/crew/beazley/swig.html"> <li>
SWIG</a>.</li> Optional interfaces to the data engine (for, e.g.
perl) can be generated using
<li>Rob Browning is the reigning expert.</li> <a href= "http://starship.skyport.net/crew/beazley/swig.html">
SWIG</a>.
</li>
<li>
Dave to collacte & edit architecture documents.
RLB to provide diagrams.
</li>
</ul> </ul>
<br> <br>
<br> <br>
@ -1471,11 +1459,19 @@
<p><b>Status:</b></p> <p><b>Status:</b></p>
<ul> <ul>
<li>Quicken import is implemented and mostly works. <li>
(Bill Gribble, Done, in version 1.4.0)</li> Quicken import is implemented and mostly works.
(Bill Gribble, Done, in version 1.4.0)
<li>Work needs to be done for recurring transactions, etc.</li> </li>
<li>
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.
</li>
<li>
Work needs to be done for recurring transactions, etc.
</li>
<li> <li>
QIF processing, as used for on-line banking, is <em> QIF processing, as used for on-line banking, is <em>
not</em> implemented. That is, staged import isn't not</em> implemented. That is, staged import isn't
@ -1586,8 +1582,9 @@
<dt><a name="install"><b>Install</b></a></dt> <dt><a name="install"><b>Install</b></a></dt>
<dd> <dd>
Install on Redhat, Caldera, Corel, SuSE, FreeBSD, TurboLinux, Install on Redhat, Caldera, Corel, SuSE, FreeBSD, TurboLinux,
etc. etc. Possibly use a 'configure'-like way of dealing with
install inconsitencies.
<p></p> <p></p>
</dd> </dd>
@ -1612,9 +1609,16 @@
Implement the 'correct' way of handling this when user Implement the 'correct' way of handling this when user
is working in multiple currencies on a regular basis. is working in multiple currencies on a regular basis.
</p> </p>
<p>
<a href="http://www.cloanto.com/specs/seriff.html">SERIFF</a>
Simple Exchange Rate Information File Format. Completely
*.ini-centric in layout and design, but otherwise seemingly
quite complete.
</p>
<p> <p>
<b>Status:</b> Need to rethink wether the one-shot exchanges <b>Status:</b>
Need to rethink wether the one-shot exchanges
should in fact be recorded full-fledged in the engine. should in fact be recorded full-fledged in the engine.
Also: EURO support is currently hacked in: the EURO is treated as Also: EURO support is currently hacked in: the EURO is treated as
a 'special' currency. Virtually all the euro code can be fully a 'special' currency. Virtually all the euro code can be fully
@ -1668,17 +1672,13 @@
always. It will not be possible to disable this and move always. It will not be possible to disable this and move
to single-entry.</li> to single-entry.</li>
</ul> </ul>
<br>
<br>
</dd> </dd>
<dt><a name="401K"><b>401(k), RSP</b></a></dt> <dt><a name="401K"><b>401(k), Retirement Savings Plans</b></a></dt>
<dd> <dd>
401K, 403, IRA, Roth IRA, SEP, Keogh ... "Retirement Savigs 401K, 403, IRA, Roth IRA, SEP, Keogh ...
Plans" Retirement Savings Plans often do not put a high
<p>Retirement Savings Plans often do not put a high
priority on tracking costs, as the tax implication is that priority on tracking costs, as the tax implication is that
amounts are taxable upon withdrawal, meaning that there is amounts are taxable upon withdrawal, meaning that there is
little necessity to track capital gains. (huh??)</p> little necessity to track capital gains. (huh??)</p>
@ -1780,17 +1780,12 @@ next due date mm/dd/yy
<li>memo text</li> <li>memo text</li>
</ul> </ul>
<br>
<br>
<p><b>Status:</b></p>
<p><b>Status:</b>
<ul> <ul>
<li>Not Started.</li> <li>Not Started.</li>
</ul> </ul>
<br> </p>
<br>
</dd> </dd>
<dt><a name="tech"><b>Technical Stock Analysis</b></a></dt> <dt><a name="tech"><b>Technical Stock Analysis</b></a></dt>
@ -1979,6 +1974,29 @@ etc ...
<p></p> <p></p>
</dd> </dd>
<dt><a name="logging"><b>Logging, Crash Recovery</b></a></dt>
<dd>
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.
</p>
<p><b>Status:</b>
<ul>
<li>Crude transaction logging/auditing in place; should
be suitable for error/crash recovery but has not been
"tried by fire."</li>
<li>Backup files automatically created and
time-stamped.</li>
</p>
</dd>
<dt><a name="engine"><b>Enriched Engine, Financial Objects</b></a></dt> <dt><a name="engine"><b>Enriched Engine, Financial Objects</b></a></dt>
<dd> <dd>
@ -2017,55 +2035,31 @@ etc ...
<ul> <ul>
<li><b>Locks</b> When splits are implemented, and the <li><b>Locks</b> When splits are implemented, and the
parent transaction has been marked as cleared, the record parent transaction has been marked as cleared/reconciled,
the record
should be locked, so that further modifications to the should be locked, so that further modifications to the
amount can't be performed (or at least, a warning is amount can't be performed (or at least, a warning is
generated to prevent accidental garbaging up of old generated to prevent accidental garbaging up of old
transactions).</li> transactions).</li>
<li>
<b>Books</b> Ability to close a book at the end of the
fiscal year, thus indicating that nobody is permitted
to "mess around" with that old data.
In a business environment, the auditors may have
"signed off" on the validity of the data; at that
point, the ability to modify audited data should be
<em>very</em> tightly controlled, or even outright
forbidden.
</li>
</ul> </ul>
<p><b>Current Status:</b></p> <p><b>Current Status:</b></p>
<ul> <ul>
<li>The basic engine has been detangled from the GUI
elements, as of version gnucash-1.1.4.</li>
<li>Binary file I/O mostly detangled into a separate
module.</li>
<li>Crude transaction logging/auditing in place; should
be suitable for error/crash recovery but has not been
"tried by fire."</li>
<li>Backup files automatically created and
time-stamped.</li>
<li> <li>
<tt>BeginEdit()/RollbackEdit()/CommitEdit()</tt> <tt>BeginEdit()/RollbackEdit()/CommitEdit()</tt>
routines mostly in place, routines mostly in place,
These "Transaction processing constructs" should these "Transaction processing constructs" should
simplify creation of an SQL back end, or some other simplify creation of an SQL back end, or some other
more sophisticated database engine. more sophisticated transactional server.
</li> </li>
<li>Multiple currency support is present but still pretty <li>Multiple currency support is present but still pretty
"raw."</li> "raw."</li>
<li>Query engine is minimal/sparse in capabilities.</li> <li>Query engine has been broadly extended (Bill Gribble).
Documentation for Query Engine??</li>
<li>Linas &lt;linas@linas.org&gt; is maintaining the
engine code.</li>
</ul> </ul>
<p></p> <p></p>
</dd> </dd>
@ -2300,6 +2294,12 @@ Password:
<li><a href="http://www.linuxlinks.com/Software/Financial/"> <li><a href="http://www.linuxlinks.com/Software/Financial/">
Financial Applications for Linx</a> Financial Applications for Linx</a>
<li>
<a href="http://www.cloanto.com/specs/seriff.html">SERIFF</a>
Simple Exchange Rate Information File Format. Completely
*.ini-centric in layout and design, but otherwise seemingly
quite complete.
</li>
<li><a href="http://www.pathcom.com/~sstratos/">gstalker</a> <li><a href="http://www.pathcom.com/~sstratos/">gstalker</a>
gtk/gnome stock grapher.</li> gtk/gnome stock grapher.</li>
@ -2388,14 +2388,13 @@ Password:
<li><a href="http://www.integrion.com/">Integrion</a>, a <li><a href="http://www.integrion.com/">Integrion</a>, a
16-bank + IBM consortium aimed at building up on-line banking 16-bank + IBM consortium aimed at building up on-line banking
infrastructure. Mostly aimed at mainframes, middleware, high infrastructure. Mostly aimed at mainframes, middleware, high
transaction volumes and data integrity.<br> transaction volumes and data integrity.
<br>
</li> </li>
<li><a href="http://www.sun.com/980224/javapos/">Java Point <li><a href="http://www.sun.com/980224/javapos/">Java Point
of Sale</a> interfaces.</li> of Sale</a> interfaces.</li>
<li><a href="ftp.gnu.org:/pub/gnu/plotutils/">Gnu <li><a href="ftp://ftp.gnu.org/pub/gnu/plotutils/">Gnu
Plotutils</a> needed for building the graphing portions of Plotutils</a> needed for building the graphing portions of
the code.</li> the code.</li>
@ -2416,10 +2415,8 @@ Password:
Works</a></li> Works</a></li>
<li><a href="http://www.penguincomputing.com/antarctic.html"> <li><a href="http://www.penguincomputing.com/antarctic.html">
Antarctic Project Server</a></li> Antarctic Project Server</a>
</li>
<li><a href="http://www.im.lcs.mit.edu/~magnus/ml/">Maxwell's
Lemur -- a GTK based table widget</a></li>
<li><a href="http://www.ispras.ru/~knizhnik/gigabase.html"> <li><a href="http://www.ispras.ru/~knizhnik/gigabase.html">
GigaBASE</a> embeddabale SQL database.</li> GigaBASE</a> embeddabale SQL database.</li>
@ -2432,28 +2429,36 @@ Password:
only. only.
<ul> <ul>
<li><a href="http://www3.hmc.edu/~rclark/xacc/">X-Accountant <li>
Home Page</a> - this was the original site for <a href="http://www3.hmc.edu/~rclark/xacc/">X-Accountant
the GPL'ed accounting package that eventually evolved into Home Page</a> - this was the original site for
GnuCash. Robin Clark wrote the first version while at school the GPL'ed accounting package that eventually evolved into
at Harvey Mudd College.</li> GnuCash. Robin Clark wrote the first version while at school
at Harvey Mudd College.
<li>The original <a href= </li>
"http://www.dnaco.net/~bcooper/watermark/index.html"> <li>
WaterMark</a> Gnome/KDE personal finance project page. The original <a href=
Watermark and GnoMoney were proposed about the same time, and "http://www.dnaco.net/~bcooper/watermark/index.html">
there was talk of joining forces with X-Accountant.</li> WaterMark</a> Gnome/KDE personal finance project page.
Watermark and GnoMoney were proposed about the same time, and
<li><a href="http://www.telly.org/freemoney/">FreeMoney</a> there was talk of joining forces with X-Accountant.
Linux small-business accounting s/w. A proposal to build a </li>
business package back by SQL.</li> <li>
<a href="http://www.im.lcs.mit.edu/~magnus/ml/">Maxwell's
Lemur -- a GTK based table widget</a> -- work discontinued
because gnumeric was much cooler.
</li>
<li>
<a href="http://www.telly.org/freemoney/">FreeMoney</a>
Linux small-business accounting s/w. A proposal to build a
business package backed by SQL.
</li>
</ul> </ul>
<hr> <hr>
Draft version 0.38 -- June 2000 Draft version 0.40 -- August 2000
Linas Vepstas <a href="mailto:linas@linas.org"> Linas Vepstas
linas@linas.org</a><br> <a href="mailto:linas@linas.org">linas@linas.org</a>
updates by Christopher Browne <a href= <br>
"mailto:cbbrowne@ntlug.org">cbbrowne@ntlug.org</a><br>
</body> </body>
</html> </html>