SlideShare a Scribd company logo
1 of 42
Download to read offline
Gimme Five!
The road to TYPO3 5.0 „Phoenix“
Phoenix
Phoenix
Overview
  Starting point: Why we need TYPO3 5.0

  Beyond the horizon: Objectives of the project

  Project status: What has happened so far

  A flexible foundation: The content repository

  The road to Phoenix: An initial roadmap
Why we need TYPO3 5.0
Some reasons for 5.0 ...
  Complexity - the TYPO3 core architecture reached its limit and
  takes quite some time to learn

  Data model – the current approach is not flexible enough and
  direct database access (even through DBAL) causes problems

  PHP5 – the new features of PHP5 allow for a much cleaner and
  developer-friendly architecture

  Connectivity – a future architecture will provide much better
  support for external access (SOAP, WebDAV, 3rd party tools)
Some more reasons for 5.0 ...
  In the mid term TYPO3 will have about 10.000 extensions - of
  varying quality in terms of code and security

  In large-scale enterprises and medium-sized businesses TYPO3
  is increasingly used in critical areas

  The developer teams will grow and require a more modular and
  accessible software

  New CMS projects can use new technologies irrespective of
  legacy – why shouldn‘t we?
Objectives of the project
Core objectives
  Creation of a clean code base

  Protection of TYPO3‘s „soul“

  Modularity and abstraction of the core functions

  Flexible and scalable architecture

  Use of standards and established techniques

  Ease of use on all levels

  Realistic migration path
Challenge: architecture
  Layered architecture: pretty easy

    pretty: lowest level meets highest aesthetic requirements

    easy: highest level is easy to use - even for PHP rookies

  Built-in security (examples):

    data access through objects

    Cross-site-scripting and SQL injection is not possible

  Upfront recycle design with radical refactoring
Migration and acceptance
  Development of TYPO3 4.x and 5.x continues in parallel

  Protection of investment into knowledge and development

    Early integration of the community

    Easy migration of important components

    Well-proven concepts are preserved
Impact roadmap
  Core objective “Ease of use “:
What has happened so far
Initial ideas
  Decision for creating a version 5.0 with a new architecture has
  been taken at the R&D committee meeting in May 2005

  First R&D meeting specifically about 5.0 took place in
  December 2005

  Final R&D meeting with brainstorming sessions in June 2006
Project start
  Official start at the TYPO3 Developer Days 2006 in
  Dietikon / Switzerland

  Brainstorming sessions had the same results as previous
  sessions and most of the discussions in the mailing lists

  A project website and a mailing list for general discussion has
  been created

  Karsten and Robert have (almost) weekly meetings for planning
  the 5.0 project
Teams and contribution
  Foster diversity and innovation by different teams

  Have your own mind – do research, create sketches,
  play with code

  Create your own stand on the bazar
A new architecture
Tabula rasa
  TYPO3 5.0 development starts from scratch

  Improved Coding Guidelines and Coding Style Guide with
  glossary

  Some base components are designed and implemented, then
  other components are shaped and filled with code from the 4.x
  branch
Components
  Virtually any part of TYPO3 can be replaced by a
  new component providing the same API

  Components have sub (-sub, ...) components

  Each component has a well-defined interface.
  Encapsulation is enforced

  Frontend plugins and backend modules are components, too.
  They just fall into a certain category
Component examples
The content repository
Current situation: RDBMS via DBAL
  Trees are stored in different tables

  Data is stored in table fields

  Adding properties means adding fields to the table structure

  Nested records are stored as XML in one table field

  Records can be queried via SQL

  Abstraction on query-level (no transactions, procedures etc.)

  Not all data is stored in the database but in files
Flexible data structures
in TYPO3 4.x
  The data structure of tt_content is fixed

  The flexible data structure is stored as XML in one field:
Flexible data structures
in TYPO3 4.x
  The data structure of tt_content is fixed

  The flexible data structure is stored as XML in one field:




                                       B AD!
B-Trees and other plants
B-Trees and other plants
B-Trees and other plants
B-Trees and other plants
TYPO3 CR: ODBMS
  A CR is a kind of object database for storing hierarchical data

  On top of a regular data source (MySQL, Oracle, CSV, Excel ...)

  Trees are stored as nodes, data natively as properties

  Nested „records“ are just stored as sub nodes

  Data can be queried through SQL and XPATH

  All storage and retrieval of data is handled through objects

  All content (even files) is stored in the content repository
Advantages of a
Content Repository
  Flexible and extensible data structure

    eg. data structures of TemplaVoilá‘s Flexible Content Elements
    are stored directly in the repository and can be queried

  Object based storage and retrieval

    Combines all advantages of navigational and relational
    databases

    Security can be enforced on a higher level

    Cleaner and easier to use for the developer
Advantages of a
Content Repository
  Data source abstraction instead of database abstraction

    Data can be stored in different ways, a database is only one
    of them

    Due to the higher level of abstraction, database specific
    functions and specialties like transactions, stored procedures,
    partitioning ... can be used on the CR implementation level

  Speed

    Depending on the CR implementation the speed gain for read
    access to the content tree can be immense
JSR-170
  Java Specification Request N° 170

  Specifies a standard API to access content repositories in Java
  independent of the implementation

  JCR implementations:

    DAY CRX (reference implementation)

    Jackrabbit (open source)
JSR-170 and TYPO3 ?
  In TYPO3 5.0 we want a content repository based on generic
  nodes and properties

  JSR-170 defines a full featured API to access such a repository,
  including

    Session handling

    Transactions

    Workspaces

  Why reinvent the wheel?
JSR-170 and TYPO3 ?
  The Java bridge allows us to access a Jackrabbit repository
  from PHP – that‘s a temporary shortcut!

  TYPO3 5.0 will still run completely without Java - by accessing
  the PHP-based TYPO3 CR, based on the APIs defined in JSR-170

  The goal: A flexible and powerful content repository for TYPO3
  written in PHP 5

    TYPO3 CR uses the JSR-170 interfaces where possible

    Maybe only 98% of the standard will be implemented
An initial roadmap
Inital Roadmap
     http://typo3.org/teams/5.0-development/roadmap/
Inital Roadmap
         http://typo3.org/teams/5.0-development/roadmap/

 Milestone one: Raw content access

 Milestone two: Users, Rights and Localization / Translation

 Milestone three: Rebirth of the frontend

 Milestone four: Rebirth of the backend

 Preview 1: Migration of backend extensions starts

 Preview 2: Migration of frontend extensions starts
Links & resources
  TYPO3 5.0 Development Team:
  http://typo3.org/gimmefive

  These slides and other resources:
  http://typo3.org/teams/5.0-development/resources/

  The initial roadmap
  http://typo3.org/teams/5.0-development/roadmap/

  The TYPO3 Association Paypal account
  paypal@typo3.org
Gimme Five!
The road to TYPO3 5.0 „Phoenix“
Inspiring People To Share

More Related Content

More from Robert Lemke

Scaleable PHP Applications in Kubernetes
Scaleable PHP Applications in KubernetesScaleable PHP Applications in Kubernetes
Scaleable PHP Applications in KubernetesRobert Lemke
 
Flownative Beach - Neos Meetup Hamburg 2022
Flownative Beach - Neos Meetup Hamburg 2022Flownative Beach - Neos Meetup Hamburg 2022
Flownative Beach - Neos Meetup Hamburg 2022Robert Lemke
 
GitOps with Flux - IPC Munich 2022
GitOps with Flux - IPC Munich 2022GitOps with Flux - IPC Munich 2022
GitOps with Flux - IPC Munich 2022Robert Lemke
 
OpenID Connect with Neos and Flow
OpenID Connect with Neos and FlowOpenID Connect with Neos and Flow
OpenID Connect with Neos and FlowRobert Lemke
 
Neos Conference 2019 Keynote
Neos Conference 2019 KeynoteNeos Conference 2019 Keynote
Neos Conference 2019 KeynoteRobert Lemke
 
A practical introduction to Kubernetes (IPC 2018)
A practical introduction to Kubernetes (IPC 2018)A practical introduction to Kubernetes (IPC 2018)
A practical introduction to Kubernetes (IPC 2018)Robert Lemke
 
Neos Conference 2018 Welcome Keynote
Neos Conference 2018 Welcome KeynoteNeos Conference 2018 Welcome Keynote
Neos Conference 2018 Welcome KeynoteRobert Lemke
 
A practical introduction to Event Sourcing and CQRS
A practical introduction to Event Sourcing and CQRSA practical introduction to Event Sourcing and CQRS
A practical introduction to Event Sourcing and CQRSRobert Lemke
 
Neos Conference 2017 Welcome Keynote
Neos Conference 2017 Welcome KeynoteNeos Conference 2017 Welcome Keynote
Neos Conference 2017 Welcome KeynoteRobert Lemke
 
IPC16: A Practical Introduction to Kubernetes
IPC16: A Practical Introduction to Kubernetes IPC16: A Practical Introduction to Kubernetes
IPC16: A Practical Introduction to Kubernetes Robert Lemke
 
IPC 2016: Content Strategy for Developers
IPC 2016: Content Strategy for DevelopersIPC 2016: Content Strategy for Developers
IPC 2016: Content Strategy for DevelopersRobert Lemke
 
Meet Neos Nürnberg 2016: Ja ich will!
Meet Neos Nürnberg 2016: Ja ich will!Meet Neos Nürnberg 2016: Ja ich will!
Meet Neos Nürnberg 2016: Ja ich will!Robert Lemke
 
Meet Neos Nürnberg 2016: Hallo Neos!
Meet Neos Nürnberg 2016: Hallo Neos!Meet Neos Nürnberg 2016: Hallo Neos!
Meet Neos Nürnberg 2016: Hallo Neos!Robert Lemke
 
Turning Neos inside out / React.js HH
Turning Neos inside out / React.js HHTurning Neos inside out / React.js HH
Turning Neos inside out / React.js HHRobert Lemke
 
Docker in Production - IPC 15 München
Docker in Production - IPC 15 MünchenDocker in Production - IPC 15 München
Docker in Production - IPC 15 MünchenRobert Lemke
 
Two Stack CMS - code.talks 2015
Two Stack CMS - code.talks 2015Two Stack CMS - code.talks 2015
Two Stack CMS - code.talks 2015Robert Lemke
 
Two Stack CMS – code.talks Hamburg 2015
Two Stack CMS – code.talks Hamburg 2015Two Stack CMS – code.talks Hamburg 2015
Two Stack CMS – code.talks Hamburg 2015Robert Lemke
 
Neos: Assets in the Cloud - Inspiring Conference 2015
Neos: Assets in the Cloud - Inspiring Conference 2015Neos: Assets in the Cloud - Inspiring Conference 2015
Neos: Assets in the Cloud - Inspiring Conference 2015Robert Lemke
 
Neos – Past, Present, Future – Keynote Inspiring Conference 2015
Neos – Past, Present, Future – Keynote Inspiring Conference 2015Neos – Past, Present, Future – Keynote Inspiring Conference 2015
Neos – Past, Present, Future – Keynote Inspiring Conference 2015Robert Lemke
 
SPHERE.IO & Neos (eCommerce Camp Jena)
SPHERE.IO & Neos (eCommerce Camp Jena)SPHERE.IO & Neos (eCommerce Camp Jena)
SPHERE.IO & Neos (eCommerce Camp Jena)Robert Lemke
 

More from Robert Lemke (20)

Scaleable PHP Applications in Kubernetes
Scaleable PHP Applications in KubernetesScaleable PHP Applications in Kubernetes
Scaleable PHP Applications in Kubernetes
 
Flownative Beach - Neos Meetup Hamburg 2022
Flownative Beach - Neos Meetup Hamburg 2022Flownative Beach - Neos Meetup Hamburg 2022
Flownative Beach - Neos Meetup Hamburg 2022
 
GitOps with Flux - IPC Munich 2022
GitOps with Flux - IPC Munich 2022GitOps with Flux - IPC Munich 2022
GitOps with Flux - IPC Munich 2022
 
OpenID Connect with Neos and Flow
OpenID Connect with Neos and FlowOpenID Connect with Neos and Flow
OpenID Connect with Neos and Flow
 
Neos Conference 2019 Keynote
Neos Conference 2019 KeynoteNeos Conference 2019 Keynote
Neos Conference 2019 Keynote
 
A practical introduction to Kubernetes (IPC 2018)
A practical introduction to Kubernetes (IPC 2018)A practical introduction to Kubernetes (IPC 2018)
A practical introduction to Kubernetes (IPC 2018)
 
Neos Conference 2018 Welcome Keynote
Neos Conference 2018 Welcome KeynoteNeos Conference 2018 Welcome Keynote
Neos Conference 2018 Welcome Keynote
 
A practical introduction to Event Sourcing and CQRS
A practical introduction to Event Sourcing and CQRSA practical introduction to Event Sourcing and CQRS
A practical introduction to Event Sourcing and CQRS
 
Neos Conference 2017 Welcome Keynote
Neos Conference 2017 Welcome KeynoteNeos Conference 2017 Welcome Keynote
Neos Conference 2017 Welcome Keynote
 
IPC16: A Practical Introduction to Kubernetes
IPC16: A Practical Introduction to Kubernetes IPC16: A Practical Introduction to Kubernetes
IPC16: A Practical Introduction to Kubernetes
 
IPC 2016: Content Strategy for Developers
IPC 2016: Content Strategy for DevelopersIPC 2016: Content Strategy for Developers
IPC 2016: Content Strategy for Developers
 
Meet Neos Nürnberg 2016: Ja ich will!
Meet Neos Nürnberg 2016: Ja ich will!Meet Neos Nürnberg 2016: Ja ich will!
Meet Neos Nürnberg 2016: Ja ich will!
 
Meet Neos Nürnberg 2016: Hallo Neos!
Meet Neos Nürnberg 2016: Hallo Neos!Meet Neos Nürnberg 2016: Hallo Neos!
Meet Neos Nürnberg 2016: Hallo Neos!
 
Turning Neos inside out / React.js HH
Turning Neos inside out / React.js HHTurning Neos inside out / React.js HH
Turning Neos inside out / React.js HH
 
Docker in Production - IPC 15 München
Docker in Production - IPC 15 MünchenDocker in Production - IPC 15 München
Docker in Production - IPC 15 München
 
Two Stack CMS - code.talks 2015
Two Stack CMS - code.talks 2015Two Stack CMS - code.talks 2015
Two Stack CMS - code.talks 2015
 
Two Stack CMS – code.talks Hamburg 2015
Two Stack CMS – code.talks Hamburg 2015Two Stack CMS – code.talks Hamburg 2015
Two Stack CMS – code.talks Hamburg 2015
 
Neos: Assets in the Cloud - Inspiring Conference 2015
Neos: Assets in the Cloud - Inspiring Conference 2015Neos: Assets in the Cloud - Inspiring Conference 2015
Neos: Assets in the Cloud - Inspiring Conference 2015
 
Neos – Past, Present, Future – Keynote Inspiring Conference 2015
Neos – Past, Present, Future – Keynote Inspiring Conference 2015Neos – Past, Present, Future – Keynote Inspiring Conference 2015
Neos – Past, Present, Future – Keynote Inspiring Conference 2015
 
SPHERE.IO & Neos (eCommerce Camp Jena)
SPHERE.IO & Neos (eCommerce Camp Jena)SPHERE.IO & Neos (eCommerce Camp Jena)
SPHERE.IO & Neos (eCommerce Camp Jena)
 

The road to TYPO3 5.0 Phoenix

  • 1. Gimme Five! The road to TYPO3 5.0 „Phoenix“
  • 4. Overview Starting point: Why we need TYPO3 5.0 Beyond the horizon: Objectives of the project Project status: What has happened so far A flexible foundation: The content repository The road to Phoenix: An initial roadmap
  • 5. Why we need TYPO3 5.0
  • 6. Some reasons for 5.0 ... Complexity - the TYPO3 core architecture reached its limit and takes quite some time to learn Data model – the current approach is not flexible enough and direct database access (even through DBAL) causes problems PHP5 – the new features of PHP5 allow for a much cleaner and developer-friendly architecture Connectivity – a future architecture will provide much better support for external access (SOAP, WebDAV, 3rd party tools)
  • 7. Some more reasons for 5.0 ... In the mid term TYPO3 will have about 10.000 extensions - of varying quality in terms of code and security In large-scale enterprises and medium-sized businesses TYPO3 is increasingly used in critical areas The developer teams will grow and require a more modular and accessible software New CMS projects can use new technologies irrespective of legacy – why shouldn‘t we?
  • 9. Core objectives Creation of a clean code base Protection of TYPO3‘s „soul“ Modularity and abstraction of the core functions Flexible and scalable architecture Use of standards and established techniques Ease of use on all levels Realistic migration path
  • 10. Challenge: architecture Layered architecture: pretty easy pretty: lowest level meets highest aesthetic requirements easy: highest level is easy to use - even for PHP rookies Built-in security (examples): data access through objects Cross-site-scripting and SQL injection is not possible Upfront recycle design with radical refactoring
  • 11. Migration and acceptance Development of TYPO3 4.x and 5.x continues in parallel Protection of investment into knowledge and development Early integration of the community Easy migration of important components Well-proven concepts are preserved
  • 12. Impact roadmap Core objective “Ease of use “:
  • 14. Initial ideas Decision for creating a version 5.0 with a new architecture has been taken at the R&D committee meeting in May 2005 First R&D meeting specifically about 5.0 took place in December 2005 Final R&D meeting with brainstorming sessions in June 2006
  • 15. Project start Official start at the TYPO3 Developer Days 2006 in Dietikon / Switzerland Brainstorming sessions had the same results as previous sessions and most of the discussions in the mailing lists A project website and a mailing list for general discussion has been created Karsten and Robert have (almost) weekly meetings for planning the 5.0 project
  • 16. Teams and contribution Foster diversity and innovation by different teams Have your own mind – do research, create sketches, play with code Create your own stand on the bazar
  • 18. Tabula rasa TYPO3 5.0 development starts from scratch Improved Coding Guidelines and Coding Style Guide with glossary Some base components are designed and implemented, then other components are shaped and filled with code from the 4.x branch
  • 19. Components Virtually any part of TYPO3 can be replaced by a new component providing the same API Components have sub (-sub, ...) components Each component has a well-defined interface. Encapsulation is enforced Frontend plugins and backend modules are components, too. They just fall into a certain category
  • 22. Current situation: RDBMS via DBAL Trees are stored in different tables Data is stored in table fields Adding properties means adding fields to the table structure Nested records are stored as XML in one table field Records can be queried via SQL Abstraction on query-level (no transactions, procedures etc.) Not all data is stored in the database but in files
  • 23. Flexible data structures in TYPO3 4.x The data structure of tt_content is fixed The flexible data structure is stored as XML in one field:
  • 24. Flexible data structures in TYPO3 4.x The data structure of tt_content is fixed The flexible data structure is stored as XML in one field: B AD!
  • 29. TYPO3 CR: ODBMS A CR is a kind of object database for storing hierarchical data On top of a regular data source (MySQL, Oracle, CSV, Excel ...) Trees are stored as nodes, data natively as properties Nested „records“ are just stored as sub nodes Data can be queried through SQL and XPATH All storage and retrieval of data is handled through objects All content (even files) is stored in the content repository
  • 30. Advantages of a Content Repository Flexible and extensible data structure eg. data structures of TemplaVoilá‘s Flexible Content Elements are stored directly in the repository and can be queried Object based storage and retrieval Combines all advantages of navigational and relational databases Security can be enforced on a higher level Cleaner and easier to use for the developer
  • 31. Advantages of a Content Repository Data source abstraction instead of database abstraction Data can be stored in different ways, a database is only one of them Due to the higher level of abstraction, database specific functions and specialties like transactions, stored procedures, partitioning ... can be used on the CR implementation level Speed Depending on the CR implementation the speed gain for read access to the content tree can be immense
  • 32. JSR-170 Java Specification Request N° 170 Specifies a standard API to access content repositories in Java independent of the implementation JCR implementations: DAY CRX (reference implementation) Jackrabbit (open source)
  • 33. JSR-170 and TYPO3 ? In TYPO3 5.0 we want a content repository based on generic nodes and properties JSR-170 defines a full featured API to access such a repository, including Session handling Transactions Workspaces Why reinvent the wheel?
  • 34. JSR-170 and TYPO3 ? The Java bridge allows us to access a Jackrabbit repository from PHP – that‘s a temporary shortcut! TYPO3 5.0 will still run completely without Java - by accessing the PHP-based TYPO3 CR, based on the APIs defined in JSR-170 The goal: A flexible and powerful content repository for TYPO3 written in PHP 5 TYPO3 CR uses the JSR-170 interfaces where possible Maybe only 98% of the standard will be implemented
  • 35.
  • 36.
  • 37.
  • 39. Inital Roadmap http://typo3.org/teams/5.0-development/roadmap/
  • 40. Inital Roadmap http://typo3.org/teams/5.0-development/roadmap/ Milestone one: Raw content access Milestone two: Users, Rights and Localization / Translation Milestone three: Rebirth of the frontend Milestone four: Rebirth of the backend Preview 1: Migration of backend extensions starts Preview 2: Migration of frontend extensions starts
  • 41. Links & resources TYPO3 5.0 Development Team: http://typo3.org/gimmefive These slides and other resources: http://typo3.org/teams/5.0-development/resources/ The initial roadmap http://typo3.org/teams/5.0-development/roadmap/ The TYPO3 Association Paypal account paypal@typo3.org
  • 42. Gimme Five! The road to TYPO3 5.0 „Phoenix“ Inspiring People To Share