Needs: As you already know, the new skin, Flamingo, is based on Bootstrap (
http://getbootstrap.com/) which use a CSS Preprocessor to have more
flexibility. There is 2 majors competitors in this field: LESS (
http://lesscss.org/) and SASS (
http://sass-lang.com/). Bootstrap is using
LESS but they also provide an official port for SASS.
We need to execute one of these preprocessors at the runtime, to recompile
the Bootstrap CSS according to the current Color Theme.
After a long thread [1] where we have compared the 2 preprocessors, and
after some discussions on IRC, **I am proposing you to choose LESS**.
Why:
* It is the original preprocessor used by Bootstrap, and so the majority of
Bootstrap Themes that we can find on the web provides LESS sources. If we
want to be able to use all these themes, using LESS is clearly an advantage.
* Caty, Denis and I have a bit of experience with it. Bluebird [2], Junco
[3] and the current Flamingo skins are built with LESS.
* The syntax is not too close to Velocity, meanwhile SASS is.
* The Java integration, using Rhino, works quite well. Although there is an
issue [4] for which I have written a patch. I hope the LESS community will
handle it.
* It looks a bit more popular than SASS.
Here is my +1 for using LESS.
For the record, this is what I am going to do:
* Implement a cache to only compile LESS files when needed, because the
computation is costly. The cache will be flushed only when the current
color theme is modified.
* Write new components and a script service to compile LESS files that are
present in the skin directory, partially parsed with Velocity. In the
future, we might want to integrate it directly in the Skin Action, but that
means we need to change oldcore.
Thanks,
Guillaume (Louis-Marie)
---
[1] The thread "[Proposal] Integrate LESS css in XWiki":
http://markmail.org/message/hw45txkv2vk5dnqw
[2] Bluebird Skin:
http://extensions.xwiki.org/xwiki/bin/view/Extension/Bluebird+Skin
[3] Junco Skin:
http://extensions.xwiki.org/xwiki/bin/view/Extension/Junco+Skin
[4] LESS issue:
https://github.com/less/less.js/issues/2005