An Adventure in Increments
And so, after many trials and tribulations, our heroes managed to finally release eChef 1.1. Peace and joy spread across the kingdom, and there was prosperity for generations to come.
The 1.1 release doesn’t have a lot of fancy new features. There are a few bug fixes, but thankfully we haven’t found very many things that need fixing. The big change in 1.1 is the database backend. Much of eChef’s functionality is closely tied to its database, so this changeover was not an easy task. But most users upgrading from 1.0 probably won’t notice much difference, and (assuming they don’t read release notes or my blog) may be left wondering what’s changed that even merited a version increment. It’s for that reason that my primary goal with 1.1 was, quite simply, to have no regression. Time (and, in a much more direct fashion, support emails) will tell if I succeeded in that respect.
Now, please pardon me while I go into a semi-rant about technical details for the next couple of paragraphs.
eChef 1.0’s recipe library is powered by Microsoft SQL Server Express Edition, which is the free-to-use and free-to-distribute lightweight version of their flagship database engine, SQL Server. Which, by the way, is about the most uncreative name they could have given that product. It would be like calling Excel “Microsoft Spreadsheet,” Word “Microsoft Word Processor,” and Windows “Microsoft Operating System.” Really lame.
Anyhow, I use the term “lightweight” loosely with SQL Express, because its installer weighs in at a hefty 55MB, and it needs to run a system service. It was a huge pain to support; by far most of the technical support we’ve given so far has dealt with SQL Express not working properly. Its installation is too technical, and sometimes fails. It doesn’t handle the situation where the user already has a version of SQL Server installed well at all. It’s a resource hog, often causing its connections to timeout during launch—even if the user’s PC is well above system requirements. It won’t connect to databases stored on network shares (I actually understand why it does this and agree that it’s probably a Good Thing, but there’s no easy workaround and for our purposes it’s an absolute deal-breaker). And occasionally we get vague errors that just can’t be explained.
So as you can see, our grievances were numerous. That’s why we made a design decision to switch to a different engine—something small, simple, and installation-free. It absolutely had to be an embedded engine. But it still had to be fast, and it had to support all the features we demanded (or at the very least, it had to be able to emulate them, which will be the topic of a future post).
After examining a variety of options, I settled on SQLite. SQLite does everything we need it to, and very little else. It’s very small, and requires no installation or configuration. And as far as I have been able to determine, it’s just as fast as SQL Server for our purposes. As an added bonus, it’s in the public domain, so there’s no licensing to worry about.
So there you have it: eChef 1.1, now powered by SQLite. Oh, and one last thing to think about—whereas SQL Express was Windows-only, SQLite can be compiled on a wide variety of platforms. That means we’re one step closer to having a Mac version!
Commentary
I can’t wait to get to that Mac version! ;)
I so appreciate you finding SQLite and getting it embedded. It’s awesome. Just so you know… the support emails related to 1.1 number (knock on wood) ZERO.