Hi Matjaz,
yes, we basically use two levels:
- theme codebase - holds all the templates we override that are common for all our themes. Also holds the mechanics of how we load template parts, common static assets such as some logos and JS, our custom SASS and default theme variables for rendering the theme. That repo is actually private at this point as it also contains certain proprietary parts very much connected to how Tahoe works.
- customer specific stuff - customer-specific template overrides, additional SASS to be included and compiled into our main one, static assets... You linked that one correctly.
So how it works (as we discussed on the conference in Madrid) is that we extended the static asset pipeline, so now the behaviour is:
- Template lookup: index page needs to be loaded. First the server tries to find the index.html template under customer specific theme folder, if not found then under theme codebase, if not found there then load the default one.
- Underscore template lookup: registration page needs to be loaded. Lookup goes: look under customer specific, if not found look under theme codebase, if not use default.
- Same for images.
Basically *anything* can be overridden (yes - that includes underscore templates!).
It doesn't exactly work indefinitely - basically there are these three levels and that's it (customer-specific, theme codebase, edx default). If I got your proposal right, you were looking into allowing even more levels? While I can see some benefits from that in very specific situations, I would be opposed to that to be honest, as I think it would bring in complication and isn't truly needed.
This three-level system on the other hand I believe works well, actually it has proven itself for us (and our customers) since we did at least 2 successful and quick batch updates between Open edX releases on a number of customers (I mean, we updated Tahoe to Ficus, and for the next update we could easily be having over a 100 sites up there, all updated in batch!). Personally, I think this extension of static asset pipeline would be useful to a lot of people in the community (just the other day we had a situation where someone simply wanted to change some stuff around the registration underscore template and was unable to do it simply).
The theme codebase itself we plan to make open-source (I'm actually currently working on that). We believe it could be a good framework for people to create responsive themes, and we believe that with the help of the community it can only become even better. What we need to do before that is a cleanup + modifications so it works with an official Open edX release, meaning without the changes to the pipeline. Of course, if we could push that upstream and include in Open edX, even better.
The React app itself and everything around it is proprietary, so we won't be open sourcing that.
Best,
Matej
P.S.: it was nice to meet you in Madrid :)