The FIX part seems reasonably robust, but still isn't doing much validation. The network part is fairly basic, but works. The exchange... well... it's OK for a single client, but seems to have some issues with concurrency and can occasionally deadlock.
I've had two clients trading with each other, and I've learned a lot about the protocol - and been surprised by how little documentation is available for some of this. Which is as much as I could have hoped for in a weekend, really.
The biggest tasks still to handle are:
- * Validation of the FIX messages
- * The remainder of the FIX4.0 standard
- * A proper multithreaded exchange
- * Rearranging the code into subpackages
- * Implementing the FIX4.1 and 4.2 protocols
As promised, the code - such as it is - is available here. I've decided to call it FIXME as a pun on the protocol and the state of the code. I'm releasing it as public domain, so if - God forbid - anyone wants the code, they can have it without attribution.

As we struggle to write code in the land of free speech or no speech (I also would plead the 5th after some of the pub crawls I've had in the UK), I wanted to see what your plans might be with reciprocity.com. You see our newborn company is named reciprocity and we'd like to ensure the earth can keep growing that barley and hops for future generations. Since it looks like the creation of the site reciprocity.com came after a wild, drunken weekend with your mates and has since been abandoned, we were hoping you would release it to us. We have about as much cash as to buy you a pint, so maybe we could knight you on behalf of the USA. Please reply (I bet the guys a beer I would at least hear from you.) Thanks, Jennifer@recipro.com