XML Templating in Python Evolves
In 2004, I was fairly active in the Python community. A good chunk of that community was concentrating on building web applications and there was a very noticeable unrest with established methods of development. My interest and development efforts were dominated by an unhealthy obsession with True Web Architecture and a strong contempt for where the broader industry was moving with capital-W Web Services, SOA, and a vast array of other pseudo-tech nonsense.
We can look back at 2004 as being a sort of renaissance period in web framework development. We said to hell with bad frameworks and made a conscience effort to revisit past assumptions about tool design. Rails was launched, adding many more important pieces to the puzzle and would be followed by a rush of demand in the wider development community for fresh ideas on web development.
This environment turned out to be fertile ground for an experiment I had initially assumed would end up as a mere novelty: simple, XML-based templating. The basic idea was to create a simple template language that would make it possible to avoid being called a bozo when producing XML but that also stayed true to the simplicity that led template languages like PHP to become the dominate system for generating web content.
Kid was received with equal parts praise, angst, and sheer disinterest. We quickly added a couple committers and continued to refine the engine and language over the next six to nine months. During that time I think we won over a lot of the initial skeptics. That’s not to say that everyone rushed to use Kid but that the value provided by such a system was becoming more apparent.
It was around this time that I became fully aware of a few issues with Kid’s design that really bothered me. We had a priority 1 ticket open for better error reporting for about six months. I would look into the issue at the beginning of each release and I would be pushing it at the end of each release. Such minds as Ian Bicking’s had tried to fix the issue but to no avail. There were issues with performance that seemed like they should be easy to improve but resisted repeated attempts at optimization. I came to the conclusion that there were multiple severe problems with the fundamental design of the implementation and that fixing things like error reporting and tweaking performance would actually require an entire rewrite.
But I had neither the time nor the desire to take on a rewrite. In fact, I was struggling just to keep up with the mailing list and to fulfill my basic maintainer duties. I had left my comfy salaried position at Big Co. in order to pursue fame and fortune at a startup. The time I was spending with Kid or even Python dropped significantly. It was simply no longer feasible for me to continue development on Kid.
And then, get this, Kevin Dangoor approaches me and is dead-set on using Kid as one of the core components of TurboGears. It was obviously an important day for Kid. As luck would have it, a long time committer, Christoph Zwerschke, and a relative new-comer, David Stanek, stepped up to maintain the project. I can’t explain how much these guys were able to do with so little direction. I mean, I could explain it but I won’t because I’m frankly embarrassed by the lack of support I provided while the project was transitioning. David and Cristoph are all-stars in my book.
At this point my involvement dropped significantly and I’ve barely been able to keep up with progress. But I did take note when Christopher Lenz announced a new project named “Markup” that was heavily inspired by Kid but that took a slightly different approach in the basic design. I looked into the project briefly and immediately got the sense that Christopher had taken exactly the approach I wish I had in hindsight and that the design and implementation were already very solid. The rewrite was just there.
I decided to stay quiet for awhile. I hadn’t been involved in Kid development for quite some time and I felt that there was some basic vetting that needed to occur before I could recommend that people start thinking about what would become Genshi as Kid 2.0 - but that’s basically what happened anyway. As the original and primary author of Kid, I’m extremely happy to now endorse Genshi as the state of the art in XML based templating. By all accounts, it is a superb system that takes Kid to another level and has already grown an impressive community.
I’m honored to have played some part in the evolution of this still-budding technology and regret not having more time to contribute to it.