Monday, April 30, 2012

Introducing the Zombie Open Source Library

Way back in 2003, and almost by accident, I started getting involved in QuickBooks SDK development. The QuickBooks SDK, usually known simply as "the SDK", allows developers to read and write QuickBooks data. Over the years I've done quite a few SDK projects, including a billing and invoicing interface, an Excel-based fulfillment system, and many simpler projects that provide essential data connections and reporting for my clients.

Working with QuickBooks was an obvious choice because my business focuses on small business clients, and small businesses love QuickBooks. Unlike some applications QuickBooks does not allow direct access to its application database. All data reads and updates must go through one of several tightly controlled access methods, with the SDK being the most common. This makes simple data access scenarios surprisingly complex; it can take over 20 lines of code just to set up a data connection!

Over the years I developed a common library that takes the rough edges off of the SDK development process. This includes connection management, data validation and access, and working with sets of returned data. Over time I developed techniques to manage the multi-step data update process that are often necessary in SDK applications. I've taken this library from project to project, updating and debugging as I tackled different SDK scenarios.

Recently I had a discussion with a client that got me thinking about this library in a completely new light. My contracts have always protected this code, which was created outside of project time, from any IP claims by clients. My intention was always to provide this code to be used freely by clients, but to reserve the rights so that I would not be restricted from sharing the common library with past, present, and future projects. However, while my contracts had explicit protection for my rights, there was no grant of use for my clients. "How, " my client asked, "can I let you put this code in my product when I have absolutely no rights to use it?" Incredibly, he was the first person to ask this question after almost 9 years.

The answer to this dilemma was obvious: the code should be open sourced! I had toyed with this idea before, but had always put it on the back burner. And now, at long last, I am pleased to announce the Zombie open source library for QuickBooks development. Please feel free to get a copy from github.

Over the coming weeks I will be blogging about specific Zombie features and how they came about.