Yes, I know it's my fault. My initial post was a kind of spaghetti of topics and now we have lots of sub-subjects over the table.
I will try to split the discussion in topics (a divide&conquer is usually a good idea) so people can talk about all of them or just the part they are more expert or interested in. If we see a topic is eating the whole discussion I suggest it will be the moment of creating a new post.
Those are the "sub-subjects" I think we are discussing right now:
1. Improve HTML structure
- Improve HTML structure
- Default VS Base theme
- Extending OxS API with new theming functions
- Theming inheritance VS CSS precompilation
- Coding standards for HTML & CSS
- Best practices/Patterns for HTML & CSS
- Adopting a CSS framework
- CSS preprocessor
"We're using much better markup, and it's much more centrally generated using standardized UI tools like grids and modals (often inheriting from JQueryUI and extending with a few additions and a PHP-backed implementation). More or less all of the old CSS will be torn out of OJS by the time 3.0 is released"
Your answer makes clear that a big effort was done in this sense and it's really good news. Congratulations and thanks.
I plan to take a deep look to OJS alpha after summer vacations.
Any case, would be nice to adopt and share "HTML coding standards" and make explicit the "best practices or patterns" used... for internal development coordination but also for 3rd pary developers that can join someday.
I know it means time, but it will be translated in a better quality in code.2. Default VS Base theme
Currently the "base CSS" provides basic structure and layout, and the "default theme" adds a fairly neutral set of design decisions such as colours and fonts. The separation between the two is basically there but will need some cleanup. When another theme is chosen, the "default theme" CSS will not be applied (unlike current OJS practices).
It is also a really good news but I think we are mixing stuff.
In my former post I suggested a "default" theme designed to impress, to be functional, to be the official image of OxS... (that could be what we have now although I encourage PKP to improve it hiring a designer or start a competition to create a more modern look&feel)
Right now (2.x) any theme is taking styles from the own theme but also from: /styles and /lib/pkp/styles
I'm really happy to hear that "default theme won't be applied" but we need more than this.
This is why I also suggested a "base" theme with only the very, very essential and without any design.
It will be extremely useful for themers as an starting point.
Sometimes themes will also need to overwrite those "base" styles (for instance to build a "fluid theme" or "responsive"...) but this will be discussed in next points.
So, what do you think about distinguish between "default" and "base" in OxS?3.Extending OxS API with new theming functions
Let me start saying that this point need to be thought in deep.
As a themer sometimes I missed functions as:
deleteCSS(): To remove an specific CSS (based on path?)
resetCSS(): Remove every CSS (including specially /style and /lib/pkp/style)
and now I will also suggest compileCSS()... but it's not only CSS functions that are required.
I'm more concerned about how to let us play with the template system and "overwrite" an existing template (header?) without hacking OxS.
Those tools will be great for themers, but also for plugin developers.
If you think it's useful we all can start an open wiki to list and discuss the functions missed.4.Theming inheritance VS CSS precompilation
In my opinion is not "one or the other"... soon we will need both because they address different issues (you wanted me to contradict you)
I understand (and also like) your approach with the CSS precompilation and I agree it's a big jump that will give us a big potential but...
this only let us play with the CSS (the presentation) but not against the templates-HTML (the structure).
This is why I'm suggesting develop "theming inheritance" to let developers build themes and plugins that can modify OxS html markup when the project requires it. I can give you lots of examples where this will be extremely useful (content plugins? layout alterations? ...)
We are not in a hurry with this but to reduce the development effort I suggested jumping to smarty 3 (that aims to be 2 compliant and include "inheritance"...).
Any case I didn't play with smarty 3 either so more expert opinions are required here.
To be fair I think this is also a point to analyze in detail before we develop a single line... maybe taking other CMS as an inspiration/example.5.Coding standards for HTML & CSS
I didn't see any answer in your post about this point. I suspect we agree that's a MUST but we need somebody to write a consistent proposal... and all our agendas are full.
I missed to say that as in PHP, here also would be nice to include comments in a way doxygen (or similar parsers) could autodocument our code.
If not, I will start adopting the standards of other communities (see former links about drupal, worpress, mediawiki...), but I really think we need to make it all explicit.
If no volunteers rise up, I can write a mix of coding standards based on former mails.6.Best practices/Patterns for HTML & CSS
It's a big task if we want to do it from zero... or we can build it collaboratively in a wiki while we are writing the code.
I vote for the wiki approach. 7.Adopting a CSS framework
"As for Bootstrap and responsive design, we will need some outside expertise: our development team is fairly heavy on back-end development skills and correspondingly light on front-end. There are already several CSS libraries included in OMP 1.0 (the same for OJS 3.0) and I would like someone with front-end expertise to look at the set we're using and determine whether which we should turf and which others to incorporate."
Any brave volunteer?
Are CUDevMaxwell and tikidream reading us? 8.CSS preprocessor
Although Alec and I are happy with LESS... I know this is a very controversial point so I put here to keep the discussion open.
I think thats all: Please, feel free to add new topics and/or refute the former ones.
Again a LONG post, but the subject is huge so I don't feel bad for this.