[I'm not subscribed to the list, but I do read it in the archives.] Date: Fri, 17 Oct 2003 11:44:33 -0400 From: Jamie McCarthy <jamie@mccarthy.vg> Subject: Re: [secret-list] /. hubris superluser@frontiernet.net (Andrew A. Gill) writes:
For a while, users of Dillo (<http://www.dillo.org>) have been having trouble reading Slashdot (<http://slashdot.org>). Looks like a misplaced </td></tr> is to blame. Anybody want to pester Cowboy Neal?
Well, this is one of the fun things about working on a public project: I get bug reports through more than just the usual channels. Hi, I'm Jamie, I'm the one who wrote the bug, and I'm the one who will get around to fixing it... eventually. There's no immediately simple way to fix the HTML. What's going on is actually kind of interesting. Slashdot runs on Slash, which is a publicly available project used on hundreds of other websites. The look of Slashdot and its front-page table layout is fairly different under the hood from the layout of "Slashcode," which is the default theme that we ship. These differences are mostly encoded in template files, which are data chunks arranged mostly hierarchically that can be selected in all kinds of interesting ways. That means, sadly, that changing one template has many repercussions. Obviously I know where the buggy HTML output is; that's what that commented-out <!-- /TABLE --> tag is doing there. But I have to think about what that change would do not just to Slashdot, but to the Slashcode theme generically, to the sites that use that theme as-is, to the dozen other sites my company runs that have modified that theme, to the who-knows how many other sites that strangers run that have modified that theme, to "light mode," to the three or four separate scripts that use the template, I have to test with the pre-rendering caching, etc., etc. Slashdot's HTML layout has always been broken. Early this year I took it upon myself to fix it and quickly realized that there was no good way to fix just Slashdot, without either breaking Slashcode as well or introducing a large number of copy-and-pasted code as a difference between the two that would have to be maintained. What I did instead was write code for the Template Toolkit that lets these dozens of templates build the HTML tables dynamically. As new <TR> and <TD> tags are laid out, variables are incremented and decremented. By the time we get to the bottom of the page, the code knows how many <TD>s and <TR>s it's got to close, and how, in order to make the HTML all nice and pristine. That way, Slashdot.org and Slashcode.com can have wholly different columnar layouts and the low-level templates don't have to know about any of it. The CPU overhead is minimal, and overall it works great. Except there's one bug. It doesn't keep proper track of the tables it's building. It dumps errors in the log so I know about where it is. But it's difficult to narrow down. In my defense, it was broken before I wrote this code, and while it's still broken now, it's broken *less*. But it's broken *differently* and of course there is one browser that (unlike every other browser ever written) isn't smart enough to handle malformed table tags. <http://www.dillo.org/> This is the part where I rhetorically ask why anyone would write a web browser from scratch, the goal of which is to render 100% syntactically correct webpages really really fast. Are there not enough existing web browsers whose goals are to render pages really really fast? Is it perhaps not widely known that there exists, somewhere on the web, HTML code which just might not be 100% exactly correct? Is it smart to build a nitro-burning funny car dragster to carry your groceries and then complain to mailing lists about the potholes on Main Street? When version 0.7.2 of the funny car handled the potholes just fine, but 0.7.3 explodes on contact, should its designers necessarily be focused entirely on the potholes? And should anyone be surprised that writing a web browser is hard? If I could find a way to ask those questions without sounding like I was shifting the blame off my own fool self, I would. It's one of those things that is probably a nice easy single day of work. But I can't remember the last time I actually had a whole day to work on something. Our new load balancer is choking our webheads with unACK'd SYN's and I'm not sure whose fault it is. (And of course the new load balancer is named "pound," only the most common word in the English language, so good luck Googling for anyone else with the same problems.) Our new sites being launched are extending the code in ways it wasn't built for and we're having to scramble. DB replication on one of those new sites went down this morning, and while we built some kickass code to failover to the master, we hadn't had time to get that running yet. Oh, and either my ISP or my home router/gateway is flaky, so I keep falling off the internet. And of course, the day after I fix the HTML 3.2 table layout bug, I am quite certain my boss will email me to say it's finally time to start working on the switch to XHTML and CSS, which we've been planning for a year and just haven't had time for. So yes, I'd love to fix your bug. I don't like emitting broken HTML code either. I'm a big fan of adhering to standards, and I'm a big fan of not having my code embarrass me in public. I hate feeling like a jackass. But I have other things to worry about, and you have other browsers to choose from that render Slashdot just fine. Meanwhile, your bug sits right here, at Priority 5, where it's sat since we first diagnosed it in April: https://sourceforge.net/tracker/?func=detail&aid=719813&group_id=4421&atid=104421 -- Jamie McCarthy http://mccarthy.vg/ jamie@mccarthy.vg Date: Fri, 17 Oct 2003 12:50:48 -0400 From: Jamie McCarthy <jamie@mccarthy.vg> Subject: Re: [secret-list] /. hubris superluser@frontiernet.net (Andrew A. Gill) writes:
Well, this is one of the fun things about working on a public project: I get bug reports through more than just the usual channels. Hi, I'm Jamie, I'm the one who wrote the bug, and I'm the one who will get around to fixing it... eventually.
Do you mind if I forward this message to the Dillo people?
If you do, mention to them that I'm not picking on them. This bug is my fault and I'll fix it. I wish them luck and I'm glad they're doing what they're doing (anyone writing GPL code is OK in my book). It's just that I won't fix it until it gets to the top of my priority list, fact of life, and there's a lot of other things up there... :( A workaround meanwhile is to try light mode, which you can get to past the black window with: http://slashdot.org/index.pl?light=1 http://slashdot.org/users.pl?op=edithome&light=1 and then check the "Light" box, and Save to make that your pref. -- Jamie McCarthy http://mccarthy.vg/ jamie@mccarthy.vg