epesh
I'm Joseph Ottinger, editor of TheServerSide.com.

Calendar

««Nov 2009»»
SMTWTFS
1234567
891011121314
15161718192021
22232425262728
2930

My Bookmarks

My Top Tags

                                       

Mailing List

My RSS Feeds








Search Box

 

You're in a maze of twisty passages, all alike

posted Tuesday, 9 March 2004
Sitemesh is really cool. Really, really cool. I've been a fan ever since Joe Walnes first published it; it was fast, it was easy, it made sense, and it dressed up vanilla pages beautifully. It's one of my "gotta have" libraries in web development - I don't think I have any functional sites that don't use it.

That said, it's got issues.

I'm working on a huge number of products, all built on each other somehow, in a maze of dependencies. Some are support tools. Some are core libraries. Others' dependencies are ephemeral, things for which I just want things to be a certain way.

Since Sitemesh is such a core library for me, any issues it has tend to reverbrate up and down my entire development tree.

Well, last week I realised that inline decorators were brittle: if you decorated a resource that used an internal forward, well, that set the response state up such that no other resource could do a forward. That's annoying. It's not a killer, but golly, decorated resources shouldn't change the state of any resources decorated in the future - and the "main resource," the page being decorated in the first place, shouldn't affect the decorated pages either.

Filed, fixed with a patch on Opensymphony's issue tracker. (SIM-83, if you're interested.)

Now I'm in another rat hole.

Sitemesh is brittle on Tomcat, as well, because Tomcat uses outputstreams for static resources... and PrintWriters for dynamic resources. THIS one is more important, because it affects Tomcat users, which means "most servlet container users." I originally filed a bug on tomcat for this, but it was rightfully rejected. That means that Sitemesh itself needs to compensate.

I know how to fix it, but now I'm in a maze of the original code, which wasn't really anticipating the problem very well. It's maddening, and I'm very close to scrapping the entire section of code causing the problem, and repairing it from the beginning.

The hard part about this is time. I don't normally use Tomcat myself, so this is eating time I don't really have to spare. :(