ez publish 5 in depth inspection

Post on 04-Jun-2015

1.427 Views

Category:

Technology

1 Downloads

Preview:

Click to see full reader

DESCRIPTION

Insight of eZ Publish 5 from eZ engineers (integration with Symfony2/Twig, Public API, REST API, ...)

TRANSCRIPT

eZ#Publish#5#in-depth#inspec2on#Insights(from(eZ(Engineers

Overview

1. Glossary2. Structure

1. Git2. Directories, where is the stuff ?

3. eZ Publish Symfony integration1. New template engine2. eZ Publish 5 Symfony code3. Legacy fallback

4. Public API (“PAPI”)5. REST

1. Spec2. Demo!

! 10/18/12! Presenter: eZ Engineering

Glossary: 4.x -> 5.x

3

(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

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

! 10/18/12! Presenter: eZ Engineering

Glossary: 4.x -> 5.x

4

Module Controller

Module view Controller action (method)

Fetch Sub request (render)

Template operator filter + function

Template function tag

Extension Bundle

ObjectState ObjectState

- Template operators, all basic operations are covered by twig example later

eZ Publish 5 Structure

! 10/18/12! Presenter: eZ Engineering 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

The meta is purely to pull in all dependencies to create a full eZ Publish 5 installation using composerNext slide will drill down eZ Publish 5.x meta repository

! 10/18/12! Presenter: eZ Engineering

eZ Publish 5 Structure: ezsystems/ezpublish5

app ezpublish_legacy

src <your custom bundles>

vendor ezsystems− ezpublish

symfony twig zetacomponents

web7

app is project config, cache and logsCurrently contains eZ Publish 4.x, and your custom config

src is project code filesCurrently 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

! 10/18/12! Presenter: eZ Engineering

eZ Publish 5 Symfony Integration: Templates

9

From:

! 10/18/12! Presenter: eZ Engineering

eZ Publish 5 Symfony Integration: Templates

10

To:

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

! 10/18/12! Presenter: eZ Engineering

eZ Publish 5 Public API: Structure

20

doceZ

Publish− API

− Core

− SPI

settingsvendor

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

! 10/18/12! Presenter: eZ Engineering

eZ Publish 5 Public API: Use in DemoBundle

21

eZ Publish 5 REST API

2424

Fin

Twitter : @jvieilledent, @dpobel, @andrerom, @patrick_allaert, @bdunogier

https://joind.in/7525

top related