(second attempt at posting this - I took too long the first time...)
Basically, I think the real challenge is getting programmers out of the design, which is why XOOPS uses templates, themes, and smarty. And, I think the designers need some guidelines for proper theme development.
Here's some things I have discovered -
1. Elements, Classes and IDs are not always used correctly in XOOPS (Core and Modules). You can often find the same ID tag on more than one element in a page, which is not valid - this should be a class, instead.
2. Module styles have set attributes for html elements that affect the entire site, not just the module's appearance. If you are going to style an element in your module, at least give it a class or ID so you don't break someone else's theme.
3. Inline styles make it necessary to edit the templates to get control of the style - not a good thing.
4. New selectors that need to be added to your theme's stylesheet so the module/block displays correctly are also not a good thing.
5. Having stylesheets all over the site is also not a good thing (how many places do I have to go to change the appearance of my site and the modules I have selected?)
6. Lots of nested elements makes it difficult to track down just what is affecting an element's appearance. Using WebDeveloper in Firefox (Outline Selected Element) sometimes doesn't get to the element before it goes out of the window....
7. Different browsers display styles differently. Trying to create a stylesheet that works in all browsers can be maddening. A method for having multiple stylesheets to handle browser differences would be good. Here's some example code:
if (stristr($_SERVER["HTTP_USER_AGENT"], "Opera"))
print "stylesheet" href="".$sheet."opera.css" type="text/css" media="screen">nt";
else if (stristr($_SERVER["HTTP_USER_AGENT"], "Netscape"))
print "stylesheet" href="".$sheet."netscape.css" type="text/css" media="screen">nt";
else if (stristr($_SERVER["HTTP_USER_AGENT"], "Gecko"))
print "stylesheet" href="".$sheet."mozilla.css" type="text/css" media="screen">nt";
else if (stristr($_SERVER["HTTP_USER_AGENT"], "MSIE"))
print "stylesheet" href="".$sheet."msie.css" type="text/css" media="screen">nt";
}
With, or without tables, all of these things need to be addressed in a XOOPS module/theme design document.