LibOFX 0.1 release

Benoit Grégoire
Fri, 19 Apr 2002 20:11:07 -0400

I am happy to finally announce the first public release of LibOFX.  I finally 
managed to write a little documentation, a sensible install and build 
procedure, dtd autoloading and something that looks almost like a web site to 
distribute it.  So here it is:
Direct link:

Here is the README, I hope to receive a lot of feedback.  Please note that 
until version 1.0, the API is subject to frequent changes.


This is the LibOFX library.  It is a API designed to allow applications to 
very easily support OFX command responses, usually provided by
financial institutions.  See for details and 
specification. This project was first started as my end of degree project,
with the objective to add OFX support to GnuCash If 
you can read French, the original project presentation is
included in the doc directory.  I finally decided to make it into a generic 
library, so all OpenSource software can benefit.

LibOFX is based on the excellent OpenSP library written by James Clark, and 
now part of the OpenJADE
project.  OpenSP by itself is not widely distributed.  However, OpenJade 1.3.1 
includes a version on OpenSP suitable for linking with
LibOFX.  Since LibOFX uses the generic interface to OpenSP, it should be 
compatible with all currently distributed versions of OpenSP (It
has been tested up to 1.5pre4).  LibOFX is written in C++, but provides a C 
style interface.  It will soon be usable transparently from both C
and C++.

In addition to the library, two utilities are included with libofx

ofxdump dumps to stdout, in human readable form, everything the library 
understands about a particular ofx response file.  It also dumps
errors to stderr.  It is as a code example and demo of the library (it uses 
every functions and every structures of LibOFX)
usage: ofxdump path_to_ofx_file/ofx_filename

ofxtoqif is a OFX "file" to QIF (Quicken Interchange Format) converter.  It 
was written as a second code example, and as a way for to
immediately provide something usefull, as an incentive for people to try out 
the library.  It is not recommended that financial software use
the output of this utility for OFX support.  The QIF file format is very 
primitive, and much information is lost.  The utility currently
supports every tag of the qif format except the address lines.  I do not plan 
on working on this utility much further, be I would
be happy to accept contributions.
usage: ofxtoqif path_to_ofx_file/ofx_filename > output_filename.qif

Design goal of LibOFX:
-Simplicity:  OFX is a VERY complex spec.  However, few if any software needs 
all this complexity.  The
library tries to hide this complexity by "flattening" the data structures, 
doing timezone conversions,
currency conversion, etc.
-Data directly usable from C, without conversion:  A date is a C time_t, money 
is a float, strings are char[], etc.

LibOFX was implemented directly from the full OFX 1.6 spec, and currently 
-Banking transactions and statements
-Credit card and statements
You should read the file doc/implementation_notes.txt

For the 1.0 release this summer, it should also support
-Header parsing
-DTD autodetection
-OFX 2.0
-Currency conversion

Somewhere in the future:
-investment transactions.
-Decryption, if someone has a need for it and provides sample files.

This is an ALPHA release.  It really works and is not vaporware, but the API 
is still subject to change, and several OFX structures are not
fully implemented, notably currency conversions and the <PAYEE> aggregate.

Currently this project is a little light on documentation, it will improve 
quickly.  However, you should learn all you need to know to get
started by reading the libofx.h file in the INC directory, and ofxdump.cpp in 
the ofxdump directory.

Call for help:
-Please note that despite a very detailled spec, OFX is by nature very hard to 
test.  I only have access to the specifications examples, and
my own bank (Desjardins).  But I need people to run as many ofx files from 
different banks as they can thru libofx, and report the result.
-This is my first attempt at writing an API.  I need comments from financial 
software writers about inc/libofx.h  What do YOU need?

Benoit Grégoire