Introducing Goiardi, an in-memory Chef server written in Go

Some of you are aware that I’ve been working for a few months on an
in-memory chef server written in Go (basically, it’s like chef-zero, but in
Go). I ended up holding off on making a formal release for it until I got
search working, which ended up taking rather longer than I expected.
(“It’ll be fine, I said. Write a search parser, I said!”)

It’s reached a point, though, where I can make a formal 0.2.0 release. All
the major chef bits are up and running, search (except for sorting and some
weirdness with fuzzy and boosted searches) works, and it seemed like a good
point. It performs pretty well against chef-pedant too, except for anything
related to authentication and permissions. There are a few tests where
chef-pedant is unhappy because of minor JSON formatting differences or
different error messages, but in those situations goiardi does the right
thing otherwise.

It works pretty much like chef-zero does right now, so it isn’t that useful
in and of itself at the moment. Pretty soon though I want to add config
file support and the ability to freeze the in-memory data to disk when the
program quits, so the data can persist across restarts. Further down the
road, I’d like to also get authentication and permissions going, let you
hook it up to a real database and solr, that sort of thing. It should, at
least, build on any platform go supports (natively or with gccgo - I’m
going to test it out on one of the Solaris derivatives soon).

Anyway, if anyone’s interested, it’s at https://github.com/ctdk/goiardi.
Take a look, bang on it, see what breaks (and, possibly, what doesn’t).

-j