Alec, I was unsure if I need to publish here or it's better if I post in bugzilla, or in a new specific post...
Let me know if I need to move it.
I still didn't find time to review OMP/OJS 3.0 in deep (I just took a fast brief look so sorry in advance if I'm talking rubbish or some points were taken in consideration in your new approach) but I know well former 2.x versions and I can say the main problem was in the HTML code that is not created thinking in making themers' live easier.
I mean, more div-grouping is required, css IDs&classes are inconsistent (or worst when missing) and some stuff is harcoded (the first think comes to my head is ">>" for "li" tags)... and this is an incomplete list.
Fixing HTML is, IMHO the "priority 0" of the work that need to be done with OxS theming (in other words: a full and detailed template review is required).
Alec posted at bugzilla the following comment:
> Need to consider how to treat "default" theme -- is it actually a theme, or should it be always included and selectively overridden as per OJS?
This is a good question. In short: Both.
We need to offer a basic theme that could be "selectively overridden".
I'm sorry to say that default theme (OxS 2.x) is useless when not an annoyance. From my experience, you spend most of the time overwriting styles instead of building what you need.
Any case, we need to distinguish between "default" and "base" themes. Alec, I know this is perfectly clear for you but let me clarify for other readers.
The "default" theme will be the one enabled by default when OxS is delivered so it will be the most usable, solid, nicer... the most impressive theme we have (and by the way, I suggest OxS to hire a designer to create this default theme).
In the other hand, the "base" theme need to be the most boring one... need to be the "minimal expression", need to be those CSS that we are completely sure will be required in absolutely every theme build in future. It very means very, very basic styling, but also normalization, cross browser styles and responsiveness (normalize, reset, modernizer...) etc.
Till now I was talking about how I think OxS theming system could be fixed (a first/fast approach). Let me talk a little about how to improve it:
As I pointed in former posts, would be nice to give themers a better control over the CSS that are loaded with functions as deleteCSS() or resetCSS() but this is just the beginning. In future we will need a template system that allows themes to build variations based on inheritance and functions to get all the control.
Let's see an example: What happens if I like to move the menu to the footer in just one magazine of my OJS?
Right now, with OxS 2.x the only solution I know now is the "mojo" approach (viewtopic.php?f=8&t=7578
)... but also with "mojo" it means that we need to keep different templates for each "themed" magazine and it makes maintenance a little bit more difficult.
I believe template overwriting (or to be more precise "inheritance") it's an important improvement, a "must be" in future for every OxS product.
I'm not a big fan of smarty but if we are following with it (I full understand a change here means a huge task and in confidence I'm unsure it will mean a real improvement in performance and features) I believe we need to migrate to version 3 to take advantage of the "Template Inheritance" features.
Here you have a very biased list with some opinions, comparatives and features of different template engines to start the discussion:
We also need to establish CSS coding standards (for code and comments) and best practices.
Here I publish some links as an inspiration (or to adopt directly as our own standards).
There are a lot of CSS "frameworks" but today "bootstrap" would be my suggestion (again IMHO).
Taking advantage of http://bootswatch.com
would be a very nice feature for every OxS... and this is only one of the benefits of bootstrap.
I didn't know the work done in this sense by CUDevMaxwell&tikidream until today (viewtopic.php?f=28&t=9464
), but it could be a very good starting point. If bootstrap means we need to modify OxS code I think we must adapt it to support it natively.
It finally drives us to the CSS preprocessor: Although SaSS&Compass is richer in features I'm happy you decided you use LESS, because:
* Bootstrap compiles faster with LESS
* LESS is written in JS, whereas SASS is written in Ruby. We also have lessphp compiler at server side.
* "LESS is simple"
As a themer...
* I would like a system that let me start a theme "from scratch".
* I would like to have a system that lets me start a new "subtheme" as a little variation of a former one.
* I would like to have a built-in structure to build responsive sites.
* I would like to have a CSS preprocessor.
* I would like to have a better documentation and rigid coding standards.
* I would like to have a bigger gallery of themes as starting point.
So in conclusion, I think would be wonderful that OxS base themes would be a bootstrap over smarty 3 and a set of new theming functions that could be preprocessed with LESS.
Sorry for the long post. Hope this makes sense to you... at least as an starting point for the discussion.