I have actually been thinking about this quite a bit and have a number of thoughts, so I apologize in advance for how long winded this is ...

I think it would be good to get a little more discussion of exactly what we think people want to be able to customize in a theme without having to edit templates. I think you gave all the right examples, but I'll try and group them into categories and add a little more detail ...

1. CSS - this could be as simple as some color changes and maybe font types, or as complex as allowing full css customization. i consider this to represent a moderate portion of the customizations. i also think this one is the most tricky because there are a *lot* of potential items worth customizing when it comes to css and hard to ensure we are capturing all the right ones.

2. Images - places where people want to insert their own image to be used in a specific place in a theme, like in the header or sidebar, or maybe an icon posted next to each entry title, etc. i would consider this to represent a small part of the customizations. there are probably a handful of situations for this one which will make up 95% of the use cases.

3. Widgets - these are more complex components which add some kind of new element to the page, like a flickr photos section, or technorati info, del.icio.us tag cloud, blogroll, music selections, recent books read, etc, etc. i think this represents the largest set of desired customizations and represents for the most part what users are looking for.

4. Layout - this is technically CSS and is dependent on how the html is setup, but basically represents the scenario where someone has a theme that they basically like but want to change it from a 2 col to 3 col layout, or move the sidebar from one side to the other, etc. i think this represents a very small section of desired customizations.

As you said in the proposal, using theme properties will not solve the situation for Widgets (#3) and I would also say that it would be very hard to solve the Layout customizations (#4), so I would claim this proposal is for solving the CSS and Image customizations.

So if we consider that refined problem set I would say that I agree that theme properties would solve the custom Images (#2) well and would be adequate at solving for CSS customizations (#1). However, even though theme properties would solve both of these situations I think there are a number of potential pitfalls ...

1. There is nothing built-in to help ensure that themes are property designed for customization. Since it's entirely up to the theme author to define the set of available customizations then the potential customization for the theme is up to the theme author. This seems risky to me because if someone designs a really nice theme but doesn't offer much in the way of customization then we are right back where we started with users having to edit the templates to accomplish what they want. Granted, that this may not actually happen that much, but it's an issue of control. We have no way of ensuring that themes are built with an adequate set of customizations.

2. Increased complexity in design and maintenance of themes. Creating a theme for proper customization now takes a reasonable amount of additional effort, especially for simple designers who aren't interested in maintaining large sets of customization variables throughout their templates. So theme designers are now taking on the additional complexity of having to break down their designs and identify all the potential customizations, convert them into variables, and that makes it harder to work on themes. So as a designer you are no longer setting colors, fonts, etc, in the templates but instead in the property definition file. To me this sounds like a discouraging influence for theme authors.

3. Duplicate properties. There is a potential for a theme author to create a property which is either already provided as a built-in part of Roller, or will become a built-in part of Roller in the future. For example, the user profile picture. Right now, Roller doesn't manage that as a built-in attribute of a user or weblog, so a theme author may create a property for "user.image". But then in a future version of Roller we add in that data as part of the set of built-in data and now we have duplication. I think this becomes a point of confusion for users because they then have 2 places to manage the same data and often times that leads to questions like "well, i set XXX here, so why isn't it showing up on my blog?"

4. Limited control/validation of property input. Because the theme properties are defined by the theme authors then we have a fairly limited ability to do any kind of validation on data input for properties. So for example, if a property takes a simple String value then we have no way to A) ensure that the user inputs something valid and useful to the them and B) we have no way to ensure that users don't input something malicious for some reason.

5. Theme properties don't solve for Widgets, which I believe is something that users are more interested in.

So, while I think that this proposal would work to solve part of the problem of easing template customization, in general I am not really sold on this specific approach. The biggest cons for me being that we are making theme design more complicated yet still not ensuring that we are providing all the customizations that users want, and that this doesn't solve for Widgets at all, which I think is what I think users want most of all.

I really like the breakdown on approaches to customization that you blogged about and I would say that IMO we would be better off working on the Widgets thing first. I think that is something that would have a much higher value for most users and would also provide an immediate benefit to all Roller blogs, even existing ones. So I might suggest that we think about focusing this effort more on solving that part of the problem first, before doing the theme properties or other ways of solving for images/css customizations.

-- Allen



Dave wrote:
One of the things that new bloggers tend to complain about is theme
customization. It's just too hard to customize the look and feel of
your blog. And that's true even if you just want to make a couple of
minor tweaks like changing a banner image, changing a background color
or adding a "widget" to your sidebar (e.g. a Flickr badge of most
recent photos or an RSS listing of recent links from del.icio.us).

With Roller and most other blog servers I've used, you can configure
some aspects of your blog's layout and appearance via a web UI with no
HTML, CSS or template coding.

With Roller and others, you can configure these things:

   * Change blog title and description
   * Configure the number of posts displayed on main page
   * Change from one stock theme to another
   * Add links to your blogroll
   * Add new categories to your blog

For everything else, you must customize, i.e. edit templates and deal
with HTML, CSS and a specialized template language. For non-geeks,
that can be pretty daunting. We should improve this situation by
making it possible for theme designers to make common customizations
easy -- i.e. to allow a user to configure a theme via a nice friendly
UI rather than customizing it via template editing.

Read the rest here:
http://rollerweblogger.org/wiki/Wiki.jsp?page=Proposal_ThemeProperties

Please respond with comments here on the list.

- Dave

Reply via email to