Last night I released the second beta of Adjector, our fast, flexible, open source ad client. There's a couple of small but important fixes: precaching now works correctly (I don't know how it even worked before), and rendering is a bit more stable.
There shouldn't be any trouble updating, no db changes occurred.
Well, it turns out that I don't know how to use SQLAlchemy correctly :) which is the reason for this second beta release. We had a couple of problems with precaching, where old cache objects weren't getting deleted correctly, and the precacher was being run for every group on every change. It turns out you can't do:
1query.filter(object.value in [item1,item2,...])
It hadn't erred, so I just forgot about it completely without looking up the right way to do things. In case you're curious, the right way is:
The worst thing is, doing it wrong apparently resulted in other things being done to the database... certain cache objects were being set as text, or as not text, when they shouldn't have been. Definitely weird.
I also fixed a bit of a bug with the renderer: this problem you should never see if everything is working correctly, but there is a possible case where when you are looking for multiple text creatives, an appropriate creative might never be found. It now will no longer error or cycle forever looking, but just give up after a few (1000) tries.
I'm glad to "officially" release our open-source ad server, Adjector.
It's been around for about a year in a semi-stable state; ad serving worked fine but there was almost no UI to speak of and click tracking was super broken. I've removed our attempt at a GUI using GWT and written a nice simple HTML one; and fixed form validation, click tracking string substitution, and a bunch of other bugs. Perhaps most importantly it also finds and displays an appropriate random ad three times faster, including view tracking (from about 55 ms to 15 ms). This is due to the weighted probabilities being pre-cached with the new design.
My goal with Adjector was to create a fast, slim, flexible, open-source ad server, which AFAIK didn't exist before. There's quite a few other open source ad servers, most based on phpAds. But PHP doesn't make for a great anything server, and none of the other servers that I know of can integrate directly into your application and allow the client to only make one request, much less allow your application to share the same database and connections. So I think I've accomplished my design goals here, Adjector is so fast that you can't even tell it's there, it has all sorts of ways to weight ads, it can display and randomize text ads, Adsense-style, and it is Python and open-source so it's easy to hack on.
So if you need an ad server for your site, and you can get Pylons going, Adjector might just be what you're looking for. And we're definitely looking for more developers, too.