This document is a work in progress

Table of Contents

Background

This document captures reported challenges with using comprehensive theming in the Eucalyptus release, along with some initial recommendations as to how matters might be improved.

Use Cases

Use case 1: Changing fonts

Quote from Florian Haas (Unlicensed):

How do we change the default sans-serif font from the default `"Open Sans" ,Verdana, Geneva, sans-serif`? ... My goal is being able to select my preferred sans-serif font myself, rather than being locked into Open Sans. That, quite frankly, seemed like a trivial goal but it now seems like a Herculean task. I'm still hoping that the actual difficulty is somewhere *between* trivial and Herculean. 

Having the Ability to change fonts, as a user setting, particularly for paragraph text, would be beneficial to some learners who have reading difficulties.  Ideally changes would be persistent across courses.

Ability to override text display characteristics (line height, space following paragraphs, letter spacing, word spacing) is a WCAG 2.1 AA requirement. I assume this could be accomplished through custom user stylesheets but a user settings UI would be much more likely to be used. 

Use case 2: Managing the color palette

Quote from J'aime Ohm:

I’m theming an iOS application based on a themed web application and our front-end web developer is out today. I’m interested in quickly gleaning the color palette and fonts used in this application. Can someone tell me if there is a central/primary “colors” or “fonts” or similar file in edx-platform?

WCAG 2.1 AA color luminance contrast requirements are a crude heuristic that probably makes a site usable to a the vast majority of people who have print reading ability. However, enabling learner customization could take us a step closer to universal usability. For example, some learners would prefer light blue or yellow text on a black background. Some learners may have difficulty seeing any yellows or reds (not necessarily related to to red/green anomaly.)  

High Contrast Mode in Windows and in Chrome (through Google's supported High Contrast extension) is frequently useful but not necessarily optimal.  A brand-optimized High Contrast mode theme may be a step up for usability.

WCAG 2.1 has color luminance contrast requirements for infographics that may prove to be difficult to implement just because they constrain the available design space too much. A learner-selectable line pattern/color scheme system might allow more freedom for designers by supporting learner flexibility in the presentation.  Example: WCAG 2.1 constrains the designer to (I'm guessing) 4 line colors for a line chart. With use of 3 or 4 line styles in addition to colors, the designer could still have as many as 16 colors available to use.  Learners who have color contrast perception issues could switch to the High Contrast chart/infographics palette.

Use case 3: Overriding JavaScript templates

Quote from jjmirandad:

Talking about frustration. Its possible to use .underscore templates in theme folder??? How its this possible, because in all my test this files its loading from lms/templates!

Quotes from MIke Bifulco:

the underscore template thing really is a surprise.  That means that several pages on thegymnasium.com will have a significant regression in theme functionality when we move from Birch→Dogwood/Eucalyptus

and:

I'm surprised [logistration] made it through to production without considering theming

Use Case 4: Theming the wiki

It has been reported that comprehensive theming does not work for the wiki. This appears to be because the wiki uses Django Templates, while comprehensive theming works with Mako.

Challenges

Mako templating is badly implemented

edX platform Sass is poorly structured

Pages are a mixture of pattern library and non-pattern library

The pattern library is inconsistent about how theming is supported

JavaScript templates cannot be overridden using comprehensive theming

It isn't clear how to ensure that themes work with both LTR and RTL files

Platform is not responsive

Compiling assets with multiple themes is very slow

Note that you can use the --themes options with paver update_assets to specify only the themes you would like to compile to speed up the development cycle.

paver update_assets lms --themes=example



Theme integration into the build process is opaque

Recommendations