Hi guys.
Since we did not have made a strong analysis on SASS, I have played a bit
with it to compare.
Thomas had the intuition that it should perform faster, because JRuby is a
better implementation for Ruby than Rhino is for JS.
So I have published a little benchmark about them, that you can see there:
https://github.com/xwiki-contrib/less-vs-sass-benchmark
The benchmark is about the time that it takes to compile Bootstrap.
The results are very clear, SASS perform 2 times faster than LESS.
Since it seems easy to switch from LESS to SASS (bootstrap had written a
converter), maybe we should consider this option.
Other thing:
I would like to run Velocity on the sources of my CSS, in order to easily
integrate the color theme variables. But it is risky to run velocity on the
whole tree of bootstrap sources (just imagine that bootstrap has an "#if"
ID...).
So Thomas and I suggest that we can run Velocity on files suffixed by
.scss.vm or .less.vm, to only run velocity on some files (for example:
color-theme.less.vm) that we handle.
WDYT?
Thanks,
Guillaume
2014-04-23 17:29 GMT+02:00 Guillaume "Louis-Marie" Delhumeau <
gdelhumeau(a)xwiki.com>gt;:
Hello.
In 6.0, we have released a first version of Flamingo. It uses Bootstrap
and the LESS preprocessor during the build to create the final style.css
file.
But currently, there is a serious regression compared to Colibri: it does
not support color themes.
So I have started a proposal about the color theme handling in Flamingo,
that you can see there:
http://design.xwiki.org/xwiki/bin/view/Proposal/ColorThemeforFlamingo
My conclusion is that we need to integrate the LESS preprocesor on the
runtime. This way, we can add velocity variables (corresponding to the
color theme) in our LESS sources BEFORE the LESS preprocessor is launched.
Doing the opposite, (process velocity after LESS) causes some problems that
I have reported on the previous link.
To me, it would be a good step ahead for proposing LESS to our users.
Regarding this, some ideas are coming to me:
- it is quite easy to integrate LESS since we can use Rhino to launch the
LESS preprocessor (which is a javascript program). See:
https://github.com/sandroboehme/lesscss-java
- we need a cache system in order to not always compute the style.css
served to the user (performances issue).
- we need to add this in the "skin" action.
- in the future, we also need to modify the skinx actions, to enable it
for Skin Extensions.
We also need to agree on the use of LESS instead of SASS. I have used LESS
on Flamingo because Bootstrap has originally been written with it (although
an official SASS port exists), so this choice is not based on a strong
analysis. Anyway, it looks quite simple to move from one to the other and
it is probably too soon to predict which of these 2 preprocessors will win
on the long term.
Do you think I am going in the right direction?
Thanks for reading,
Guillaume