OFX for Ruby

Okay, it’s official. I’ve put my money where my loud mouth is; my first open-source project. I know what you’re thinking: so?

Well, for me, this is an important step. I’m a leecher. I’ve been a leecher since I was Icarus on Capricious Alliance (I tried to find any reference to this Baton Rouge-based BBS system for href-ing purposes, but alas). Open-source challenges me to stop leeching, to give something back, to do more than lurk and hide.

I’ve been working on a home management system in Ruby for some time now. It’s my classic side-project/magnum opus, a toy in Ruby and Rails that’s growing into something that might be worth it. It’s far too early to tell, and definitely too early to release anything, or even put the code up for public perusal/contribution. It’s not that I’m unsure about my intentions; this project/system will definitely be open-sourced in the long run.

One of the major subsystems of the home management system is the finance package, which includes a full double-entry accounting package (inspired by Fowler’s Analysis Patterns (1997) — an incredible read with updates still coming on his website). The overriding principle of the home management system (I’m just calling it “Home” for now, but I’m sure that’s too broad of a name to trademark) is to bring enterprise-level systems to the home. I also grew interested in building an accounting package for Linux, for which the pickin’s are indeed slim (no offense, GnuCash, you guys have a great product, but there must be options!)

After going down the path of building a manual journal for entering transactions and a very rough QIF import utility, I knew I’d never use the thing myself (and would never recommend it to anyone else) unless it had online banking. In the US, this pretty much means OFX. So I needed a parser.

I didn’t know the first thing about parsers, so I scoured open-source land looking for any kind of OFX implementation that might get me started. I had the peculiar constraint of insisting on pure Ruby, so this left libofx and friends right out (although, trust me, I tried to sell myself on it). Other than that, I found the ofxrb project that was in it’s adolescence, run by Adam Williams. I touched base with Adam, but I think we had some different goals in mind. So I went it alone (for now), and developed OFX for Ruby.

Even now, it’s capable of exchanging nearly all of the read-only message sets with an OFX 1.0.2 financial institution (which was my first immediate need). I am explicitly going to have to steer clear of the destructive message sets (bill payments, transfers, etc.), because my fanatical need to write and run tests and my critical lack of a test server are fundamentally incompatible at the moment. (Open solicitation to any financial institution with a friendly attitude to open-source: give me access to a test server and you won’t regret it!)

Thanks to the administrators of RubyForge (Tom, I think it was) for the excellent turnaround on provisioning the project and just for having a great system in general.

Leave a Reply