Foros de discusión

[HowTo] Classic Theme - Remove AUI styles

Christophe Noel, modificado hace 9 años.

[HowTo] Classic Theme - Remove AUI styles

Junior Member Mensajes: 99 Fecha de incorporación: 28/09/12 Mensajes recientes
Hello,

Renamed to: "[HowTo] Remove AUI styles from Classic Theme"

I can see on the blog, the following which respond exactly to what I expect:
For instance, let's imagine you want to only apply Bootstrap to the portlet's, but not touch anything else on the page. You would simply remove the aui CSS class from the $root_css_class variable, and edit your portlet.vm file and add it there


The question is : how should I remove aui from that root_css_class variable ? In my case (Liferay IDE 2.1) theme plugin project, there are no init.vm anywhere, and the variable is instantiated nowhere. Therefore, it become quite complicate to understand how to remove aui in the root_css_class variable.

Thanks for your support.
Christophe Noel, modificado hace 9 años.

RE: [HowTo] Remove aui CSS class from root_css_class ?

Junior Member Mensajes: 99 Fecha de incorporación: 28/09/12 Mensajes recientes
If I'm not wrong, simply the following init.vm file should be added to the template directory (then the aui be removed from this file).
https://github.com/liferay/liferay-portal/blob/master/portal-web/docroot/html/themes/_unstyled/templates/init.vm

But it doesn't work, putting this file has no impact on the theme, and the aui class remains active for the all html page.

When putting the content inside init_custom.vm, it seems that removing aui from html element and putting it to the various div, make the split dock bar being unsplit. Any tips on this topic ?
Christophe Noel, modificado hace 9 años.

RE: [HowTo] Remove aui CSS class from root_css_class ?

Junior Member Mensajes: 99 Fecha de incorporación: 28/09/12 Mensajes recientes
I have found a working recipe to remove aui from classic theme:

1. In init_custom.vm
#set ($root_css_class =  $languageUtil.get($locale, "lang.dir"))
#set ($css_class = "${css_class} dockbar-split")


2. In portal_normal.vm, for the dockbar div replace the code as follows (aui div around, and add the dockbar-ready class to the child div):
<div class="aui">
<div class="dockbar-split dockbar-ready">
<a href="#main-content" id="skip-to-content">#language ("skip-to-content")</a>
$theme.include($body_top_include)
#dockbar()
</div>
</div>


3. Still in portal_normal.vm, for the header (banner) add a aui div around:
<div class="aui">
<header id="banner" role="banner"><header id="banner" role="banner" class="aui">
...</header></header></div>


4. Same for the breadcrumbs:
<div class="aui">
<nav id="breadcrumbs">#breadcrumbs()</nav>
...
</div>


5. Same for the footer:
<div class="aui"> 
	<footer id="footer" role="contentinfo">
</footer></div>


But my conclusion is that
1. it has many side effects (e.g. the administration panel is not displayed correctly).
2. the purpose was to avoid css conflict with primefaces, but it seems primefaces doesn't display really well when out of aui.
thumbnail
M J, modificado hace 9 años.

RE: [HowTo] Remove aui CSS class from root_css_class ?

Regular Member Mensajes: 184 Fecha de incorporación: 1/03/13 Mensajes recientes
AUI prefix is cemented in 6.2 CSS, if you remove it, you are asking for trouble. Your pages won't display properly with the dockbar, period.
thumbnail
Prakash Khanchandani, modificado hace 9 años.

RE: [HowTo] Remove aui CSS class from root_css_class ?

Expert Mensajes: 329 Fecha de incorporación: 10/02/11 Mensajes recientes
Christopher Noel gives the solution to the problem asked.

So my 2 cents on why do we need to remove "aui": The purpose to remove "aui" is so that you can take control of the styles. Like apply existing bootstrap theme directly without much tweak instead of going with liferay's theme.

So when you remove aui you should yourself style the page, so that it does not break.
thumbnail
M J, modificado hace 9 años.

RE: [HowTo] Remove aui CSS class from root_css_class ?

Regular Member Mensajes: 184 Fecha de incorporación: 1/03/13 Mensajes recientes
@Prakash Khanchandani

In theory, it should work the way you mentioned. Start creating a custom theme in 6.2 and then you will know what I mean.
Christophe Noel, modificado hace 9 años.

RE: [HowTo] Classic Theme - Remove AUI styles

Junior Member Mensajes: 99 Fecha de incorporación: 28/09/12 Mensajes recientes
Please note that the following topic has been updated and is related to the goal of removing Alloy CSS from unecessary parts of the page Topic: Primefaces in 6.2.

The idea is that all elements should not inherit from Alloy CSS, only the required one (i.e. Liferay header, footer, admin panel, portlet headers, etc.). At least, it should be possible to specify if a portlet content must be in aui class or not.

Christophe.
Fenwick Walker, modificado hace 9 años.

RE: [HowTo] Classic Theme - Remove AUI styles

New Member Mensajes: 9 Fecha de incorporación: 9/04/14 Mensajes recientes
I need this separation so badly right now. Theme development for Liferay is a total ballache with so much hanging on AUI.

Liferay ships with a custom fork of an outdated version of Bootstrap, where the decision has been made to chuck all the nicely tested JS components out in favour of custom-built ill-tested components all built on YUI. Fine, whatever makes you tick, but trying to upgrade to Bootstrap 3? Trying to get a handle on what gets delivered on page request? Discarding AUI in favour of a custom stack? Trying to 'flatten' a theme so that we can implement bespoke designs? Simple well-trodden front-end workflows without yet another learning overhead for new recruits? Lolz, think again!

What is this madness?

In my view, Liferay's admin tools should be completely separated from theme development to accommodate common/modern front-end dev workflows. The learning curve, mixed in with the sporadic documentation and esoteric workflow design has added crazy man-hours to what should be simple projects for us. Trying to deliver bespoke designs with modern best-practices has so far (3 months in) proven to be insanely difficult thanks to the tight-coupling of AlloyUI and Liferay themes.

Sorry for the rant, but as a front-end dev, my patience is getting so thin with this product.
thumbnail
M J, modificado hace 9 años.

RE: [HowTo] Classic Theme - Remove AUI styles

Regular Member Mensajes: 184 Fecha de incorporación: 1/03/13 Mensajes recientes
Fenwick Walker:

What is this madness?


I couldn't agree more with what you said above. It's a nightmare to develop any themes in Liferay 6.2! I don't understand the rational behind sticking with YUI when there are proven well tested jQuery framework is available!
Fenwick Walker, modificado hace 9 años.

RE: [HowTo] Classic Theme - Remove AUI styles

New Member Mensajes: 9 Fecha de incorporación: 9/04/14 Mensajes recientes
Theme development should be totally library-agnostic. There's no need to force devs into an architecture like this, I don't understand the rationale either.
thumbnail
Nate Cavanaugh, modificado hace 9 años.

RE: [HowTo] Classic Theme - Remove AUI styles

Junior Member Mensajes: 94 Fecha de incorporación: 27/11/06 Mensajes recientes
Hi everyone,
Thanks for posting this thread, and for your comments, and sorry that I'm just now responding to this.

I do have a few remarks, but also some questions for you, since there might be a disconnect in my understanding of the potential solutions you guys see that I don't.
Before I get started, I apologize if any of it sounds defensive or stand-offish, since that's not my intent at all.

First, why do we prefix the .aui styles?
Mainly this is because since Bootstrap is quite opinionated, not all developers want this applied to their applications or their themes, so namespacing it gives developers a way to control where it applies.
However, some styles are also namespaced with it (such as the dockbar-split mode), because they depend upon certain aspects of Bootstrap styling.

For 7.0, I'm strongly considering just completely removing the prefix, since developers can go ahead and create the mechanism themselves if they wanted to.

The part I'm curious about if you guys could enlighten me, are on statements like this:
Fenwick Walker:
Theme development should be totally library-agnostic...


Theme development *IS* completely library agnostic, since you have full control over the entire page, and you could just completely remove the $theme.include($top_head_include) from your portal_normal.vm.
However, what I believe you're saying is that it should be library agnostic, but that all of the portal functionality should still work.

And this is where I run into all sorts of questions for you guys, but here are some constraints that we run into, but maybe you guys have some ideas on how to best approach these:

1. Applications that can be added to a page all have markup and views, and those views rely on frameworks, such as YUI/AUI, Bootstrap, etc. If you remove those libraries, or change them, then anything that depends on them will now be broken.
You could remove the aui class from the root_css_class, as discussed above, but then you will have to rewrite a LOT of CSS yourselves.

2. Not just applications depend on these libraries, but portal functionality does as well. This is everything from low-level components, such as menus, modals, buttons, etc to high-level functionality, such as dragging and dropping of portlets, to adding content to the page, reordering your navigation, etc.

Personally, I can't even imagine a scenario or setup in which a theme is library agnostic, but yet still allows for applications and components to be able to leverage those styles or utilities.

For instance, you guys mentioned above about wanting to use a newer version of Bootstrap. You totally can! Just overwrite the .aui.css file, and paste in your new version of Bootstrap (or any other CSS Framework you like... or none).
However, everything else that relies on it will break.

We have tried really hard to make sure that the theme developer has ultimate control over what is displayed on the page, without overwhelming the theme with too much fine-grained control.

And theme developers do have that control for the most part, except for what's generated and displayed by applications (though in 6.2 with the addition of the Application Display Templates, this has opened up, but it's still not on the theme layer).
However, with that power comes the tradeoff that you could be breaking something that depended on what was changed.

Or here was another quote I was curious about:
Fenwick Walker:
In my view, Liferay's admin tools should be completely separated from theme development to accommodate common/modern front-end dev workflows.


Theoretically, this is possible, as it's something we've kind of done by having a Control Panel, so you could remove everything and just have a link to the control panel visible if the user has permissions.
However, this would completely remove the ability for end users to add content or applications to the page, or configure it in any way.
I totally get that our clients have varying levels of need for these sorts of in-context admin tools, but even if it's only a single admin on a small site, they still need a way to place content/applications in different locations.
Do you have any thoughts on how you would create a regular site, with different pages and each page having different types of content or applications?
For instance, one way I could imagine it would be that you would visit some other page that looks nothing like your theme, and instead just gives you abstractions of the sections of the page.
So while it wouldn't have the power of being within the context, it has none of the drawbacks, but I'm not sure.
I've heard in equal parts, some people (most often, end users, or those supporting them) want more in context editing, and find it confusing when the tools are too externalized (for instance, I've heard complaints that the control panel theme doesn't look enough like their current site theme).
On the other side are problems like the ones you guys are having where creating the theme that takes these into account has it's own set of tradeoffs.

Maybe you have an idea of how to get the best of both worlds, though.

Like I said at the beginning, none of this is meant to be defensive. Our community is filled with incredibly smart people who have shown me amazingly clever solutions, and so I ask this humbly, but do you guys see a way that having a library agnostic theme layer is even possible?
Or, barring that, a way to reduce how much it interferes with your goals and still not breaking anything that may depend on it?

I am completely open and interested in suggestions on ways we can try to help improve this process.

Thanks everyone,
Carlo Cavallieri, modificado hace 9 años.

RE: [HowTo] Classic Theme - Remove AUI styles

Junior Member Mensajes: 69 Fecha de incorporación: 7/03/08 Mensajes recientes
Here my suggestions and point of views:

i think that already a lot of the interaction and "edit-in-context" abilities that liferay provided could be "client js/css agnostic"

For example:
- portlets preferences,configuration and so on, already works inside a "iframe popup", so if that iframe could have "liferay js and css" untouched by the theme, all should work (right?),maybe we could force this popup to use a defualt theme

- content editing "in context" is already present in many portlet: additionl links or button that are displayed are already part of the "portlet contet" based on user roles ( for example add WebContent, or Edit webContent, Add blog post, etc ... ), and if this "button or link" could have some special .css-class, we could easily adapt it for our custom theme

The "difficult" task is (i think) the management of adding ( removing, re-arrange ) portlet on the page

If we develop an "iframe pop-up" where we could see a simplified layout "drop-zone", maybe just a "list" of drop zones avaible, and a simplified view of portlets present on that drop zone ( a simple box with "portlet title & portlet id" ? ), adding a menu for adding porltet, movining portlet in this "wireframe" dropzones ... closing the panel would refresh the page and the user could see the result "in-context"

ok, it's not as cool as the actual mechanism, with "realtime" drag&drop, re-arrange and content preview ... but is that a real requirement or is just "a really cool feature"?
Maybe ve could have someting less cool, but more "js/css agnostic"
Fenwick Walker, modificado hace 9 años.

RE: [HowTo] Classic Theme - Remove AUI styles

New Member Mensajes: 9 Fecha de incorporación: 9/04/14 Mensajes recientes
Thanks for the comprehensive reply, Nate.

In hindsight, I apologise for the tirade I unleashed; it was at the end of a very long day, during a very long-winded and overdue project. Rather than subject you to another stream-of-consciousness style battering, if I could ask for your patience while I formulate a response so I can come up with some reasonable suggestions, I would be very grateful emoticon

Cheers.
thumbnail
Nate Cavanaugh, modificado hace 9 años.

RE: [HowTo] Classic Theme - Remove AUI styles

Junior Member Mensajes: 94 Fecha de incorporación: 27/11/06 Mensajes recientes
Hi Fenwick,
That's not a problem at all, and I appreciate the honesty, no matter how frustrated. We definitely want to help make your guys lives easier in both small and large problems, so any feedback we can get, and ideas for how we can improve, we're definitely all ears.
Take your time in getting a response back, but I definitely look forward to any ideas you may have.

Thanks Fenwick,
Christophe Noel, modificado hace 9 años.

RE: [HowTo] Classic Theme - Remove AUI styles

Junior Member Mensajes: 99 Fecha de incorporación: 28/09/12 Mensajes recientes
Hi Nale,

Sorry, I hope I haven't read your message too quickly but I would write a single comment: My intend is to remove the .aui class only from the part which are not "handled" by Liferay (i.e. I want to remove the .aui style from my portlets)

This is not possible, because if I remove the .aui class from the <html> tag, then for example the left-side Administration panel doesn't work anymore correctly (it requires .aui). There is no way of assigning style classes to this part (the administration left-side panel)

Best in that case would be to have the possibility to assign the .aui class to this Administration panel somewhere (or this not customizable part should always be assigned with the .aui class).

Regards,

Christophe.
Chad LaVigne, modificado hace 9 años.

RE: [HowTo] Classic Theme - Remove AUI styles

New Member Mensajes: 10 Fecha de incorporación: 12/11/13 Mensajes recientes
Hi Nate,

I'm facing some of the same issues mentioned in this thread and thought I would offer a couple of ideas. We often are handed static HTML & CSS from a customer or a design company that looks exactly as the customer wants their site to look in Liferay. This HTML is built using any number of CSS libraries and often the aui classes trample on the CSS from the libraries because even though we load our CSS after the Liferay CSS, the stuff styled with .aui is more specific. For example, one customer gave us stuff styled with a Bitters theme that styled things in a very generic manner, e.g. dd { margin: 0 }. This style doesn't get applied because Liferay has a style like .aui dd {margin-left: 10px}. First of all, let me say that I don't think this is entirely Liferay's fault. I have long been frustrated with the fact that most CSS libraries are designed as though they are the only CSS library that will be used on a site - in my opinion it's very presumptive to think you can write a library that styles things at the tag level. Anyway, I think there are a couple of issues that could be addressed by Liferay.

1) I feel like putting .aui on the HTML and BODY tags and then styling at the element level below that scopes things a little too wide. For example, the styles that give us trouble are things like .aui li { line-height: 20px; }. Because the aui class is on the HTML tag, if my library styles li tags just using something like li { line-height: 25px; }, the aui style wins. Because the aui class qualifier resides on the HTML tag, it does basically nothing except make sure that more generic styles don't win. Like others in this post, I'd like to remove .aui from the HTML tag or maybe write some sort of liferay-reset.css that removes generic styles like .aui li. However, this is going to break things like the dockbar because they consume very generic styles like .aui li. It would be cool if things were scoped more tightly like .aui .dockbar li. I notice some of the styles are scoped more tightly, like .aui .navbar .nav > li { float: left}. It would help our cause if this were always the case.

2) The .aui tag is used to both style things and grab a hold of elements for Javascript. Even if the CSS were more specific, removing .aui from the HTML tag breaks things like the dockbar because they use the aui class for Javascript. It would be cool if there was a separation between CSS that's used to style things and CSS that's used for Javascript.

I'm guessing you guys have kicked these ideas around and there are probably very good reasons for the way things are designed, just thought I'd throw in my 2 cents.

Thanks,
Chad
thumbnail
Nate Cavanaugh, modificado hace 9 años.

RE: [HowTo] Classic Theme - Remove AUI styles

Junior Member Mensajes: 94 Fecha de incorporación: 27/11/06 Mensajes recientes
Hi Chad,
Thanks a ton for your feedback. Stuff like that is incredibly helpful emoticon

A couple of quick responses:

1. Currently, we only place the .aui class on the HTML, so it shouldn't show up on the body, unless you add it there.
But also, the generic styling like .aui li {} is happening because we're wrapping all of Bootstrap, including it's use of normalize.css. The idea there was that all of the styling, including any resets, would be able to be completely removed by removing that CSS class.
So there are a couple of approaches you could take to handling this:
- From the theme, you have full control of the aui.css file, so you could copy it from _styled, and place it in your _diffs/css/ directory.
What you could do in this case is change the line that says @import "aui/bootstrap"; and instead copy all of the imports in aui/bootstrap.scss and put it in it's place. Then you could move: @import "reset"; to being outside of the .aui {} selector.
The resulting file would look something like: https://gist.github.com/natecavanaugh/669d65f00616a4267abc

- Another possible option is to remove the .aui class from the HTML element, and place it in selected areas. For instance, you could conditionally add it in the portlet.vm around certain portlets, or setting it in the Look and Feel settings, and around a few places in the theme (like around the dockbar).
There would be some cases where things might be off, but we might be able to work up a solution for them (or at the very least, maybe make it easier to work around them in the future).

2. Regarding the JavaScript, we actually shouldn't be relying on that class name being on the element, so if there are cases you know of where removing it breaks something or causes an error, please let me know, because it's definitely a bug. If we are doing that somewhere (I can't seem to find anywhere that is in the code), it was a mistake that slipped past me as it's supposed to be an optional class.

But again, thanks for this kind of feedback. If there's anything else we could do to help improve the theme building experience, please let me know (or if there ideas you have for solving some of the challenges I mentioned in my other reply, I'm interested as well).

Thanks Chad emoticon
Chad LaVigne, modificado hace 9 años.

RE: [HowTo] Classic Theme - Remove AUI styles

New Member Mensajes: 10 Fecha de incorporación: 12/11/13 Mensajes recientes
Thanks for the quick response Nate! I misspoke on the aui class being on the body, I was thinking of the yui stuff that's added there by the ${css_class} expression. I had been experimenting with both the ${css_class} on BODY and ${root_css_class} on HTML in an effort to see what was giving me trouble.

In my efforts to come up with a solution I actually did try to narrow the scope of the aui class by removing it from HTML tag and wrapping all the elements that needed it. My idea was exactly what you mentioned, add a wrapper element with class="aui" to portlet.ftl, wrap the dockbar expression with <div class="aui">, etc. At first this looked very promising because everything came out great visually, but this is where I found the javascript issue. The first issue I found was that when I remove the aui class from HTML the drag & drop functionality on portlets gets really goofy - just hovering over the drag/drop handle on a web content portlet made the dockbar pop up and down about 50px. I thought this was perhaps a combination of the Dockbar javascript and javascript in our theme but I was able to verify this was not the case by testing it using the default Liferay theme. You can easily reproduce the issue by viewing a page that uses the default Liferay theme and has a web content portlet placed on it. Just use your browser dev tools to remove the aui class from the HTML tag, then hover over the title/drag & drop icon as though you were going to move the portlet. It could very well be that this is the only bug with this approach - I just got really nervous that I was going down a rabbit hole that would require many hacks to fix built-in Liferay functionality and make upgrades really painful.

Thanks for the idea on overriding the aui.css file, I'll take a look at that. If I run into trouble, the most reasonable alternative I've been able to dream up is to put a class on the body tag that I can use scope the styles that are getting stomped by .aui. Then we can just modify the SASS in our canned theme to qualify selectors with that class so they will win over things like .aui li. This allows us to at least limit our changes to the CSS and not sprinkle CSS classes all over in the DOM. Also, this keeps the changes in our code which I like from a maintenance and upgrade perspective.

Thanks again for the suggestions Nate!
thumbnail
Nate Cavanaugh, modificado hace 9 años.

RE: [HowTo] Classic Theme - Remove AUI styles

Junior Member Mensajes: 94 Fecha de incorporación: 27/11/06 Mensajes recientes
Hi Chad,
Thanks for letting me know about that one.
So for that specific one, it's a relatively easy solution/cause, though it could crop up in other ways.

So the reason it happens is because the Bootstrap CSS is all wrapped in the namespace, including the CSS for tooltips. So removing the namespace of course unstyles all bootstrap stuff, as you'd expect.
But because the tooltip styling says that it should be positioned absolute, without that rule, the JavaScript still will position it, but uses position: relative.

The fix is to either add this to your CSS:
.tooltip {position: absolute;}

Or just in your portlet.vm remove this guy:
$theme.portletIconPortlet()
(since he's the one adding the tooltip).

But yeah, the larger issue of course, is back to the one I mentioned of how to keep the different components from being too reliant on each other, while still allowing theme devs access and control over them.

Thanks again Chad!
thumbnail
Eike Salow, modificado hace 9 años.

RE: [HowTo] Classic Theme - Remove AUI styles

New Member Mensajes: 19 Fecha de incorporación: 20/09/10 Mensajes recientes
hi folks,
another option might be to think about the so called " css specificity " when you doing css development for your portlets. so basicallly it means tweaking it exactly the other way round.
so following this approach the .aui class can remain where it is. all you need to do is to make sure that your css within the portlet / your portlet area has a higher "specificity".

example: Imagine we got some trouble with input fields, areas, selection etc as aui rules are applied:
so we got for instance follwing rule " .aui input {....} " defines some common rules for input fields, which is some how applied within your portlet styles....as .aui is set by default as html class of a theme.

within your css definitions you could define something like this e.g. : .myprojectcssprefix .myportletarea input {.....}

doing this your rule would "win" against the aui rule above, as your css selector has a higher specificity.


regards

eike
thumbnail
David H Nebinger, modificado hace 9 años.

RE: [HowTo] Classic Theme - Remove AUI styles

Liferay Legend Mensajes: 14919 Fecha de incorporación: 2/09/06 Mensajes recientes
That's an important point, Eike, thanks for bringing it up.

My understanding is that the concern is not so much on individual portlets as much as it is affecting portal-wide changes. Specificity may still be the answer, though. The problem of course is that each portal tends to be it's own thing because every site has different requirements and specifications.
OgbaOghene Ozoro, modificado hace 9 años.

RE: [HowTo] Classic Theme - Remove AUI styles

New Member Mensajes: 18 Fecha de incorporación: 19/03/12 Mensajes recientes
Eike Salow:

another option might be to think about the so called " css specificity " when you doing css development for your portlets... the .aui class can remain where it is. all you need to do is to make sure that your css within the portlet / your portlet area has a higher "specificity"... doing this your rule would "win" against the aui rule above, as your css selector has a higher specificity.


The approach I am taking with my custom Liferay 6.2 themes follows along the same lines. Luckily, I recently began making it a habit to scope my CSS using a prefix. So it wasn't to difficult to refactor using the the .aui class name emoticon.

My SCSS now looks like this:


html.aui {
  font-size: 100%;
  overflow-y: scroll;
}

.aui body {
  font-weight: 300;
  font-family: 'Roboto', sans-serif;
  color: #333;
  font-size: 81.25%;
  line-height: 1.618em;
}


I still had to author some especially for Liferay though emoticon, such as:


.aui .lime {
  select,
  textarea,
  input[type="text"],
  input[type="password"],
  input[type="datetime"],
  input[type="datetime-local"],
  input[type="date"],
  input[type="month"],
  input[type="time"],
  input[type="week"],
  input[type="number"],
  input[type="email"],
  input[type="url"],
  input[type="search"],
  input[type="tel"],
  .uneditable-input {
    height: auto;

    &amp;:focus {
      box-shadow: none;
    }
  }

  select {
    width: auto;
  }
}


But sadly emoticon that has always been the case with Liferay, hope this helps.

Cheers.
OgbaOghene Ozoro, modificado hace 9 años.

RE: [HowTo] Classic Theme - Remove AUI styles

New Member Mensajes: 18 Fecha de incorporación: 19/03/12 Mensajes recientes
It is good practice to write CSS that's only as specific as it needs to be. When theming Liferay 6.2, front-end devs are now forced to write highly specific CSS. IMHO, this is not a good idea, à la spaghetti code.

This highlights the need to separate Liferay's admin interfaces/components from its front-facing interfaces. I believe this is what Fenrick Walker was referring to:

Fenwick Walker:
In my view, Liferay's admin tools should be completely separated from theme development to accommodate common/modern front-end dev workflows.


Not as regards functionality but presentation, ideally a separate theme should exist for admin interfaces/components, with scoped styles that wouldn't bubble up into the rest of the page. That way, it would be safe to bake in Bootstrap or any other framework/library without clashes occurring. Another theme would then control the themeable sections of the portal, ie. front-facing interfaces. It's this theme the user would have control over, to customize and change. I believe this is the common/modern front-end dev workflows he speaks of, as in my experience it's this sort of environment platforms like WordPress, Joomla, and Drupal provide.

Fenwick Walker:
Theme development should be totally library-agnostic...


I look forward to the day this applies to Liferay, when I can generate a custom _unstyled theme, apply it to my portal and begin themeing but still have my admin toolbar, control panel, portlet preferences, configuration, content editing interface etc. display and function properly. Then and only then would Liferay truly be themeable, till then we are just going to keep hacking at it.