Search code examples
packagethemesqooxdoo

How should I distribute a bunch of themes in the qooxdoo repo?


What approach is better for distributing qooxdoo themes: one package for each theme or just include all related themes in one package? Pros and cons of each approach?


Solution

  • My rule of thumb is: If a set of themes are visually and functionally different then they should be in their own projects. Example of this: https://github.com/sqville/ville.Clean and https://github.com/sqville/ville.Wireframe are in separate projects. Both look and function differently because both theme's appearances (Appearance.js), decorations (Decoration.js), colors (Color.js) and fonts (Font.js) differ to a sizable degree. Now take osparc themes https://github.com/ITISFoundation/qx-osparc-theme they only differ mostly in color. Therefore, they all reside within the same project because they all share the same appearances, decorations and fonts (except for osparcportal which has it's own Font.js).

    Separate project's Pros:

    • Flexibility - each theme is untethered from all other themes so it's free to go down it's own lifecycle (good or bad)
    • Less Bloat - why require people to download all of your themes when they just want one

    Separate project's Cons:

    • Increased Maintenance - each theme should have a highly functional widgetbrowser (demo app) which means maintaining multiple copies of the same application
    • Longer Startup Time - to create a new theme you have to copy over an existing theme then do a find a replace in each theme file in order to name files and references properly (i.e. replace "Clean" with "Wireframe")

    Same Pros:

    • Easier to maintain
    • Easier to start a new theme

    Same Cons:

    • Bloat (when people only want one theme and not the others and they don't know how to get ride of the unwanted files)