SlideShare a Scribd company logo
The OpenEuropa Initiative
An open source approach to software as a service
at the European Commission
Antonio De Marco
nuvole.org - info@nuvole.org - @nuvoleweb
About me
Hello, I’m Antonio.
● Director and co-founder of Nuvole
● From 2015 consulting part-time for Nuvole at the European Commission
● From 2018 co-founder and team leader of the OpenEuropa Initiative at
the Directorate-General for Informatics (DIGIT)
Disclaimer: the use case we are presenting today is built and maintained by a
large team of consultants, working for different companies.
2
About Nuvole
● From 2010, a proud Drupal company
● Complex Drupal projects
Interfacing with other systems or featuring complex front-end requirements
● Working with NGOs and public institutions
An international team rooted in NGOs and comfortable working with large NGOs and public
institutions (World Food Programme, European Commission, OECD, World Bank)
https://nuvole.org
3
Nuvole in the Drupal Community
● Long time Drupal contributors
Our open-source Drupal modules were downloaded more than 1 million times
● Drupal core contribution
Co-leading the official Drupal 8 Configuration Management Initiative
● Drupal events
Invited as presenters at several annual EU/US Drupal conferences (DrupalCon)
● Drupal trainers
10+ times official DrupalCon trainers + large organizations (HP, European Commission, etc.)
4
The European Union web presence
5
The European Union web presence
● 2 main institutional sites:
○ The European Commission: https://ec.europa.eu
○ The European Union: https://europa.eu
● 40 European agencies, such as:
○ EFSA, the European Food Safety Authority
○ Frontex, the European Border and Coast Guard Agency
● 27 Commission's Representations sites, such as
○ Italy: https://italy.representation.ec.europa.eu
○ Belgium: https://belgium.representation.ec.europa.eu
● Hundreds more: the Europass site, the COVID-19 response site, etc.
6
7
8
9
10
Managing institutional content is hard
● Multilingualism, supporting the 24 official languages in the EU
● Integration with the EU internal translation services
● Advanced content moderation workflow
● Scheduling content publication for sensitive news
● Harmonization of content categorization via shared taxonomies
● Centralized authentication and authorization system
● Integration with ECAS, the European Single Sign-On Service.
● Integration with the European Union Webtools widgets
● etc...
11
Drupal at the European Commission
12
Drupal at the European Commission
● 2012: a pilot project, the Multisite Platform, based on Drupal 7:
○ A common web management infrastructure
○ Rationalise the web presence of the EC
○ A coherent corporate image
○ Cost sharing amongst the different Directorate Generals
● 2014: the Europa platform, based on Drupal 7:
○ A Drupal 7 distribution built on the Multisite Platform experience
○ Aimed at migrating away from the then outdated web publishing platform
● 2015-2017: Migration of hundreds of websites to the Europa platform
○ Including the two main institutional sites
13
The Europa platform: a monolithic approach
● A SaaS built as a Drupal 7 distribution
● Organised in Drupal features, using the Features module
● Possibility for site owners to enable and disable features from the UI
● A first, genuine, attempt to business requirement orchestrations
● Allowed for extra customizations, on the final client’s expense
14
The Europa platform: a monolithic approach
Drupal 7 Core
Installation Profile
Feature A Feature B Feature C Feature D
Site custom code
15
The reality of a monolithic approach
● Large code base, difficult to maintain
● Long tests runs, not 100% covered
● New features might break existing sites
● Hard to involve people to contribute
● High deployment time
● Used more as a framework than a service
16
Other drawbacks
● A single codebase with tens of developers contributing to it
● Clients were hiring their own teams to manage the site
● 100 sites / 100 ways of implementing the same thing
○ Clients could extend it by hiring their own development team in house
○ Custom functionalities would require significant overrides
○ Development would then happen on a separate repository
● 100 ways of implementing the same thing / 1000 developers
○ Hard to maintain technical governance
○ Hard to monitor security
○ High cost of maintainability and quality assurance processes
17
The OpenEuropa Initiative
18
Drupal 8: an opportunity
In 2018 the migration of the Europa platform to Drupal 8 presented an
opportunity for a paradigm shift by leveraging:
● The maturity of a proper package management system
● The adoption of semantic versioning
● The raise of containerised applications
19
The OpenEuropa Initiative
OpenEuropa is a European Commission initiative aimed at strengthening the
adoption of open source tools and practices, particularly focused to:
● Build and maintain loosely-coupled, reusable software components,
● Build fully-fledged solutions for the European Institutions
● Establish reusable technical governance guidelines
● Contribute back to upstream open source projects, such as Drupal
https://github.com/openeuropa/documentation
20
21
A “component-based” approach (1/2)
Each component (e.g. a Drupal module, or a PHP library):
● Has its own repository
● Enjoys an independent release cycle
● Is tested separately
● Has a dedicated continuous integration pipeline
● Is semantically versioned (x.y.z)
● Describes its own dependencies
22
A “component-based” approach (2/2)
Each component has everything that a developer needs to kickstart
development, bundled right in its repository.
For example, in case of a Drupal module:
● Running composer install builds a fully functional site, right within
the component root directory, allowing to kickstart development
● Running docker-compose up -d spins off a fully functional
environment, with all needed services (web server, database, etc.)
● Behat and functional PHPUnit tests are run against the target site
● Context-switching for developers is reduced to the minimum
23
Project setup
Fully functional
development site
Continuous Integration
and deployment 24
Advantages
A component-based approach:
● Leverages modern dependency package manager, like Composer
● Leverages Drupal's modularity as a point of strength
● Makes it easier to write and maintain tests
● Allows for a shorter “time-to-market” per component
● Facilitates intra-team contributions
● Facilitates external contributions
● Facilitates the adoption of open source tools and practices
25
Breaking up the monolith
Core
Profile
A B Site specific
Site A
Core
Profile
C Site specific
Site B
A
1.1.0
A
1.1.1
A
2.0.0
C
0.0.1
C
0.0.2
C
0.1.0
B
0.1.0
B
0.2.0
B
0.2.1
B
1.0.0
B
1.0.1
C
1.0.0
Time
26
27
28
29
30
31
Building and maintaining OpenEuropa
32
An example: the EU’s visual identity
The Europa Component Library (ECL) is a comprehensive style guide
containing the design elements and visual standards to harmonize the
European Union web presence.
https://ec.europa.eu/component-library
33
EC EU
34
Aim: provide an ECL Drupal theme
The OpenEuropa Theme component must:
● Allow Drupal sites to feature an ECL look and feel
● Allow a site owner to choose between the EC and the EU branding
● Reuse the components in their native Twig implementation
35
Theme architecture
Three main components working together:
● ECL Twig Loader: loads ECL components using a custom Twig namespace
● OpenEuropa Theme: themes Drupal frontend using ECL components and
exposes them as UI Patterns
● Composer Artifacts: allows projects to use a fully built theme artifact
which contains ECL templates and compiled frontend assets
Other than “the usuals”: the Task Runner and the Code Review component
36
Europa
Component Library
ECL
Twig Loader
Provides reusable components
for an harmonized look and feel
Imports ECL templates in any PHP
application using Twig
{% include '@ecl/...' with {
'variant' : 'default' ,
'title': title,
'detail' : detail,
} %}
{% include '@ecl/...' with {
'Primary_image' : image,
'title': title,
'detail' : detail,
} %}
{% include '@ecl/...' with {
'secondary_image' : image,
'title': title,
'detail' : detail,
} %}
OpenEuropa
Theme
Drupal theme providing ECL
components integration
UI
Patterns
Field formatters
View displays
Entity view modes
37
Using the theme’s artifact
ECL ECL Loader Theme
Site builders
Site developers
Core components
38
Building a SaaS on top of OpenEuropa
39
A new SaaS for the EU web presence
OpenEuropa allows for a streamlined way of building and maintaining SaaS
platforms. Since 2018 we have been building a SaaS that is powering the next
generation of the European Union web presence.
The SaaS platform is:
● A private Drupal distribution
● Built using OpenEuropa components
● Tweaked by custom modules and themes, shipped within the distribution
40
Stitching it all together
Public
components
Private
distribution
Theme
Corporate
Content
Multilingual
support
Editorial
Workflow
OpenEuropa Modules
Translation
client
Composer
artifacts
OpenEuropa Libraries
Search API
Paragraphs
Contributed modules
Drupal profile
Custom module 1 Custom module 2 Custom theme
41
An economy of scale
A few non-functional requirements were clear since the beginning:
● The new SaaS platform is built to serve hundreds of sites
● Updates need to be rolled out all at the same time
● Each site needs to be built and managed by the site owners, without
employing any dedicated developer
● Eventually, a site owner can decide to “break free” from the flock, and
start its own development, while still keeping the possibility of upgrading
to newest SaaS versions
42
How we did it
● We have one repository called the master site:
○ A Composer-based Drupal site repository
○ It requires the SaaS Drupal profile
● Each other site instance gets its very own repository
● Each site instance repository is a git-fork of the master site
● A new release of the master site triggers a waterfall release pipeline,
which releases all the other site instances
43
Release one, deploy hundreds
44
Master site
Release manager
tags a release
Site A
Site B
Site C
Site D
Site A
Site B
Site C
PROD
PROD
Deployment pipeline
Test pipeline
Where we stand now
45
OpenEuropa in numbers
● More than 70 components, including Drupal modules, PHP libraries,
Docker images, development tools, templates, etc.
● More than 100 developers, divided in 20 teams, contribute daily to the
initiative
● Around 100 sites on the SaaS platform, out of which 50+ are currently
live, in production
● Tens of custom (non-SaaS) sites have been built using the OpenEuropa
components
46
Thank You
nuvole.org - info@nuvole.org

More Related Content

PDF
Amplexor Drupal for the Enterprise seminar - evaluating Drupal for the Enterp...
PDF
CMI 2.0 session at Drupal DevDays in Cluj-Napoca
PDF
Drupal case study: Behind the scenes of website of University of Tartu
PDF
Headless Drupal: A modern approach to (micro)services and APIs
PDF
Efficiently theming a multi-site Drupal 8 portal - Drupal Dev Days Seville 2017
PDF
OpenCms Days 2014 - OpenCms Module Development and Deployment with IntelliJ, ...
PDF
OpenCms Days 2015 How do you develop for OpenCms?
PDF
Drupal + composer = new love !?
Amplexor Drupal for the Enterprise seminar - evaluating Drupal for the Enterp...
CMI 2.0 session at Drupal DevDays in Cluj-Napoca
Drupal case study: Behind the scenes of website of University of Tartu
Headless Drupal: A modern approach to (micro)services and APIs
Efficiently theming a multi-site Drupal 8 portal - Drupal Dev Days Seville 2017
OpenCms Days 2014 - OpenCms Module Development and Deployment with IntelliJ, ...
OpenCms Days 2015 How do you develop for OpenCms?
Drupal + composer = new love !?

What's hot (20)

PDF
Efficient development workflows with composer
PDF
Efficient development workflows with composer
PPTX
osCaddie Drupal/Alfresco Integration Technical Update
PDF
OpenCms Days 2015: Keynote - OpenCms 10 X marks the spot
PPTX
Drupal 6 to Drupal 8 Migration
ODP
Drupal in 5mins + Previewing Drupal 8.x
PDF
OpenCms Days 2014 - How Techem handles international customer portals
PDF
July OpenNTF Webinar - HCL Presents Keep, a new API for Domino
PDF
OpenCms Days 2016: OpenCms at the swiss seismological service
PDF
Drupal Best Practices
PDF
OpenCms Days 2016: Keynote - Introducing OpenCms 10.5
PDF
Reproducible development to live applications with Red Hat CDK and Red Hat Op...
PDF
Configuration as Dependency: Managing Drupal 8 Configuration with git and Com...
PDF
HTML5 Apps on AGL Platform with the Web Application Manager (Automotive Grade...
PDF
WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolution
PDF
ICON UK 2016: Modernizing an IBM Notes applicaton using with AngularJS
PPTX
docker : how to deploy Digital Experience in a container drinking a cup of co...
PDF
Drupal 8 improvements for developer productivity php symfony and more
PDF
OVERVIEW: Chromium Source Tree
PDF
Continuous Integration Is for Teams: Moving past buzzword driven development
Efficient development workflows with composer
Efficient development workflows with composer
osCaddie Drupal/Alfresco Integration Technical Update
OpenCms Days 2015: Keynote - OpenCms 10 X marks the spot
Drupal 6 to Drupal 8 Migration
Drupal in 5mins + Previewing Drupal 8.x
OpenCms Days 2014 - How Techem handles international customer portals
July OpenNTF Webinar - HCL Presents Keep, a new API for Domino
OpenCms Days 2016: OpenCms at the swiss seismological service
Drupal Best Practices
OpenCms Days 2016: Keynote - Introducing OpenCms 10.5
Reproducible development to live applications with Red Hat CDK and Red Hat Op...
Configuration as Dependency: Managing Drupal 8 Configuration with git and Com...
HTML5 Apps on AGL Platform with the Web Application Manager (Automotive Grade...
WebKit and Blink: Bridging the Gap Between the Kernel and the HTML5 Revolution
ICON UK 2016: Modernizing an IBM Notes applicaton using with AngularJS
docker : how to deploy Digital Experience in a container drinking a cup of co...
Drupal 8 improvements for developer productivity php symfony and more
OVERVIEW: Chromium Source Tree
Continuous Integration Is for Teams: Moving past buzzword driven development
Ad

Similar to The OpenEuropa Initiative (20)

PPTX
DDAY2014 - Ecologia del valore e DRUPAL@Engineering: l’esperienza di un grand...
PPTX
European commission & Drupal: a love story
PDF
Demographic Data Collection Implications and Opportunities
PPTX
Opensource government
PDF
Government ICT 2.0 London 2014 – Open Source Drupal Empowering Government
ODP
European ICT Strategy: Software Tea Party
PDF
Hillenius cebit2015-open-source-forum
PPTX
Getting out of the monolith hell
PPTX
Mining Sociotechnical Information From Software Repositories
PPT
GNU turns 30
PDF
Open public 1.0 drupal Government Days
PPT
Europeana creating the backbone
PPTX
Top Drupal 8 Distributions
PDF
SoC Keynote:The State of the Art in Integration Technology
KEY
Drupal Distributions, an Open Source Product Model
PPT
Europeana essentials June 2013
PPT
Europeana essentials August 2013
PPTX
Getting out of the monolith hell
PDF
HIS 2015: Prof. Mark Little - Open Source Challenges in the Enterprise
DDAY2014 - Ecologia del valore e DRUPAL@Engineering: l’esperienza di un grand...
European commission & Drupal: a love story
Demographic Data Collection Implications and Opportunities
Opensource government
Government ICT 2.0 London 2014 – Open Source Drupal Empowering Government
European ICT Strategy: Software Tea Party
Hillenius cebit2015-open-source-forum
Getting out of the monolith hell
Mining Sociotechnical Information From Software Repositories
GNU turns 30
Open public 1.0 drupal Government Days
Europeana creating the backbone
Top Drupal 8 Distributions
SoC Keynote:The State of the Art in Integration Technology
Drupal Distributions, an Open Source Product Model
Europeana essentials June 2013
Europeana essentials August 2013
Getting out of the monolith hell
HIS 2015: Prof. Mark Little - Open Source Challenges in the Enterprise
Ad

More from Nuvole (13)

PDF
Advanced Configuration Management with Config Split et al.
PDF
Introducing the UI Patterns module: use atomic UI components everywhere in Dr...
PDF
Drupal 8 Configuration Management with Features
PDF
Configuration Management in Drupal 8: A preview (DrupalCamp Alpe Adria 2014)
PDF
Configuration Management in Drupal 8: A preview (DrupalDays Milano 2014)
KEY
Automating Drupal Development: Makefiles, features and beyond
PDF
Building and Maintaining a Distribution in Drupal 7 with Features
KEY
Remote Collaboration and Institutional Intranets with Drupal and Open Atrium
KEY
Public Works Monitoring
PDF
Extending and Customizing Open Atrium
PDF
Code driven development: using Features effectively in Drupal 6 and 7
PDF
Features based development workflow
ZIP
First Steps in Drupal Code Driven Development
Advanced Configuration Management with Config Split et al.
Introducing the UI Patterns module: use atomic UI components everywhere in Dr...
Drupal 8 Configuration Management with Features
Configuration Management in Drupal 8: A preview (DrupalCamp Alpe Adria 2014)
Configuration Management in Drupal 8: A preview (DrupalDays Milano 2014)
Automating Drupal Development: Makefiles, features and beyond
Building and Maintaining a Distribution in Drupal 7 with Features
Remote Collaboration and Institutional Intranets with Drupal and Open Atrium
Public Works Monitoring
Extending and Customizing Open Atrium
Code driven development: using Features effectively in Drupal 6 and 7
Features based development workflow
First Steps in Drupal Code Driven Development

Recently uploaded (20)

PPTX
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
PDF
KodekX | Application Modernization Development
PDF
Modernizing your data center with Dell and AMD
PDF
Empathic Computing: Creating Shared Understanding
PDF
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
PPTX
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
PDF
Spectral efficient network and resource selection model in 5G networks
PDF
Agricultural_Statistics_at_a_Glance_2022_0.pdf
PDF
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
PDF
Network Security Unit 5.pdf for BCA BBA.
PDF
CIFDAQ's Market Insight: SEC Turns Pro Crypto
PPTX
20250228 LYD VKU AI Blended-Learning.pptx
PPTX
A Presentation on Artificial Intelligence
PDF
Electronic commerce courselecture one. Pdf
PDF
Per capita expenditure prediction using model stacking based on satellite ima...
PDF
Encapsulation theory and applications.pdf
PPTX
Big Data Technologies - Introduction.pptx
PDF
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
PPTX
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
PDF
NewMind AI Weekly Chronicles - August'25 Week I
PA Analog/Digital System: The Backbone of Modern Surveillance and Communication
KodekX | Application Modernization Development
Modernizing your data center with Dell and AMD
Empathic Computing: Creating Shared Understanding
Architecting across the Boundaries of two Complex Domains - Healthcare & Tech...
Effective Security Operations Center (SOC) A Modern, Strategic, and Threat-In...
Spectral efficient network and resource selection model in 5G networks
Agricultural_Statistics_at_a_Glance_2022_0.pdf
Blue Purple Modern Animated Computer Science Presentation.pdf.pdf
Network Security Unit 5.pdf for BCA BBA.
CIFDAQ's Market Insight: SEC Turns Pro Crypto
20250228 LYD VKU AI Blended-Learning.pptx
A Presentation on Artificial Intelligence
Electronic commerce courselecture one. Pdf
Per capita expenditure prediction using model stacking based on satellite ima...
Encapsulation theory and applications.pdf
Big Data Technologies - Introduction.pptx
How UI/UX Design Impacts User Retention in Mobile Apps.pdf
KOM of Painting work and Equipment Insulation REV00 update 25-dec.pptx
NewMind AI Weekly Chronicles - August'25 Week I

The OpenEuropa Initiative

  • 1. The OpenEuropa Initiative An open source approach to software as a service at the European Commission Antonio De Marco nuvole.org - info@nuvole.org - @nuvoleweb
  • 2. About me Hello, I’m Antonio. ● Director and co-founder of Nuvole ● From 2015 consulting part-time for Nuvole at the European Commission ● From 2018 co-founder and team leader of the OpenEuropa Initiative at the Directorate-General for Informatics (DIGIT) Disclaimer: the use case we are presenting today is built and maintained by a large team of consultants, working for different companies. 2
  • 3. About Nuvole ● From 2010, a proud Drupal company ● Complex Drupal projects Interfacing with other systems or featuring complex front-end requirements ● Working with NGOs and public institutions An international team rooted in NGOs and comfortable working with large NGOs and public institutions (World Food Programme, European Commission, OECD, World Bank) https://nuvole.org 3
  • 4. Nuvole in the Drupal Community ● Long time Drupal contributors Our open-source Drupal modules were downloaded more than 1 million times ● Drupal core contribution Co-leading the official Drupal 8 Configuration Management Initiative ● Drupal events Invited as presenters at several annual EU/US Drupal conferences (DrupalCon) ● Drupal trainers 10+ times official DrupalCon trainers + large organizations (HP, European Commission, etc.) 4
  • 5. The European Union web presence 5
  • 6. The European Union web presence ● 2 main institutional sites: ○ The European Commission: https://ec.europa.eu ○ The European Union: https://europa.eu ● 40 European agencies, such as: ○ EFSA, the European Food Safety Authority ○ Frontex, the European Border and Coast Guard Agency ● 27 Commission's Representations sites, such as ○ Italy: https://italy.representation.ec.europa.eu ○ Belgium: https://belgium.representation.ec.europa.eu ● Hundreds more: the Europass site, the COVID-19 response site, etc. 6
  • 7. 7
  • 8. 8
  • 9. 9
  • 10. 10
  • 11. Managing institutional content is hard ● Multilingualism, supporting the 24 official languages in the EU ● Integration with the EU internal translation services ● Advanced content moderation workflow ● Scheduling content publication for sensitive news ● Harmonization of content categorization via shared taxonomies ● Centralized authentication and authorization system ● Integration with ECAS, the European Single Sign-On Service. ● Integration with the European Union Webtools widgets ● etc... 11
  • 12. Drupal at the European Commission 12
  • 13. Drupal at the European Commission ● 2012: a pilot project, the Multisite Platform, based on Drupal 7: ○ A common web management infrastructure ○ Rationalise the web presence of the EC ○ A coherent corporate image ○ Cost sharing amongst the different Directorate Generals ● 2014: the Europa platform, based on Drupal 7: ○ A Drupal 7 distribution built on the Multisite Platform experience ○ Aimed at migrating away from the then outdated web publishing platform ● 2015-2017: Migration of hundreds of websites to the Europa platform ○ Including the two main institutional sites 13
  • 14. The Europa platform: a monolithic approach ● A SaaS built as a Drupal 7 distribution ● Organised in Drupal features, using the Features module ● Possibility for site owners to enable and disable features from the UI ● A first, genuine, attempt to business requirement orchestrations ● Allowed for extra customizations, on the final client’s expense 14
  • 15. The Europa platform: a monolithic approach Drupal 7 Core Installation Profile Feature A Feature B Feature C Feature D Site custom code 15
  • 16. The reality of a monolithic approach ● Large code base, difficult to maintain ● Long tests runs, not 100% covered ● New features might break existing sites ● Hard to involve people to contribute ● High deployment time ● Used more as a framework than a service 16
  • 17. Other drawbacks ● A single codebase with tens of developers contributing to it ● Clients were hiring their own teams to manage the site ● 100 sites / 100 ways of implementing the same thing ○ Clients could extend it by hiring their own development team in house ○ Custom functionalities would require significant overrides ○ Development would then happen on a separate repository ● 100 ways of implementing the same thing / 1000 developers ○ Hard to maintain technical governance ○ Hard to monitor security ○ High cost of maintainability and quality assurance processes 17
  • 19. Drupal 8: an opportunity In 2018 the migration of the Europa platform to Drupal 8 presented an opportunity for a paradigm shift by leveraging: ● The maturity of a proper package management system ● The adoption of semantic versioning ● The raise of containerised applications 19
  • 20. The OpenEuropa Initiative OpenEuropa is a European Commission initiative aimed at strengthening the adoption of open source tools and practices, particularly focused to: ● Build and maintain loosely-coupled, reusable software components, ● Build fully-fledged solutions for the European Institutions ● Establish reusable technical governance guidelines ● Contribute back to upstream open source projects, such as Drupal https://github.com/openeuropa/documentation 20
  • 21. 21
  • 22. A “component-based” approach (1/2) Each component (e.g. a Drupal module, or a PHP library): ● Has its own repository ● Enjoys an independent release cycle ● Is tested separately ● Has a dedicated continuous integration pipeline ● Is semantically versioned (x.y.z) ● Describes its own dependencies 22
  • 23. A “component-based” approach (2/2) Each component has everything that a developer needs to kickstart development, bundled right in its repository. For example, in case of a Drupal module: ● Running composer install builds a fully functional site, right within the component root directory, allowing to kickstart development ● Running docker-compose up -d spins off a fully functional environment, with all needed services (web server, database, etc.) ● Behat and functional PHPUnit tests are run against the target site ● Context-switching for developers is reduced to the minimum 23
  • 24. Project setup Fully functional development site Continuous Integration and deployment 24
  • 25. Advantages A component-based approach: ● Leverages modern dependency package manager, like Composer ● Leverages Drupal's modularity as a point of strength ● Makes it easier to write and maintain tests ● Allows for a shorter “time-to-market” per component ● Facilitates intra-team contributions ● Facilitates external contributions ● Facilitates the adoption of open source tools and practices 25
  • 26. Breaking up the monolith Core Profile A B Site specific Site A Core Profile C Site specific Site B A 1.1.0 A 1.1.1 A 2.0.0 C 0.0.1 C 0.0.2 C 0.1.0 B 0.1.0 B 0.2.0 B 0.2.1 B 1.0.0 B 1.0.1 C 1.0.0 Time 26
  • 27. 27
  • 28. 28
  • 29. 29
  • 30. 30
  • 31. 31
  • 32. Building and maintaining OpenEuropa 32
  • 33. An example: the EU’s visual identity The Europa Component Library (ECL) is a comprehensive style guide containing the design elements and visual standards to harmonize the European Union web presence. https://ec.europa.eu/component-library 33
  • 35. Aim: provide an ECL Drupal theme The OpenEuropa Theme component must: ● Allow Drupal sites to feature an ECL look and feel ● Allow a site owner to choose between the EC and the EU branding ● Reuse the components in their native Twig implementation 35
  • 36. Theme architecture Three main components working together: ● ECL Twig Loader: loads ECL components using a custom Twig namespace ● OpenEuropa Theme: themes Drupal frontend using ECL components and exposes them as UI Patterns ● Composer Artifacts: allows projects to use a fully built theme artifact which contains ECL templates and compiled frontend assets Other than “the usuals”: the Task Runner and the Code Review component 36
  • 37. Europa Component Library ECL Twig Loader Provides reusable components for an harmonized look and feel Imports ECL templates in any PHP application using Twig {% include '@ecl/...' with { 'variant' : 'default' , 'title': title, 'detail' : detail, } %} {% include '@ecl/...' with { 'Primary_image' : image, 'title': title, 'detail' : detail, } %} {% include '@ecl/...' with { 'secondary_image' : image, 'title': title, 'detail' : detail, } %} OpenEuropa Theme Drupal theme providing ECL components integration UI Patterns Field formatters View displays Entity view modes 37
  • 38. Using the theme’s artifact ECL ECL Loader Theme Site builders Site developers Core components 38
  • 39. Building a SaaS on top of OpenEuropa 39
  • 40. A new SaaS for the EU web presence OpenEuropa allows for a streamlined way of building and maintaining SaaS platforms. Since 2018 we have been building a SaaS that is powering the next generation of the European Union web presence. The SaaS platform is: ● A private Drupal distribution ● Built using OpenEuropa components ● Tweaked by custom modules and themes, shipped within the distribution 40
  • 41. Stitching it all together Public components Private distribution Theme Corporate Content Multilingual support Editorial Workflow OpenEuropa Modules Translation client Composer artifacts OpenEuropa Libraries Search API Paragraphs Contributed modules Drupal profile Custom module 1 Custom module 2 Custom theme 41
  • 42. An economy of scale A few non-functional requirements were clear since the beginning: ● The new SaaS platform is built to serve hundreds of sites ● Updates need to be rolled out all at the same time ● Each site needs to be built and managed by the site owners, without employing any dedicated developer ● Eventually, a site owner can decide to “break free” from the flock, and start its own development, while still keeping the possibility of upgrading to newest SaaS versions 42
  • 43. How we did it ● We have one repository called the master site: ○ A Composer-based Drupal site repository ○ It requires the SaaS Drupal profile ● Each other site instance gets its very own repository ● Each site instance repository is a git-fork of the master site ● A new release of the master site triggers a waterfall release pipeline, which releases all the other site instances 43
  • 44. Release one, deploy hundreds 44 Master site Release manager tags a release Site A Site B Site C Site D Site A Site B Site C PROD PROD Deployment pipeline Test pipeline
  • 45. Where we stand now 45
  • 46. OpenEuropa in numbers ● More than 70 components, including Drupal modules, PHP libraries, Docker images, development tools, templates, etc. ● More than 100 developers, divided in 20 teams, contribute daily to the initiative ● Around 100 sites on the SaaS platform, out of which 50+ are currently live, in production ● Tens of custom (non-SaaS) sites have been built using the OpenEuropa components 46
  • 47. Thank You nuvole.org - info@nuvole.org