SlideShare a Scribd company logo
1 of 62
Future Proof Development



       BUSY NOGGIN DIGITAL
       serious websites for those who mean business
Jeff Segars ‣ jeff@busynoggin.com
                ‣ @jsegars
                ‣ Developer at
                  Busy Noggin Digital
                ‣ TYPO3 Core Team Member




  BUSY NOGGIN
  DIGITAL
Presentation
http://www.slideshare.net/jsegars/future-proof-development

                           Code
              https://github.com/busynoggin




 BUSY NOGGIN
 DIGITAL
What is future proof?




BUSY NOGGIN
DIGITAL
Future ‣ Can my data produced today
   Proof be migrated elsewhere and
   Data    reused in the future?




BUSY NOGGIN
DIGITAL
Future ‣ Will my code continue to
   Proof work in the future?
   Code ‣ Is my code portable to other
               platforms?
              ‣ Is my code maintainable by
                other developers?




BUSY NOGGIN
DIGITAL
Future ‣ Is the platform maintained?
   Proof ‣ Is backwards compatibility
Platform valued?
              ‣ Is future-proof code
                encouraged?
              ‣ Does it give me room to
                grow?


BUSY NOGGIN
DIGITAL
Future ‣ Is the way I think about
   Proof development transferrable
    Dev    from one project to the next?
              ‣ Am I the only one who can
                work on this project until the
                end of time?




BUSY NOGGIN
DIGITAL
Busy ‣ Invest up front, reap benefits
  Noggin later.
Approach ‣ A swiss army knife is the best
                tool for the job.
               ‣ We focus on future-proof
                 knowledge more than future-
                 proof code.


 BUSY NOGGIN
 DIGITAL
Does TYPO3 provide a future
  proof development platform?




BUSY NOGGIN
DIGITAL
The Berlin Manifesto
              October 2008




BUSY NOGGIN
DIGITAL
“Future releases of v4 will see its features
   converge with those in TYPO3 v5”




BUSY NOGGIN
DIGITAL
“TYPO3 v5 will introduce many new
   concepts and ideas. Learning never
    stops and we'll help with adequate
 resources to ensure a smooth transition”




BUSY NOGGIN
DIGITAL
TYPO3 Extbase




BUSY NOGGIN
DIGITAL
Extbase ‣ Who uses Extbase already?
              ‣ How Busy Noggin uses
                Extbase
               - 12K product app with
                 nightly inventory imports
                 before Extbase had reached
                 beta


BUSY NOGGIN
DIGITAL
BUSY NOGGIN
DIGITAL
Yes, we are crazy...




BUSY NOGGIN
DIGITAL
Extbase ‣ Who uses Extbase already?
              ‣ How Busy Noggin uses
                Extbase
               - 12K product app with
                 nightly ERP imports before
                 Extbase had reached beta
               - and we’ve used Extbase for
                 all extension development
                 since then
BUSY NOGGIN
DIGITAL
Extbase ‣ Features
              - Domain Driven Design
              - Dependency Injection
              - Persistence Layer
              - Signals and Slots
              - Property Mapper
              - Fluid Templating
BUSY NOGGIN
DIGITAL
Layout
<div class=”todos-wrapper”>

   <ul class=”todos”>                                  Template
        <li>
             <f:for each=”{todos}” as=”todo”>

                                                        Partial
                <input type=”checkbox”> {todo.title}

           </f:for>
      </li>
  </ul>


</div>

BUSY NOGGIN
DIGITAL
Extbase ‣ How is it an improvement
              over pibase?
              - Persistence Layer
              - No boilerplate code for
                templates
              - More opinionated
                framework makes it easier
                to start

BUSY NOGGIN
DIGITAL
Extbase ‣ What is the sweet spot?
               - CRUD apps within a larger
                 CMS project
              ‣ Where does it struggle?
               - Large datasets
               - Dynamic, high performance
                 applications

BUSY NOGGIN
DIGITAL
Extbase Demo Time




BUSY NOGGIN
DIGITAL
https://github.com/busynoggin/busynoggin_todos




BUSY NOGGIN
DIGITAL
BUSY NOGGIN
DIGITAL
Application




BUSY NOGGIN
DIGITAL
Application




              TYPO3




BUSY NOGGIN
DIGITAL
BUSY NOGGIN
DIGITAL
Extbase       ‣ http://forge.typo3.org/projects/extension-
                  extension_builder/repository
Resources
                ‣ http://typo3.org/fileadmin/t3org/
                  documents/information/
                  referencesheet.pdf
                ‣ http://forge.typo3.org/projects/package-
                  viewhelperincubator/wiki
                ‣ http://fedext.net




  BUSY NOGGIN
  DIGITAL
TYPO3 Flow




BUSY NOGGIN
DIGITAL
Flow ‣ Who uses Flow already?
              ‣ How Busy Noggin uses Flow
               - Middleware in mobile
                 applications
               - Standalone web applications




BUSY NOGGIN
DIGITAL
BUSY NOGGIN
DIGITAL
Flow ‣ Features
              - Domain Driven Design
              - Dependency Injection
              - Persistence Layer
              - Signals and Slots
              - Property Mapper
              - Fluid Templating
              - Aspect Oriented
BUSY NOGGIN
DIGITAL         Programming
Flow Demo Time




BUSY NOGGIN
DIGITAL
https://github.com/busynoggin/BusyNoggin.Todos




BUSY NOGGIN
DIGITAL
BUSY NOGGIN
DIGITAL
Application




BUSY NOGGIN
DIGITAL
Application




              Flow




BUSY NOGGIN
DIGITAL
BUSY NOGGIN
DIGITAL
BUSY NOGGIN
DIGITAL
FLOW         ‣ https://github.com/mneuhaus/FLOW3-
                  Admin (aka TYPO3.Expose)
Resources
                ‣ https://github.com/sandstorm/oh-my-
                  zsh-flow3-plugin
                ‣ http://wrapbootstrap.com




  BUSY NOGGIN
  DIGITAL
TYPO3 Neos




BUSY NOGGIN
DIGITAL
Neos ‣ Who uses Neos already?
              ‣ How Busy Noggin uses Neos
               - Light content management
                 alongside a Flow application
               - Don’t reinvent the CMS
                 wheel for Flow



BUSY NOGGIN
DIGITAL
Neos ‣ Features
              - Domain Driven Design
              - Persistence Layer
              - Signals and Slots
              - Property Mapper
              - Fluid Templating
              - Aspect Oriented Programming
BUSY NOGGIN
              - CMS
DIGITAL
Neos ‣ Set of packages on top of
               Flow
               - Content Elements,
                 TypoScript, Image
                 Processing, Content
                 Repository, etc
              ‣ Neos plugins are Flow
                packages with a little extra
                setup code
BUSY NOGGIN
DIGITAL
Neos Demo Time




BUSY NOGGIN
DIGITAL
BUSY NOGGIN
DIGITAL
Application




BUSY NOGGIN
DIGITAL
Application




              Neos



BUSY NOGGIN
DIGITAL
BUSY NOGGIN
DIGITAL
Configuration/Settings.yaml


TYPO3:
 TYPO3CR:
  contentTypes:
   'BusyNoggin.Todos:Plugin':
    superTypes: ['TYPO3.Phoenix.ContentTypes:Plugin']
    label: 'Busy Noggin Todos Plugin'




 BUSY NOGGIN
 DIGITAL
Resources/Private/TypoScripts/PluginImplementation.ts

prototype(BusyNoggin.Todos:Plugin) <
    prototype(TYPO3.Phoenix.ContentTypes:Plugin)
prototype(BusyNoggin.Todos:Plugin) {
	 package = 'BusyNoggin.Todos'
	 controller = 'Todo'
	 action = 'index'
}




 BUSY NOGGIN
 DIGITAL
BUSY NOGGIN
DIGITAL
Does TYPO3 provide a future
  proof development platform?




BUSY NOGGIN
DIGITAL
“Future releases of v4 TYPO3 CMS will
  see its features converge with those in
              TYPO3 v5 Neos”




BUSY NOGGIN
DIGITAL
“TYPO3 v5 Neos will introduce many
 new concepts and ideas. Learning never
    stops and we'll help with adequate
                    Text
 resources to ensure a smooth transition”




BUSY NOGGIN
DIGITAL
‣ The concepts of TYPO3
                Extbase, Flow, and Neos are
                very similar
              ‣ Code may not be directly
                portable up the chain, but
                there is a high degree of
                overlap



BUSY NOGGIN
DIGITAL
‣ Architecture encourages
                stable, maintainable code
              ‣ TYPO3 Extbase, Flow and
                Neos cover a wide range of
                use cases




BUSY NOGGIN
DIGITAL
Am I practicing future proof
         development?




BUSY NOGGIN
DIGITAL
Questions?




BUSY NOGGIN
DIGITAL
Jeff Segars
                    @jsegars
              jeff@busynoggin.com




BUSY NOGGIN
DIGITAL
BUSY NOGGIN
DIGITAL

More Related Content

Similar to Future Proof Development

Developing a typo3 template strategy
Developing a typo3 template strategyDeveloping a typo3 template strategy
Developing a typo3 template strategybusynoggin
 
A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024
A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024
A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024Cloud Native NoVA
 
The path to a serverless-native era with Kubernetes
The path to a serverless-native era with KubernetesThe path to a serverless-native era with Kubernetes
The path to a serverless-native era with Kubernetessparkfabrik
 
Site Development Processes for Small Teams
Site Development Processes for Small TeamsSite Development Processes for Small Teams
Site Development Processes for Small TeamsJeff Segars
 
Developing Microservices Directly in AKS/Kubernetes
Developing Microservices Directly in AKS/KubernetesDeveloping Microservices Directly in AKS/Kubernetes
Developing Microservices Directly in AKS/KubernetesChakradhar Rao Jonagam
 
stackconf 2020 | The path to a Serverless-native era with Kubernetes by Paolo...
stackconf 2020 | The path to a Serverless-native era with Kubernetes by Paolo...stackconf 2020 | The path to a Serverless-native era with Kubernetes by Paolo...
stackconf 2020 | The path to a Serverless-native era with Kubernetes by Paolo...NETWAYS
 
Brujug Jenkins pipeline scalability
Brujug Jenkins pipeline scalabilityBrujug Jenkins pipeline scalability
Brujug Jenkins pipeline scalabilityDamien Coraboeuf
 
Quebec - 16 November 2022 - Canada CNCF Meetups.pdf
Quebec - 16 November 2022 - Canada CNCF Meetups.pdfQuebec - 16 November 2022 - Canada CNCF Meetups.pdf
Quebec - 16 November 2022 - Canada CNCF Meetups.pdfprune1
 
Lambda Architectures in Practice
Lambda Architectures in PracticeLambda Architectures in Practice
Lambda Architectures in PracticeC4Media
 
Introduction to DevOps and the Practical Use Cases at Credit OK
Introduction to DevOps and the Practical Use Cases at Credit OKIntroduction to DevOps and the Practical Use Cases at Credit OK
Introduction to DevOps and the Practical Use Cases at Credit OKKriangkrai Chaonithi
 
Writing plugins for Nagios and Opsview - CAPSiDE Tech Talks
Writing plugins for Nagios and Opsview - CAPSiDE Tech TalksWriting plugins for Nagios and Opsview - CAPSiDE Tech Talks
Writing plugins for Nagios and Opsview - CAPSiDE Tech TalksJose Luis Martínez
 
IDEALIZE 2023 - NodeJS & Firebase Session
IDEALIZE 2023 - NodeJS & Firebase SessionIDEALIZE 2023 - NodeJS & Firebase Session
IDEALIZE 2023 - NodeJS & Firebase SessionBrion Mario
 
Improving velocity through abstraction
Improving velocity through abstractionImproving velocity through abstraction
Improving velocity through abstractionVictorSzoltysek
 
Exploring pwa for shopware
Exploring pwa for shopwareExploring pwa for shopware
Exploring pwa for shopwareSander Mangel
 
Simplifying and accelerating converged media with Open Visual Cloud
Simplifying and accelerating converged media with Open Visual CloudSimplifying and accelerating converged media with Open Visual Cloud
Simplifying and accelerating converged media with Open Visual CloudLiz Warner
 
Developer Experience at Zalando - Handelsblatt Strategisches IT-Management 2019
Developer Experience at Zalando - Handelsblatt Strategisches IT-Management 2019Developer Experience at Zalando - Handelsblatt Strategisches IT-Management 2019
Developer Experience at Zalando - Handelsblatt Strategisches IT-Management 2019Henning Jacobs
 
Serverless survival kit
Serverless survival kitServerless survival kit
Serverless survival kitSteve Houël
 
Distributed Versioning Tools, BeJUG 2010
Distributed Versioning Tools, BeJUG 2010Distributed Versioning Tools, BeJUG 2010
Distributed Versioning Tools, BeJUG 2010Pursuit Consulting
 

Similar to Future Proof Development (20)

Developing a typo3 template strategy
Developing a typo3 template strategyDeveloping a typo3 template strategy
Developing a typo3 template strategy
 
A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024
A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024
A Love Story with Kubevirt and Backstage from Cloud Native NoVA meetup Feb 2024
 
The path to a serverless-native era with Kubernetes
The path to a serverless-native era with KubernetesThe path to a serverless-native era with Kubernetes
The path to a serverless-native era with Kubernetes
 
Site Development Processes for Small Teams
Site Development Processes for Small TeamsSite Development Processes for Small Teams
Site Development Processes for Small Teams
 
Developing Microservices Directly in AKS/Kubernetes
Developing Microservices Directly in AKS/KubernetesDeveloping Microservices Directly in AKS/Kubernetes
Developing Microservices Directly in AKS/Kubernetes
 
stackconf 2020 | The path to a Serverless-native era with Kubernetes by Paolo...
stackconf 2020 | The path to a Serverless-native era with Kubernetes by Paolo...stackconf 2020 | The path to a Serverless-native era with Kubernetes by Paolo...
stackconf 2020 | The path to a Serverless-native era with Kubernetes by Paolo...
 
Brujug Jenkins pipeline scalability
Brujug Jenkins pipeline scalabilityBrujug Jenkins pipeline scalability
Brujug Jenkins pipeline scalability
 
Quebec - 16 November 2022 - Canada CNCF Meetups.pdf
Quebec - 16 November 2022 - Canada CNCF Meetups.pdfQuebec - 16 November 2022 - Canada CNCF Meetups.pdf
Quebec - 16 November 2022 - Canada CNCF Meetups.pdf
 
Lambda Architectures in Practice
Lambda Architectures in PracticeLambda Architectures in Practice
Lambda Architectures in Practice
 
Introduction to DevOps and the Practical Use Cases at Credit OK
Introduction to DevOps and the Practical Use Cases at Credit OKIntroduction to DevOps and the Practical Use Cases at Credit OK
Introduction to DevOps and the Practical Use Cases at Credit OK
 
Writing plugins for Nagios and Opsview - CAPSiDE Tech Talks
Writing plugins for Nagios and Opsview - CAPSiDE Tech TalksWriting plugins for Nagios and Opsview - CAPSiDE Tech Talks
Writing plugins for Nagios and Opsview - CAPSiDE Tech Talks
 
Modern Webapps
Modern WebappsModern Webapps
Modern Webapps
 
Old Dogs and New Tricks
Old Dogs and New TricksOld Dogs and New Tricks
Old Dogs and New Tricks
 
IDEALIZE 2023 - NodeJS & Firebase Session
IDEALIZE 2023 - NodeJS & Firebase SessionIDEALIZE 2023 - NodeJS & Firebase Session
IDEALIZE 2023 - NodeJS & Firebase Session
 
Improving velocity through abstraction
Improving velocity through abstractionImproving velocity through abstraction
Improving velocity through abstraction
 
Exploring pwa for shopware
Exploring pwa for shopwareExploring pwa for shopware
Exploring pwa for shopware
 
Simplifying and accelerating converged media with Open Visual Cloud
Simplifying and accelerating converged media with Open Visual CloudSimplifying and accelerating converged media with Open Visual Cloud
Simplifying and accelerating converged media with Open Visual Cloud
 
Developer Experience at Zalando - Handelsblatt Strategisches IT-Management 2019
Developer Experience at Zalando - Handelsblatt Strategisches IT-Management 2019Developer Experience at Zalando - Handelsblatt Strategisches IT-Management 2019
Developer Experience at Zalando - Handelsblatt Strategisches IT-Management 2019
 
Serverless survival kit
Serverless survival kitServerless survival kit
Serverless survival kit
 
Distributed Versioning Tools, BeJUG 2010
Distributed Versioning Tools, BeJUG 2010Distributed Versioning Tools, BeJUG 2010
Distributed Versioning Tools, BeJUG 2010
 

Recently uploaded

GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilV3cube
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...DianaGray10
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘RTylerCroy
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 

Recently uploaded (20)

GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 

Future Proof Development

Editor's Notes

  1. \n
  2. \n
  3. \n
  4. If the title of this talk is &amp;#x201C;Future Proof Development&amp;#x201D; the first question to answer is what exactly we mean by future proof. There are several ways to look at it.\n
  5. As long as data formats are structured, its possible to migrate data but that&amp;#x2019;s not what we&amp;#x2019;re going to talk about today. Within the TYPO3 family, we can envision code to migrate pages and basic content from one product to another.\n
  6. When we talk about future proof code, we&amp;#x2019;re talking about the actual classes and methods you create.\nWill it work when a new software version comes out? In the TYPO3 context, does the code you wrote for 4.5 work in 4.7 and 6?\nCan it be moved to a new system without having to rewrite from scratch?\nIs it written in a way that others can understand and maintain it?\n\nMany of these questions are being addressed by the PHP Standards Working Group, PHP The Right Way, and package management systems like PEAR and Composer\n\n
  7. Moving up a level, we can talk about a future proof platform. This is the product (TYPO3 CMS, Wordpress, Drupal) or family of products (TYPO3) that you develop on. Rather than specific code, we&amp;#x2019;re more concerned with high level capabilities and where the platform excels.\n\nA future proof platform is not a dead end. The attributes of future proof code from the previous slide are encouraged by the platform. One example of this is TYPO3&amp;#x2018;s deprecation policy; you know that code written today will continue to work for several versions in the future.\n\nA future proof platform is actively developed and grows with your business so that an up front investment continues to pay off. It meets your needs today, but meets your needs next year as well (as best as you can determine those needs)\n
  8. The top level and most abstract level is future proof development. This may cut across multiple platforms, and is really about the way you and your company approach development.\n\nIs the way you think about development transferrable from one project to another or are you starting from scratch each time you begin a new project?\n\nIf you get run over by a bus, can someone else pick up the project and successfully complete it?\n
  9. We are not scared off by a learning curve. When we choose a product, we want to build up a base and use it for many projects in the future.\n\nA product with a broad feature set and many use cases can be adapted for many projects. Build that base, and then use it. Don&amp;#x2019;t pick a narrow product and relearn each time.\n\nFuture proof code is a good thing, but we try to primarily focus on having a consistent way to work and think about projects. We move from one project to another more frequently than we move a codebase from one product to another to another. This means we value a common mindset among multiple products.\n\nPractically, the way this plays out for us is the TYPO3 ecosystem. Historically, we&amp;#x2019;ve done all of our site builds in TYPO3 CMS, the &amp;#x201C;go anywhere do anything&amp;#x201D; CMS. We use Extbase as our development framework in TYPO3 and have recently added Flow and Neos into the mix.\n\nAt the same time we are practical in our choices. TYPO3 is not the best option for e-commerce work, especially in the US market, so we&amp;#x2019;ve landed on Magento.\n\nWe think the TYPO3 family of products provides a good platform for future proof development. If you want to take my word for it, we can go grab lunch now. Otherwise, I&amp;#x2019;ll show why.\n
  10. Since we are here at a TYPO3 conference, the obvious question is how these statements about future-proof pertain to the TYPO3 family of products.\n
  11. Shortly after T3CON08 in Berlin, the TYPO3 Core Team met for a week of discussing strategy, coding, and other activities. One result of the week was a statement about the future of TYPO3 development.\n
  12. \n
  13. \n
  14. Another output of the core team meeting in Berlin, was the beginning of a new extension framework called Extbase. Extbase is a backport of key concepts from Flow.\n
  15. Last year couple years of T3CON felt like &amp;#x201C;why you should use Extbase&amp;#x201D; now it seems to be more of a given\nExtbase (and the related template engine Fluid) are a modern development framework within the TYPO3 CMS.\nPreviously, an API named pibase provided common methods but no real opinionated way for developing within TYPO3\n\n
  16. \n
  17. \n
  18. \n
  19. Domain Driven Design - a way of modeling real world objects within your extensions\nDependency Injection - loose coupling of related components. for example, choosing a logging method at runtime rather than hardcoding it\nPersistence Layer - Handles retrieving and saving domain models\nSignals and Slots - Event messaging to determine when an action has occurred and trigger other listening code to run\nProperty Mapper - Transforms URL parameters into full-blown objects\nFluid Templating - Object-aware templating engine, with support for layouts, partials, and view helpers\n
  20. \n
  21. The persistence layer is a huge help by removing the need for hand written SQL queries and worries about SQL injection, etc. Custom SQL queries can still be written when you have a complex query or need to squeeze out extra performance\n\nWhen writing the old style pibase extensions, one of the biggest annoyances was the amount of dumb code needed for loading templates, setting up markers, and looping over subpart. Extbase and Fluid remove all that.\n\npibase was a thin API that did not really provide direction to the developer. Extbase establishes much stronger conventions about how extensions should be structured.\n
  22. CRUD = create, read, update, delete. in particular, create and update forms are far simpler in extbase\n\nI previously mentioned our 12,000 product entry into the Extbase world. Performance was definitely a challenge here due to the large dataset with many relations. In our case, we solved most of the problems with heaving caching but this is not always an option.\n
  23. Quick tour of the way an Extbase extension is structured and show the todos app\n
  24. \n
  25. \n
  26. \n
  27. \n
  28. \n
  29. Our next product to look at is TYPO3 Flow. As TYPO3 v5 (ie. Neos) was developed, an application framework named Flow was extracted from the new CMS.\n
  30. Since Flow is an application framework, its use cases are different than those of TYPO3 CMS and Extbase. It sits in a place more similar to Symfony, CakePHP, and Ruby on Rails. Flow does not provide a CMS, but if you wanted to write your own CMS you could build it on top of Flow.\n\nBusy Noggin currently has several projects underway using Flow. The first is an iPhone and Android app. It relies on CouchDB for its primary data storage, with Flow sitting between the app and CouchDB.\n\nWe are also developing an online store for configuring and ordering industrial components and tracking their assembly through the factory.\n
  31. \n
  32. The features you see here should look very similar to what we&amp;#x2019;ve seen in Extbase.\n\nOne important and powerful addition is Aspect Oriented Programming. This provides a powerful way to make your own code run before, after, or around any existing method with no code required from the original developer.\n
  33. Quick tour of directory structure and differences from Extbase\n
  34. \n
  35. \n
  36. \n
  37. \n
  38. \n
  39. \n
  40. \n
  41. It sounds strange, but the use case for Neos right now is in lighter content management sites. This could be two things:\n1) Sites that would normally be built in TYPO3 CMS, but don&amp;#x2019;t really require much beyond built in content elements\n2) Projects that are primarily custom applications, but have some smaller CMS needs\n\nBoth of our projects I mentioned previously (the mobile app and the industrial components) fit into #2. For the mobile app, I was worried that Neos was not mature enough for use and added my own really lightweight way of handling pages and content that involved me editing HTML templates. Let&amp;#x2019;s just say that I&amp;#x2019;m porting the site over to Neos now.\n
  42. Again, this feature list should look very familiar. We have all the features of Extbase and Flow, with a CMS added now. There&amp;#x2019;s a reason for this commonality....\n
  43. Neos is nothing more than a set of packages that are available for Flow. These packages provide the functionality that you are already familiar with from TYPO3 CMS ... content elements, TypoScript, image resizing, etc.\n\nNeos plugins are nothing more than Flow packages with a little bit of setup code to make them available as content elements. We&amp;#x2019;ll see what that looks like in a second\n
  44. Quick tour of directory structure and differences from FLOW3\n
  45. \n
  46. \n
  47. \n
  48. \n
  49. \n
  50. \n
  51. Now that we&amp;#x2019;ve looked at 3 products that TYPO3 offers, we can come back to some of our original questions. First, does TYPO3 provide a future proof development platform?\n\nAnother way of answering this question is to look back at the Berlin Manifesto 4 years later and see where we are today\n
  52. \n
  53. \n
  54. There are a multitude of ways that we have seen features converge between TYPO3 CMS and Neos. Extbase was created as a backport of Flow into the TYPO3 CMS environment and both our feature list and example extension show us how much commonality there is. Fluid as a templating engine is available for both TYPO3 CMS and NewCMS. We haven&amp;#x2019;t had time to touch on them today, but important features such as the caching framework and xliff translations have been backported from Neos to TYPO3 as well.\n\nThere are certainly code changes needed, and our example plugins are admittedly as simple as they come. As extensions get more complex there will be deeper connections into the underlying CMS. However, we can see that the way plugins are developed is very similar between Extbase, Flow, and NewCMS.\n
  55. Even in the best framework, someone can write spaghetti code if they really try but Flow provides many features that encourage clean, loosely coupled code. It provides enough strong conventions that another developer can quickly jump in and understand where to find things and how it works.\n\nExtbase today covers the content-driven website build that has the need for custom development alongside it. Flow handles the pure web application, and NewCMS adds light content management (and becoming more full featured each day). This positions a developer to be handle any scope of project that comes his way.\n\n\n
  56. Am I writing maintainable, portable code?\nHave I chosen products that are well-maintained, serve my needs today, and serve my needs in future?\nAre the products that I use complementary to one another, so that shifting from one project to another is not starting from scratch?\n\n
  57. \n
  58. \n
  59. \n