SlideShare una empresa de Scribd logo
1 de 23
Descargar para leer sin conexión
eZ#Publish#5#in-depth#inspec2on#
Insights(from(eZ(Engineers
Overview

1. Glossary
2. Structure
   1. Git
   2. Directories, where is the stuff ?
3. eZ Publish Symfony integration
   1. New template engine
   2. eZ Publish 5 Symfony code
   3. Legacy fallback
4. Public API (“PAPI”)
5. REST
   1. Spec
   2. Demo!
Glossary: 4.x -> 5.x


              (Content) object                                     Content


              (Content) class                                      Content Type


              (Content) attribute                                  Field


              (Content) class attribute                            Field Definition


              Data type                                            Field Type


              Node                                                 Location


              (Content) class group                                Content Type Group

  !   Presenter: eZ Engineering                   !            10/18/12                                                      3


 As one of the first things we defined slightly new names for existing concepts in eZ Publish to move closer to what end users, and
  what other systems out there where using
     Mainly to make sure we can introduce less technical terms at high level as well as low level to make sure everyone eventually
speaks the same simplified domain language
     Also this was done to lower the barrier of entry for new users and developers
Glossary: 4.x -> 5.x


              Module                                               Controller


              Module view                                          Controller action (method)


              Fetch                                                Sub request (render)


              Template operator                                    filter + function


              Template function                                    tag


              Extension                                            Bundle


              ObjectState                                          ObjectState

  !   Presenter: eZ Engineering                   !            10/18/12                         4


- Template operators, all basic operations are covered by twig example later
eZ Publish 5 Structure
eZ Publish 5 Structure: GIT organization ATM


         eZ Publish 5.x meta repository which uses composer to get
          everything else:
             − https://github.com/ezsystems/ezpublish5


                  − eZ Publish 5.x API:
                                  https://github.com/ezsystems/ezp-next



                  − eZ Publish 4.x “LS” repository:
                                  https://github.com/ezsystems/ezpublish




  !   Presenter: eZ Engineering                       !          10/18/12                                  6


The meta is purely to pull in all dependencies to create a full eZ Publish 5 installation using composer
Next slide will drill down eZ Publish 5.x meta repository
eZ Publish 5 Structure: ezsystems/ezpublish5


  app
         ezpublish_legacy
  src
         <your custom bundles>
  vendor
         ezsystems
             − ezpublish
         symfony
         twig
         zetacomponents
  web
  !   Presenter: eZ Engineering      !         10/18/12                                       7


 app is project config, cache and logs
     Currently contains eZ Publish 4.x, and your custom config
 src is project code files
     Currently contains eZ Demo Design bundle, but this will be moved out
 vendor is a folder created by composer when executed as mentioned in Readme.md, will contain all
  project dependencies
     ezsystems/ezpublish is what was referred to as ezp-next on previous slide
 web is folder for everything that should be reachable from the web, aka public folder
eZ Publish 5 Symfony
     integration
eZ Publish 5 Symfony Integration: Templates

From:




!   Presenter: eZ Engineering   !   10/18/12   9
eZ Publish 5 Symfony Integration: Templates

To:




!     Presenter: eZ Engineering   !   10/18/12   10
Backwards Compatibility

                              *Knock knock*
       devs: «Who's there ?»«PM»devs: «PM who ?»«PM who wants
                   to talk about BC»devs: «Oh crap...»




Then the trouble began. We could have picked any other choice, the same
problem would have come anyway.
BC: The challenge



  • 100% data compatible (same database schema)

  • Include legacy templates in new ones

  • Routing fallback

  • Load legacy content templates with legacy rules

  • Settings

  • Access Symfony services from legacy modules


Data compatible : The most important. One can easily switch from a legacy
eZ Publish instance to 5.0
BC: The challenge
BC: The challenge




                         PM SCRUM Story:

          «As an eZ Publish user, I don’t want to be
            pissed off by a new #@!$% version!»




eZ Publish 3 use case (2003). Major change => eZ Publish lost the 2/3rd of
its users, community members... Because there was no BC at all.
BC: The challenge




                       Challenge accepted




Obviously we didn’t have choice...
It was basically trying to make a square fit inside a smaller triangle.
2 completely different systems, with 2 completely different approaches.

We got inspired of what guys from the Symfony community made when
Symfony 2 came out, to make their Symfony 1 application work with it.
BC: The challenge




                      Sandbox Legacy code

                          ...in a Closure !




Code speaks like a thousand
words
BC: The challenge




So yes of course, we needed to refactor a lot the old kernel (esp. the old
front index.php and reduce it from 1.000+ lines to a dozen.
Using runCallback, legacy code is completely isolated. We can keep high
cohesion and loose coupling. Of course it adds some overhead, but it’s
fairly minimal from what it represents.

This is the central feature on top of which we built all the requirements
asked. And guess what ? It works !
BC: Icing on the cake




    eZ Publish legacy still works independently !
eZ Publish 5 Public API
eZ Publish 5 Public API: Structure


  doc
  eZ
         Publish
             − API
             − Core
             − SPI

  settings
  vendor

  !   Presenter: eZ Engineering           !          10/18/12                                         20


 settings is something you can create to override public API settings at the moment, this is done by
  creating file settings/override/service.ini
 vendor is a folder created by composer when executed as mentioned in Readme.md
 API is what you will use when coding against eZ Publish 5
 Core is the implementation of xPI interfaces bundled with the “kernel”, this is only interesting if you
  want to see how implementation is done, in day to day API use you only need to know API
 SPI are the interfaces you can use when you want to extend eZ Publish, the handlers to use 4.x
  terms

 Next slide will drill down into the [Public] API
eZ Publish 5 Public API: Use in DemoBundle




!   Presenter: eZ Engineering   !   10/18/12   21
eZ Publish 5 REST API
Fin

Twitter : @jvieilledent, @dpobel, @andrerom,
        @patrick_allaert, @bdunogier
              https://joind.in/7525
                                               24

Más contenido relacionado

Destacado

Industrializing eZ publish project development
Industrializing eZ publish project developmentIndustrializing eZ publish project development
Industrializing eZ publish project developmentJérôme Vieilledent
 
Introduction to CQRS and Event Sourcing
Introduction to CQRS and Event SourcingIntroduction to CQRS and Event Sourcing
Introduction to CQRS and Event SourcingSamuel ROZE
 
Creating hypermedia APIs in a few minutes using the API Platform framework
Creating hypermedia APIs in a few minutes using the API Platform frameworkCreating hypermedia APIs in a few minutes using the API Platform framework
Creating hypermedia APIs in a few minutes using the API Platform frameworkLes-Tilleuls.coop
 
Utiliser Webpack dans une application Symfony
Utiliser Webpack dans une application SymfonyUtiliser Webpack dans une application Symfony
Utiliser Webpack dans une application SymfonyAlain Hippolyte
 

Destacado (6)

Symfony and eZ Publish
Symfony and eZ PublishSymfony and eZ Publish
Symfony and eZ Publish
 
Industrializing eZ publish project development
Industrializing eZ publish project developmentIndustrializing eZ publish project development
Industrializing eZ publish project development
 
Introduction to CQRS and Event Sourcing
Introduction to CQRS and Event SourcingIntroduction to CQRS and Event Sourcing
Introduction to CQRS and Event Sourcing
 
PHP 7 new engine
PHP 7 new enginePHP 7 new engine
PHP 7 new engine
 
Creating hypermedia APIs in a few minutes using the API Platform framework
Creating hypermedia APIs in a few minutes using the API Platform frameworkCreating hypermedia APIs in a few minutes using the API Platform framework
Creating hypermedia APIs in a few minutes using the API Platform framework
 
Utiliser Webpack dans une application Symfony
Utiliser Webpack dans une application SymfonyUtiliser Webpack dans une application Symfony
Utiliser Webpack dans une application Symfony
 

Similar a eZ Publish 5 in depth inspection

eZ publish 5[-alpha1] Introduction & Architecture
eZ publish 5[-alpha1] Introduction & ArchitectureeZ publish 5[-alpha1] Introduction & Architecture
eZ publish 5[-alpha1] Introduction & ArchitectureAndré Rømcke
 
Ny symfony meetup may 2015
Ny symfony meetup may 2015Ny symfony meetup may 2015
Ny symfony meetup may 2015Roland Benedetti
 
eZ UnConference#2 - eZ Publish 5 basics Philippe Vincent-Royol & Florent Huck
eZ UnConference#2 - eZ Publish 5 basics Philippe Vincent-Royol & Florent HuckeZ UnConference#2 - eZ Publish 5 basics Philippe Vincent-Royol & Florent Huck
eZ UnConference#2 - eZ Publish 5 basics Philippe Vincent-Royol & Florent HuckeZ Publish Community
 
Socket Programming In Python
Socket Programming In PythonSocket Programming In Python
Socket Programming In Pythondidip
 
Unleash your Symfony projects with eZ Platform
Unleash your Symfony projects with eZ PlatformUnleash your Symfony projects with eZ Platform
Unleash your Symfony projects with eZ PlatformSébastien Morel
 
Migrating extensions to eZ Publish 5
Migrating extensions to eZ Publish 5Migrating extensions to eZ Publish 5
Migrating extensions to eZ Publish 5lserwatka
 
EclipseCon 2016 - OCCIware : one Cloud API to rule them all
EclipseCon 2016 - OCCIware : one Cloud API to rule them allEclipseCon 2016 - OCCIware : one Cloud API to rule them all
EclipseCon 2016 - OCCIware : one Cloud API to rule them allMarc Dutoo
 
OCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open Wide
OCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open WideOCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open Wide
OCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open WideOCCIware
 
Office OpenXML: a technical approach for OOo.
Office OpenXML: a technical approach for OOo.Office OpenXML: a technical approach for OOo.
Office OpenXML: a technical approach for OOo.Alexandro Colorado
 
Eclipse Overview
Eclipse Overview Eclipse Overview
Eclipse Overview Lars Vogel
 
ABC of Platform Workspace
ABC of Platform WorkspaceABC of Platform Workspace
ABC of Platform WorkspaceTomasz Zarna
 
Elixir/Phoenix releases and research about common deployment strategies.
Elixir/Phoenix releases and research about common deployment strategies.Elixir/Phoenix releases and research about common deployment strategies.
Elixir/Phoenix releases and research about common deployment strategies.Michael Dimmitt
 
Zend Products and PHP for IBMi
Zend Products and PHP for IBMi  Zend Products and PHP for IBMi
Zend Products and PHP for IBMi Shlomo Vanunu
 
Object Oriented Programming with COBOL
Object Oriented Programming with COBOLObject Oriented Programming with COBOL
Object Oriented Programming with COBOLMicro Focus
 
Dojo Toolkit from a Flex developer's perspective
Dojo Toolkit from a Flex developer's perspectiveDojo Toolkit from a Flex developer's perspective
Dojo Toolkit from a Flex developer's perspectivecjolif
 
FILEgrain: Transport-Agnostic, Fine-Grained Content-Addressable Container Ima...
FILEgrain: Transport-Agnostic, Fine-Grained Content-Addressable Container Ima...FILEgrain: Transport-Agnostic, Fine-Grained Content-Addressable Container Ima...
FILEgrain: Transport-Agnostic, Fine-Grained Content-Addressable Container Ima...Akihiro Suda
 

Similar a eZ Publish 5 in depth inspection (20)

eZ publish 5[-alpha1] Introduction & Architecture
eZ publish 5[-alpha1] Introduction & ArchitectureeZ publish 5[-alpha1] Introduction & Architecture
eZ publish 5[-alpha1] Introduction & Architecture
 
Ny symfony meetup may 2015
Ny symfony meetup may 2015Ny symfony meetup may 2015
Ny symfony meetup may 2015
 
eZ UnConference#2 - eZ Publish 5 basics Philippe Vincent-Royol & Florent Huck
eZ UnConference#2 - eZ Publish 5 basics Philippe Vincent-Royol & Florent HuckeZ UnConference#2 - eZ Publish 5 basics Philippe Vincent-Royol & Florent Huck
eZ UnConference#2 - eZ Publish 5 basics Philippe Vincent-Royol & Florent Huck
 
Socket Programming In Python
Socket Programming In PythonSocket Programming In Python
Socket Programming In Python
 
Unleash your Symfony projects with eZ Platform
Unleash your Symfony projects with eZ PlatformUnleash your Symfony projects with eZ Platform
Unleash your Symfony projects with eZ Platform
 
Migrating extensions to eZ Publish 5
Migrating extensions to eZ Publish 5Migrating extensions to eZ Publish 5
Migrating extensions to eZ Publish 5
 
EclipseCon 2016 - OCCIware : one Cloud API to rule them all
EclipseCon 2016 - OCCIware : one Cloud API to rule them allEclipseCon 2016 - OCCIware : one Cloud API to rule them all
EclipseCon 2016 - OCCIware : one Cloud API to rule them all
 
OCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open Wide
OCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open WideOCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open Wide
OCCIware Project at EclipseCon France 2016, by Marc Dutoo, Open Wide
 
Office OpenXML: a technical approach for OOo.
Office OpenXML: a technical approach for OOo.Office OpenXML: a technical approach for OOo.
Office OpenXML: a technical approach for OOo.
 
Deep Dive into Entity Framework 6.0
Deep Dive into Entity Framework 6.0Deep Dive into Entity Framework 6.0
Deep Dive into Entity Framework 6.0
 
Eclipse Overview
Eclipse Overview Eclipse Overview
Eclipse Overview
 
ABC of Platform Workspace
ABC of Platform WorkspaceABC of Platform Workspace
ABC of Platform Workspace
 
olibc: Another C Library optimized for Embedded Linux
olibc: Another C Library optimized for Embedded Linuxolibc: Another C Library optimized for Embedded Linux
olibc: Another C Library optimized for Embedded Linux
 
Elixir/Phoenix releases and research about common deployment strategies.
Elixir/Phoenix releases and research about common deployment strategies.Elixir/Phoenix releases and research about common deployment strategies.
Elixir/Phoenix releases and research about common deployment strategies.
 
C# tutorial
C# tutorialC# tutorial
C# tutorial
 
Zend Products and PHP for IBMi
Zend Products and PHP for IBMi  Zend Products and PHP for IBMi
Zend Products and PHP for IBMi
 
Object Oriented Programming with COBOL
Object Oriented Programming with COBOLObject Oriented Programming with COBOL
Object Oriented Programming with COBOL
 
Dedicated embedded linux af Esben Haabendal, Prevas A/S
Dedicated embedded linux af Esben Haabendal, Prevas A/SDedicated embedded linux af Esben Haabendal, Prevas A/S
Dedicated embedded linux af Esben Haabendal, Prevas A/S
 
Dojo Toolkit from a Flex developer's perspective
Dojo Toolkit from a Flex developer's perspectiveDojo Toolkit from a Flex developer's perspective
Dojo Toolkit from a Flex developer's perspective
 
FILEgrain: Transport-Agnostic, Fine-Grained Content-Addressable Container Ima...
FILEgrain: Transport-Agnostic, Fine-Grained Content-Addressable Container Ima...FILEgrain: Transport-Agnostic, Fine-Grained Content-Addressable Container Ima...
FILEgrain: Transport-Agnostic, Fine-Grained Content-Addressable Container Ima...
 

Último

UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UbiTrack UK
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Websitedgelyza
 
AI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarAI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarPrecisely
 
Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Brian Pichman
 
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1DianaGray10
 
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfIaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfDaniel Santiago Silva Capera
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding TeamAdam Moalla
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Will Schroeder
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfJamie (Taka) Wang
 
UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPathCommunity
 
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...Aggregage
 
Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioChristian Posta
 
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationUsing IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationIES VE
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URLRuncy Oommen
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsSeth Reyes
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Adtran
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IES VE
 
NIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopNIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopBachir Benyammi
 
Building AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxBuilding AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxUdaiappa Ramachandran
 
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration WorkflowsIgniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration WorkflowsSafe Software
 

Último (20)

UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
UWB Technology for Enhanced Indoor and Outdoor Positioning in Physiological M...
 
COMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a WebsiteCOMPUTER 10 Lesson 8 - Building a Website
COMPUTER 10 Lesson 8 - Building a Website
 
AI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity WebinarAI You Can Trust - Ensuring Success with Data Integrity Webinar
AI You Can Trust - Ensuring Success with Data Integrity Webinar
 
Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )Building Your Own AI Instance (TBLC AI )
Building Your Own AI Instance (TBLC AI )
 
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1UiPath Platform: The Backend Engine Powering Your Automation - Session 1
UiPath Platform: The Backend Engine Powering Your Automation - Session 1
 
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdfIaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
IaC & GitOps in a Nutshell - a FridayInANuthshell Episode.pdf
 
9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team9 Steps For Building Winning Founding Team
9 Steps For Building Winning Founding Team
 
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
Apres-Cyber - The Data Dilemma: Bridging Offensive Operations and Machine Lea...
 
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
activity_diagram_combine_v4_20190827.pdfactivity_diagram_combine_v4_20190827.pdf
 
UiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation DevelopersUiPath Community: AI for UiPath Automation Developers
UiPath Community: AI for UiPath Automation Developers
 
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
The Data Metaverse: Unpacking the Roles, Use Cases, and Tech Trends in Data a...
 
Comparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and IstioComparing Sidecar-less Service Mesh from Cilium and Istio
Comparing Sidecar-less Service Mesh from Cilium and Istio
 
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve DecarbonizationUsing IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
Using IESVE for Loads, Sizing and Heat Pump Modeling to Achieve Decarbonization
 
Designing A Time bound resource download URL
Designing A Time bound resource download URLDesigning A Time bound resource download URL
Designing A Time bound resource download URL
 
Computer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and HazardsComputer 10: Lesson 10 - Online Crimes and Hazards
Computer 10: Lesson 10 - Online Crimes and Hazards
 
Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™Meet the new FSP 3000 M-Flex800™
Meet the new FSP 3000 M-Flex800™
 
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
IESVE Software for Florida Code Compliance Using ASHRAE 90.1-2019
 
NIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 WorkshopNIST Cybersecurity Framework (CSF) 2.0 Workshop
NIST Cybersecurity Framework (CSF) 2.0 Workshop
 
Building AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptxBuilding AI-Driven Apps Using Semantic Kernel.pptx
Building AI-Driven Apps Using Semantic Kernel.pptx
 
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration WorkflowsIgniting Next Level Productivity with AI-Infused Data Integration Workflows
Igniting Next Level Productivity with AI-Infused Data Integration Workflows
 

eZ Publish 5 in depth inspection

  • 2. Overview 1. Glossary 2. Structure 1. Git 2. Directories, where is the stuff ? 3. eZ Publish Symfony integration 1. New template engine 2. eZ Publish 5 Symfony code 3. Legacy fallback 4. Public API (“PAPI”) 5. REST 1. Spec 2. Demo!
  • 3. Glossary: 4.x -> 5.x (Content) object Content (Content) class Content Type (Content) attribute Field (Content) class attribute Field Definition Data type Field Type Node Location (Content) class group Content Type Group ! Presenter: eZ Engineering ! 10/18/12 3  As one of the first things we defined slightly new names for existing concepts in eZ Publish to move closer to what end users, and what other systems out there where using Mainly to make sure we can introduce less technical terms at high level as well as low level to make sure everyone eventually speaks the same simplified domain language Also this was done to lower the barrier of entry for new users and developers
  • 4. Glossary: 4.x -> 5.x Module Controller Module view Controller action (method) Fetch Sub request (render) Template operator filter + function Template function tag Extension Bundle ObjectState ObjectState ! Presenter: eZ Engineering ! 10/18/12 4 - Template operators, all basic operations are covered by twig example later
  • 5. eZ Publish 5 Structure
  • 6. eZ Publish 5 Structure: GIT organization ATM  eZ Publish 5.x meta repository which uses composer to get everything else: − https://github.com/ezsystems/ezpublish5 − eZ Publish 5.x API: https://github.com/ezsystems/ezp-next − eZ Publish 4.x “LS” repository: https://github.com/ezsystems/ezpublish ! Presenter: eZ Engineering ! 10/18/12 6 The meta is purely to pull in all dependencies to create a full eZ Publish 5 installation using composer Next slide will drill down eZ Publish 5.x meta repository
  • 7. eZ Publish 5 Structure: ezsystems/ezpublish5 app  ezpublish_legacy src  <your custom bundles> vendor  ezsystems − ezpublish  symfony  twig  zetacomponents web ! Presenter: eZ Engineering ! 10/18/12 7  app is project config, cache and logs Currently contains eZ Publish 4.x, and your custom config  src is project code files Currently contains eZ Demo Design bundle, but this will be moved out  vendor is a folder created by composer when executed as mentioned in Readme.md, will contain all project dependencies ezsystems/ezpublish is what was referred to as ezp-next on previous slide  web is folder for everything that should be reachable from the web, aka public folder
  • 8. eZ Publish 5 Symfony integration
  • 9. eZ Publish 5 Symfony Integration: Templates From: ! Presenter: eZ Engineering ! 10/18/12 9
  • 10. eZ Publish 5 Symfony Integration: Templates To: ! Presenter: eZ Engineering ! 10/18/12 10
  • 11. Backwards Compatibility *Knock knock* devs: «Who's there ?»«PM»devs: «PM who ?»«PM who wants to talk about BC»devs: «Oh crap...» Then the trouble began. We could have picked any other choice, the same problem would have come anyway.
  • 12. BC: The challenge • 100% data compatible (same database schema) • Include legacy templates in new ones • Routing fallback • Load legacy content templates with legacy rules • Settings • Access Symfony services from legacy modules Data compatible : The most important. One can easily switch from a legacy eZ Publish instance to 5.0
  • 14. BC: The challenge PM SCRUM Story: «As an eZ Publish user, I don’t want to be pissed off by a new #@!$% version!» eZ Publish 3 use case (2003). Major change => eZ Publish lost the 2/3rd of its users, community members... Because there was no BC at all.
  • 15. BC: The challenge Challenge accepted Obviously we didn’t have choice... It was basically trying to make a square fit inside a smaller triangle. 2 completely different systems, with 2 completely different approaches. We got inspired of what guys from the Symfony community made when Symfony 2 came out, to make their Symfony 1 application work with it.
  • 16. BC: The challenge Sandbox Legacy code ...in a Closure ! Code speaks like a thousand words
  • 17. BC: The challenge So yes of course, we needed to refactor a lot the old kernel (esp. the old front index.php and reduce it from 1.000+ lines to a dozen. Using runCallback, legacy code is completely isolated. We can keep high cohesion and loose coupling. Of course it adds some overhead, but it’s fairly minimal from what it represents. This is the central feature on top of which we built all the requirements asked. And guess what ? It works !
  • 18. BC: Icing on the cake eZ Publish legacy still works independently !
  • 19. eZ Publish 5 Public API
  • 20. eZ Publish 5 Public API: Structure doc eZ  Publish − API − Core − SPI settings vendor ! Presenter: eZ Engineering ! 10/18/12 20  settings is something you can create to override public API settings at the moment, this is done by creating file settings/override/service.ini  vendor is a folder created by composer when executed as mentioned in Readme.md  API is what you will use when coding against eZ Publish 5  Core is the implementation of xPI interfaces bundled with the “kernel”, this is only interesting if you want to see how implementation is done, in day to day API use you only need to know API  SPI are the interfaces you can use when you want to extend eZ Publish, the handlers to use 4.x terms  Next slide will drill down into the [Public] API
  • 21. eZ Publish 5 Public API: Use in DemoBundle ! Presenter: eZ Engineering ! 10/18/12 21
  • 22. eZ Publish 5 REST API
  • 23. Fin Twitter : @jvieilledent, @dpobel, @andrerom, @patrick_allaert, @bdunogier https://joind.in/7525 24