Kid 0.4

I’ve been quietly hacking away on the Kid template system. There’s been two releases with a lot of new features and changes so I’m playing catch-up here. I have a lot to write about so I’m going to cut this up into a couple of posts - I’m trying to break this tendency I have to let posts run too long.

First off, Kid 0.4 is available. Go grab it right now. To summarize what I believe to be the major events of the past month or so:

Licensing Schmishensing

There’s been a license change from GPL to MIT. This was not fun, and I don’t like licensing non-viral, but it just wasn’t going to be possible to continue with the GPL. I stole some code from Quixote, which is licensed under a weird GPL-incompatible license. It’s a free software license but is GPL incompatible due to the BSD License Problem. I could have reimplemented that code but there were more problems on the horizon and dealing with these licensing issues has eaten quite enough of my soul; I caved.

After researching this a bit, asking some questions, and having people generally run away in terror at first mention of licensing concerns, I’ve come to the conclusion that the GPL is… umm… looked down upon, for lack of a better word, in the Python community. Maybe everyone but me is working academically or getting paid to write free software but I’m not and I do not like the idea of giving up the mandatory share-alike provisions of the GPL. If anyone cares to enlighten me on why I shouldn’t be diligent in ensuring that derivative works stay free, please shoot me a note. I would love to gather any and all opinions on problems with the GPL and Python software and present them in a separate post. There’s a real lack of commentary on licensing issues around Python based free software, but not for lack of issues.

Mild Interest on the Web Framework Front

Tom Schwaller sent a message to the webware-discuss mailing list with some nice words on Kid; positive discourse ensued. I followed up to make clear my intentions: I want Kid to work out-of-the-box with every python based web framework with more than two users.

Part of that message is worth repeating here as I cannot express enough my feelings of importance in ensuring that Kid be the easiest generic templating system to use in any popular web framework:

If anyone is thinking about taking a stab at [getting kid to work with webware], know that your time would not be wasted. I’m committed to changing anything necessary with the base kid package to have things work smoothly with webware (and other web frameworks) and I’m also not against distributing add-on type functionality with the kid distribution.

I would love to have a few maintainers with access to kid cvs that would be able to add support for and/or track changes to different web frameworks to make sure kid is really easy to use under any web framework. If you happen to take a stab at getting Kid to work nicely with Webware, please consider sending over any patches, support files, or examples.

The language and API is beginning to stabilize and I plan on shifting time over to playing evangelist with the web framework crowds.

Approaching Simple

In 0.3 we moved the basic framework from SAX to an pull-style generator approach based on ElementTree. I really like ElementTree’s simplicity. It’s a breath of fresh air compared to most other DOMish Python APIs.

In 0.4, I feel like we’re finally approaching “simple” in terms of both building useful templates and invoking templates from Python code. I can’t wait to take down the THESE INTERFACES WILL CHANGE messages posted everywhere on the Kid site; I think we’re close.

In fact, I’ve just decided to work a lot harder for backward compatibility from this point forward as I think the language and python interface are pretty nice in 0.4.

I’ll have more on language and interface enhancements in the next few days. I plan on running a couple of articles on passing things around from Python to Kid and back again in an attempt to build up more tutorial-style documentation. I’m cutting myself off right here as this has already ran longer than I had hoped for.