A Journey Into the Emotions of Software Developers
Layered architecture for Ding2 [proposal]
1. Current situation Monilith architecture demands that any
deviation in content or logic results in a fork of
As a result a libraries except Copenhagen has
forked the ding.TING code requirering high
Thick, complete basetheme never designer for
subtheming requires every instance to override
the complete ding.TING code repository. maintenance and high(er) barrier to sharing and maintain a complete theme, resulting in
patches and features. high maintenance costs.
København Aarhus Randers Kolding Vejle
Brand layer
(subtheme)
Theme layer
(basetheme)
Structure layer
(panels layouts)
Content layer
(panels settings) ding.TING ding.TING ding.TING ding.TING
hovedspor Aarhus-fork Randers-fork Kolding-fork
ding.TING 2
(custom modules,
con g)
Drupal
(core + contrib)
2. Example: Drupal Drupal Core and Contrib modules. De nes core
concepts as entities, elds, RDFa integrations,
views, page manager, editorial tools and so
forth.
København Aarhus Randers Kolding Vejle
Brand layer
(subtheme)
Theme layer
(basetheme)
Structure layer
(panels layouts)
Content layer
(panels settings)
ding.TING 2
(custom modules,
con g)
Drupal
(core + contrib)
3. Example: ding.TING2 De nes speci c con gurations, settings and
custom developed modules including all
integration to search.
København Aarhus Randers Kolding Vejle
Brand layer
(subtheme)
Theme layer
(basetheme)
Structure layer
(panels layouts)
Content layer
(panels settings)
ding.TING 2
(custom modules,
con g)
Drupal
(core + contrib)
4. Example: Content The content layers contains ding.TING2’s
panels settings, and de nes logic and content.
Example: Should the site print a ‘Share to
Facebook’ button, on what content and in what
What content get printet, when and in what region.
region, in what order to the other content.
København Aarhus Randers Kolding Vejle
Brand layer
(subtheme)
Theme layer
(basetheme)
Structure layer
(panels layouts)
Content layer
(panels settings)
ding.TING 2
(custom modules,
con g)
Drupal
(core + contrib)
5. Example: Structure The structure layer contains ding.TING2’s
panels layout templates. They de ne the
Example: Where is the panels pane containing
the ‘Share to Facebook’ button printet in the
structure and wrapping markup for the separate markup.
panels panes.
København Aarhus Randers Kolding Vejle
Brand layer
(subtheme)
Theme layer
(basetheme)
Structure layer
(panels layouts)
Content layer
(panels settings)
ding.TING 2
(custom modules,
con g)
Drupal
(core + contrib)
6. Example: Theme Theme layer de nes elements such as general
typography, spacing/layout, general branding
collections and so forth.
neutral styling and styling/ui/ixD for shared
features such as search, news, ting objects and
København Aarhus Randers Kolding Vejle
Brand layer
(subtheme)
Theme layer
(basetheme)
Structure layer
(panels layouts)
Content layer
(panels settings)
ding.TING 2
(custom modules,
con g)
Drupal
(core + contrib)
7. Example: Branding Branding layer de nes elements such as logos,
branding colour schemes, local adaptions to
menus and other idiosyncrasies.
København Aarhus Randers Kolding Vejle
Brand layer
(subtheme)
Theme layer
(basetheme)
Structure layer
(panels layouts)
Content layer
(panels settings)
ding.TING 2
(custom modules,
con g)
Drupal
(core + contrib)
8. The ideal Every layer except a thin branding layer
containing local logos, colours and idiosyncra-
In reality this is hardly attainable though.
Differences between multi-branch and
sies are shared unforked among all partner single-branch partners will in probability result
libraries. in fragmentation of codebase.
København Aarhus Randers Kolding Vejle
Brand layer
(subtheme)
Theme layer
(basetheme)
Structure layer
(panels layouts)
Content layer
(panels settings)
ding.TING 2
(custom modules,
con g)
Drupal
(core + contrib)
9. Realistic model Maintaining two separate content and structure
layers - one for multibranch libraries and one for
make long term collaboration and code sharing
possible.
(mainly) single branch libraries - should protect
against further, unplanned fragmentation and
København Aarhus Randers Kolding Vejle
Brand layer
(subtheme)
Theme layer
(basetheme)
Structure layer
(panels layouts)
Content layer
(panels settings)
ding.TING 2
(custom modules,
con g)
Drupal
(core + contrib)
10. Possible model A multilayer model still includes the freedom for
individual partners to fork a speci c layer and
In this example one partner has created it’s own
base theme and another partner has created it’s
still use the rest of the stack unchanged. own panels layouts, while still building on
shared components in other layers.
København Aarhus Randers Kolding Vejle
Brand layer
(subtheme)
Theme layer
(basetheme)
Structure layer
(panels layouts)
Content layer
(panels settings)
ding.TING 2
(custom modules,
con g)
Drupal
(core + contrib)