SlideShare a Scribd company logo
1 of 24
We make IT
berlinbrandenburg
PD2
Plone Driven
Plone Development
Henning Rietz, Condat AG
Plone Conference 2010
Bristol, 28.10.2010
IT from Berlin
© 2010 Condat AG 2
Speaker specifics
 Henning Rietz, hr@condat.de
Condat AG
Software for innovative business processes.
Founded 1979
Location Berlin
Staff ~65
© 2010 Condat AG 3
Alliterated Agenda
 Major motivation
 Definitive Dream
 Attractive Advantages
 Multiple models
 All-round Application
 Outrageous Outlook
© 2010 Condat AG 4
Major motivation
Likes
 Model-driven development
 Application of design
patterns
 ArchGenXML
Dislikes
 Writing boilerplate code
 Editing *.zcml, *.xml
 Migration migraine (Plone
234 …)
 Learning curve for new
developers
© 2010 Condat AG 5
Definitive dream
The model is
Plone content.
© 2010 Condat AG 6
Dream details
 Metamodel
== Domain-specific language
== Plone Content Types
 Model
== Metadata
== Description of a specific system
== Plone content
 Code
== Implementation of a specific system
== Views on Plone content (metadata)
 Metamodel
== Domain-specific language
== Plone Content Types
 Model
== Metadata
== Description of a specific system
== Plone content
 Code
== Implementation of a specific system
== Views on Plone content (metadata)
ArchGenXML:
• Metamodel == UML Metamodel
• Model == UML (XMI file)
• Code == generated from XMI
PloneFormGen:
• Metamodel == PFG Content Types
• Model == FormFolder + Subobjects
• No code generated, interpretation of model at runtime
Collections
ExistingExamples
It‘s an
approach
– not a product.
© 2010 Condat AG 7
Attractive Advantages
 Reduces manual coding effort
 Generates .py, .pt, .cpt, .cpy, .xml, .sql, .zcml, …
 High configurability (for you and the customer)
 Model can be accessed at runtime
 Behavior of generic parts is dynamically changed
 Increases productivity
 Homogenous environment, everything is Plone-ish
 Makes your design patterns explicit, enforces conventions
 Better learning curve for new developers
 Higher maintainability
 Single source for changes
 Helps you deal with major changes in Plone architecture
 Integrated documentation
(orange: specific strengths of PD2, otherwise: typical advantage of MDD)
© 2010 Condat AG 8
Conflicting Challenges
 Keep implementation
details out of the models
 Make it simple
 Customer readable
 Generate as much
as possible (and useful)
 Make it powerful
 Executable
© 2010 Condat AG 9
Domain description
 Finding your metamodel –
How would you describe your future systems?
What abstractions/patterns do you employ?
 Possible input
 Legacy systems (to be migrated)
 The future design
 Storyboards
 UML models
 Your own patterns/frameworks
 User/technical documentation
© 2010 Condat AG 10
Multiple metamodels
 Content
 Views
 Navigation
 Layout
 Authoring
 Build
 Deployment
 Code Structure
Abstraction
Looking at the system from different perspectives
© 2010 Condat AG 11
Code structure
© 2010 Condat AG 12
 Concepts / structures for code generation
 File, Directory, FileSeries, FileGroup, etc.
 PT/DTML Templates for code generation,
using domain model objects as contexts
 Code generation traverses the structure,
applying model elements to templates,
writing the resulting code to the local file
system of the Zope (ZEO client) instance
Code structure modelling
© 2010 Condat AG 13
UML example
© 2010 Condat AG 14
Example structure
('plone3layout', 'Plone 3 Standard Layout', 'PD2Layout', {'namingExpression':'context.Title()'},
[
('readme.txt','README.txt','PD2File',{'viewname':'empty','namingExpression':'self.Title()'},[]),
('setup.cfg','setup.cfg','PD2File',{'viewname':'empty','namingExpression':'self.Title()'},[]),
('setup.py','setup.py','PD2File',{'viewname':setup','namingExpression':'self.Title()'},[]),
('modulepart1','<modulepart1>','PD2Directory',{'viewname':'','namingExpression':'context.Title().split('.')[0]'},
[
('init.py','__init__.py','PD2File',{'viewname':'initpkg','namingExpression':'self.Title()'},[]),
('modulepart2','<modulepart2>','PD2Directory',{'viewname':'','namingExpression':'context.Title().split('.')[1]'},
[
('init.py','__init__.py','PD2File',{'viewname':'init','namingExpression':'self.Title()'},[]),
('configure.zcml','configure.zcml','PD2File',{'viewname':'configure','namingExpression':'self.Title()'},[]),
('config.py','config.py','PD2File',{'viewname':'empty','namingExpression':'self.Title()'},[]),
('interfaces.py','interfaces.py','PD2File',{'viewname':'interfaces','namingExpression':'self.Title()'},[]),
('readme.txt','README.txt','PD2File',{'viewname':'empty','namingExpression':'self.Title()'},[]),
('version.txt','version.txt','PD2File',{'viewname':'empty','namingExpression':'self.Title()'},[]),
('browser','browser','PD2Directory',{'viewname':'','namingExpression':'self.Title()'},[]),
('content','content','PD2Directory',{'viewname':'','namingExpression':'self.Title()'},
[
('init.py','__init__.py','PD2File',{'viewname':'empty','namingExpression':'self.Title()'},[]),
('type.py','<type>.py','PD2FileSeries',{'viewname':'atclass','namingExpression':''%s.py' %
context.Title().lower()','listExpression':'context.getContentTypes()'},[]),
('configure.zcml','configure.zcml','PD2File',{'viewname':'cconfigure','namingExpression':'self.Title()'},[]),
]),
('profiles','profiles','PD2Directory',{'viewname':'','namingExpression':'self.Title()'},
[
('default','default','PD2Directory',{'viewname':'','namingExpression':'self.Title()'},
[
…
© 2010 Condat AG 15
Example: gstype view
<tal:block i18n:domain="conpd2.codegen" tal:define="ct context/Title">
<object tal:replace='structure string:<?xml version="1.0"?>'/>
<object name="PD2Adapter" tal:attributes="name ct"
meta_type="Factory-based Type Information with dynamic views"
xmlns:i18n="http://xml.zope.org/namespaces/i18n">
<property name="title" tal:content="ct">PD2Adapter</property>
<property name="description"></property>
<property name="content_meta_type" tal:content="ct">PD2Adapter</property>
<property name="product" tal:content="context/getProductName">ConPD2</property>
<property name="factory" tal:content="string:add${ct}">addPD2Adapter</property>
<property name="immediate_view">base_view</property>
<property name="global_allow">True</property>
<property name="filter_content_types">False</property>
<property name="allowed_content_types">
</property>
<property name="allow_discussion">False</property>
<property name="default_view">base_view</property>
<property name="view_methods">
<element value="base_view"/>
…
Full example
© 2010 Condat AG 16
Content
© 2010 Condat AG 17
Content modelling
 Describes most of the information
architecture
 Metamodel: Types, Attributes,
Relationships
 Probably even more domain-specific
 Code: AT schemata, classes, GS xml,
zcml
 Also possible: RDBMS-related content
© 2010 Condat AG 18
UML example
(this is taken from the metamodel of the first version of ConPD2, which is basically a metamodel for AT development)
© 2010 Condat AG 19
Views
© 2010 Condat AG 20
Views modelling
 What is presented where/how?
 Metamodel: View Types (e.g. single
object, object list, dashboard) with
presentation details (e.g. sorting,
batching)
 Code: template fragments, macros, view
classes, helper methods
© 2010 Condat AG 21
More metamodels
 Navigation: primary, secondary, depth, …
 navigation portlet, sections viewlet
 Layout: two/three columns, header, footer, …
 Viewlets, CSS (cf. Subskins product)
 Authoring:
 roles, workflows, staging, content rules
 Build & Deployment:
 devbuildout|production|test.cfg, deployment
scripts, monitoring frontend
© 2010 Condat AG 22
All-round Application
 Implement Metamodel
 E.g. with ArgoUML, ArchGenXML
 Templates for code generation
 Deploy PD2
 Model lives in ZEO server
 Developers work with local ZEO Client,
which writes to local file system
 Develop with PD2
 Describe customer site in terms of the
metamodel
 Push the button
 Make customer specific extensions
 Implement generic parts (which
interpret metadata at runtime)
 Iterate
© 2010 Condat AG 23
Outrageous Outlook
 Metamodels for knowledge management,
public internet, collaborative applications, …
 Plone Technology Metamodel
 Generic Applications for multiple clients in
SaaS scenarios
© 2010 Condat AG 24
Thank you
Condat AG
Henning Rietz
Alt-Moabit 91 d
10559 Berlin
Tel. (030) 3949-1179
hr@condat.de
www.condat.de

More Related Content

Viewers also liked

Fungsi Pie (Program Input Equipment) Dalam
Fungsi Pie (Program Input Equipment) DalamFungsi Pie (Program Input Equipment) Dalam
Fungsi Pie (Program Input Equipment) DalamUniversitas Diponegoro
 
Islandreferaatvalmis
IslandreferaatvalmisIslandreferaatvalmis
Islandreferaatvalmisannett19
 
Big Data at Twitter, Chirp 2010
Big Data at Twitter, Chirp 2010Big Data at Twitter, Chirp 2010
Big Data at Twitter, Chirp 2010Kevin Weil
 
Hadoop summit 2010 frameworks panel elephant bird
Hadoop summit 2010 frameworks panel elephant birdHadoop summit 2010 frameworks panel elephant bird
Hadoop summit 2010 frameworks panel elephant birdKevin Weil
 
Hadoop at Twitter (Hadoop Summit 2010)
Hadoop at Twitter (Hadoop Summit 2010)Hadoop at Twitter (Hadoop Summit 2010)
Hadoop at Twitter (Hadoop Summit 2010)Kevin Weil
 
Bluetooth 4.0 specification
Bluetooth 4.0 specificationBluetooth 4.0 specification
Bluetooth 4.0 specificationabhiamanchopra
 
Sortida biblio 4t
Sortida biblio 4tSortida biblio 4t
Sortida biblio 4telenatorren
 
Hadoop and pig at twitter (oscon 2010)
Hadoop and pig at twitter (oscon 2010)Hadoop and pig at twitter (oscon 2010)
Hadoop and pig at twitter (oscon 2010)Kevin Weil
 
Spatial Analytics, Where 2.0 2010
Spatial Analytics, Where 2.0 2010Spatial Analytics, Where 2.0 2010
Spatial Analytics, Where 2.0 2010Kevin Weil
 
SPRI février 2017 - Stratégie médias sociaux
SPRI février 2017 - Stratégie médias sociauxSPRI février 2017 - Stratégie médias sociaux
SPRI février 2017 - Stratégie médias sociauxYan Luong
 
NoSQL at Twitter (NoSQL EU 2010)
NoSQL at Twitter (NoSQL EU 2010)NoSQL at Twitter (NoSQL EU 2010)
NoSQL at Twitter (NoSQL EU 2010)Kevin Weil
 

Viewers also liked (13)

Fungsi Pie (Program Input Equipment) Dalam
Fungsi Pie (Program Input Equipment) DalamFungsi Pie (Program Input Equipment) Dalam
Fungsi Pie (Program Input Equipment) Dalam
 
Islandreferaatvalmis
IslandreferaatvalmisIslandreferaatvalmis
Islandreferaatvalmis
 
Big Data at Twitter, Chirp 2010
Big Data at Twitter, Chirp 2010Big Data at Twitter, Chirp 2010
Big Data at Twitter, Chirp 2010
 
Hadoop summit 2010 frameworks panel elephant bird
Hadoop summit 2010 frameworks panel elephant birdHadoop summit 2010 frameworks panel elephant bird
Hadoop summit 2010 frameworks panel elephant bird
 
Hadoop at Twitter (Hadoop Summit 2010)
Hadoop at Twitter (Hadoop Summit 2010)Hadoop at Twitter (Hadoop Summit 2010)
Hadoop at Twitter (Hadoop Summit 2010)
 
Bluetooth 4.0 specification
Bluetooth 4.0 specificationBluetooth 4.0 specification
Bluetooth 4.0 specification
 
Sortida biblio 4t
Sortida biblio 4tSortida biblio 4t
Sortida biblio 4t
 
Hadoop and pig at twitter (oscon 2010)
Hadoop and pig at twitter (oscon 2010)Hadoop and pig at twitter (oscon 2010)
Hadoop and pig at twitter (oscon 2010)
 
Spatial Analytics, Where 2.0 2010
Spatial Analytics, Where 2.0 2010Spatial Analytics, Where 2.0 2010
Spatial Analytics, Where 2.0 2010
 
Ens visita el
Ens visita elEns visita el
Ens visita el
 
SPRI février 2017 - Stratégie médias sociaux
SPRI février 2017 - Stratégie médias sociauxSPRI février 2017 - Stratégie médias sociaux
SPRI février 2017 - Stratégie médias sociaux
 
NoSQL at Twitter (NoSQL EU 2010)
NoSQL at Twitter (NoSQL EU 2010)NoSQL at Twitter (NoSQL EU 2010)
NoSQL at Twitter (NoSQL EU 2010)
 
Ecandidature
EcandidatureEcandidature
Ecandidature
 

Similar to Boosting productivity with "Plone-driven Plone development"

Sioux Hot-or-Not: Model Driven Software Development (Markus Voelter)
Sioux Hot-or-Not: Model Driven Software Development (Markus Voelter)Sioux Hot-or-Not: Model Driven Software Development (Markus Voelter)
Sioux Hot-or-Not: Model Driven Software Development (Markus Voelter)siouxhotornot
 
SodiusCassidianmdday2010 101129081449-phpapp02
SodiusCassidianmdday2010 101129081449-phpapp02SodiusCassidianmdday2010 101129081449-phpapp02
SodiusCassidianmdday2010 101129081449-phpapp02SodiusWillert
 
Pragmatic Model Driven Development using openArchitectureWare
Pragmatic Model Driven Development using openArchitectureWarePragmatic Model Driven Development using openArchitectureWare
Pragmatic Model Driven Development using openArchitectureWareMichael Vorburger
 
EMF Views: A View Mechanism for Integrating Heterogeneous Models - ER 2015 @ ...
EMF Views: A View Mechanism for Integrating Heterogeneous Models - ER 2015 @ ...EMF Views: A View Mechanism for Integrating Heterogeneous Models - ER 2015 @ ...
EMF Views: A View Mechanism for Integrating Heterogeneous Models - ER 2015 @ ...Hugo Bruneliere
 
eTrice: a proposed Eclipse project for embedded MDSD based on ROOM
eTrice: a proposed Eclipse project for embedded MDSD based on ROOMeTrice: a proposed Eclipse project for embedded MDSD based on ROOM
eTrice: a proposed Eclipse project for embedded MDSD based on ROOMHenrik Rentz-Reichert
 
Smalltalk speaks dot net
Smalltalk speaks dot netSmalltalk speaks dot net
Smalltalk speaks dot netESUG
 
MobiCloud: Towards Cloud Mobile Hybrid Application Generation using Semantica...
MobiCloud: Towards Cloud Mobile Hybrid Application Generation using Semantica...MobiCloud: Towards Cloud Mobile Hybrid Application Generation using Semantica...
MobiCloud: Towards Cloud Mobile Hybrid Application Generation using Semantica...Amit Sheth
 
[SiriusCon 2018] A Bird's Eye View on Eclipse Sirius
[SiriusCon 2018]  A Bird's Eye View on Eclipse Sirius[SiriusCon 2018]  A Bird's Eye View on Eclipse Sirius
[SiriusCon 2018] A Bird's Eye View on Eclipse SiriusObeo
 
Composite C1 Presentaion
Composite C1  PresentaionComposite C1  Presentaion
Composite C1 Presentaionjakobbartholdy
 
Sodius cassidian mdday2010
Sodius cassidian mdday2010Sodius cassidian mdday2010
Sodius cassidian mdday2010MD DAY
 
Tag Integration with Schneider Electric PLCs and Modbus in InduSoft Web Studio
Tag Integration with Schneider Electric PLCs and Modbus in InduSoft Web StudioTag Integration with Schneider Electric PLCs and Modbus in InduSoft Web Studio
Tag Integration with Schneider Electric PLCs and Modbus in InduSoft Web StudioAVEVA
 
Software development effort reduction with Co-op
Software development effort reduction with Co-opSoftware development effort reduction with Co-op
Software development effort reduction with Co-oplbergmans
 
MDD and modeling tools research
MDD and modeling tools researchMDD and modeling tools research
MDD and modeling tools researchRoger Xia
 
Monorail presentation at WebDevelopersCommunity, Feb 1, 2009
Monorail presentation at WebDevelopersCommunity, Feb 1, 2009Monorail presentation at WebDevelopersCommunity, Feb 1, 2009
Monorail presentation at WebDevelopersCommunity, Feb 1, 2009ken.egozi
 

Similar to Boosting productivity with "Plone-driven Plone development" (20)

Sioux Hot-or-Not: Model Driven Software Development (Markus Voelter)
Sioux Hot-or-Not: Model Driven Software Development (Markus Voelter)Sioux Hot-or-Not: Model Driven Software Development (Markus Voelter)
Sioux Hot-or-Not: Model Driven Software Development (Markus Voelter)
 
SodiusCassidianmdday2010 101129081449-phpapp02
SodiusCassidianmdday2010 101129081449-phpapp02SodiusCassidianmdday2010 101129081449-phpapp02
SodiusCassidianmdday2010 101129081449-phpapp02
 
Pragmatic Model Driven Development using openArchitectureWare
Pragmatic Model Driven Development using openArchitectureWarePragmatic Model Driven Development using openArchitectureWare
Pragmatic Model Driven Development using openArchitectureWare
 
Android crash course
Android crash courseAndroid crash course
Android crash course
 
EMF Views: A View Mechanism for Integrating Heterogeneous Models - ER 2015 @ ...
EMF Views: A View Mechanism for Integrating Heterogeneous Models - ER 2015 @ ...EMF Views: A View Mechanism for Integrating Heterogeneous Models - ER 2015 @ ...
EMF Views: A View Mechanism for Integrating Heterogeneous Models - ER 2015 @ ...
 
ER 2015 EMFViews
ER 2015 EMFViewsER 2015 EMFViews
ER 2015 EMFViews
 
How to reduce DTP and translation costs with FrameMaker
How to reduce DTP and translation costs with FrameMakerHow to reduce DTP and translation costs with FrameMaker
How to reduce DTP and translation costs with FrameMaker
 
Jmp108
Jmp108Jmp108
Jmp108
 
eTrice: a proposed Eclipse project for embedded MDSD based on ROOM
eTrice: a proposed Eclipse project for embedded MDSD based on ROOMeTrice: a proposed Eclipse project for embedded MDSD based on ROOM
eTrice: a proposed Eclipse project for embedded MDSD based on ROOM
 
Code generation
Code generationCode generation
Code generation
 
Smalltalk speaks dot net
Smalltalk speaks dot netSmalltalk speaks dot net
Smalltalk speaks dot net
 
ALT
ALTALT
ALT
 
MobiCloud: Towards Cloud Mobile Hybrid Application Generation using Semantica...
MobiCloud: Towards Cloud Mobile Hybrid Application Generation using Semantica...MobiCloud: Towards Cloud Mobile Hybrid Application Generation using Semantica...
MobiCloud: Towards Cloud Mobile Hybrid Application Generation using Semantica...
 
[SiriusCon 2018] A Bird's Eye View on Eclipse Sirius
[SiriusCon 2018]  A Bird's Eye View on Eclipse Sirius[SiriusCon 2018]  A Bird's Eye View on Eclipse Sirius
[SiriusCon 2018] A Bird's Eye View on Eclipse Sirius
 
Composite C1 Presentaion
Composite C1  PresentaionComposite C1  Presentaion
Composite C1 Presentaion
 
Sodius cassidian mdday2010
Sodius cassidian mdday2010Sodius cassidian mdday2010
Sodius cassidian mdday2010
 
Tag Integration with Schneider Electric PLCs and Modbus in InduSoft Web Studio
Tag Integration with Schneider Electric PLCs and Modbus in InduSoft Web StudioTag Integration with Schneider Electric PLCs and Modbus in InduSoft Web Studio
Tag Integration with Schneider Electric PLCs and Modbus in InduSoft Web Studio
 
Software development effort reduction with Co-op
Software development effort reduction with Co-opSoftware development effort reduction with Co-op
Software development effort reduction with Co-op
 
MDD and modeling tools research
MDD and modeling tools researchMDD and modeling tools research
MDD and modeling tools research
 
Monorail presentation at WebDevelopersCommunity, Feb 1, 2009
Monorail presentation at WebDevelopersCommunity, Feb 1, 2009Monorail presentation at WebDevelopersCommunity, Feb 1, 2009
Monorail presentation at WebDevelopersCommunity, Feb 1, 2009
 

Recently uploaded

Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfNeo4j
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersNicole Novielli
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Scott Andery
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch TuesdayIvanti
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...Wes McKinney
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentPim van der Noll
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 

Recently uploaded (20)

Connecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdfConnecting the Dots for Information Discovery.pdf
Connecting the Dots for Information Discovery.pdf
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
A Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software DevelopersA Journey Into the Emotions of Software Developers
A Journey Into the Emotions of Software Developers
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
Enhancing User Experience - Exploring the Latest Features of Tallyman Axis Lo...
 
2024 April Patch Tuesday
2024 April Patch Tuesday2024 April Patch Tuesday
2024 April Patch Tuesday
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
The Future Roadmap for the Composable Data Stack - Wes McKinney - Data Counci...
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native developmentEmixa Mendix Meetup 11 April 2024 about Mendix Native development
Emixa Mendix Meetup 11 April 2024 about Mendix Native development
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 

Boosting productivity with "Plone-driven Plone development"

  • 1. We make IT berlinbrandenburg PD2 Plone Driven Plone Development Henning Rietz, Condat AG Plone Conference 2010 Bristol, 28.10.2010 IT from Berlin
  • 2. © 2010 Condat AG 2 Speaker specifics  Henning Rietz, hr@condat.de Condat AG Software for innovative business processes. Founded 1979 Location Berlin Staff ~65
  • 3. © 2010 Condat AG 3 Alliterated Agenda  Major motivation  Definitive Dream  Attractive Advantages  Multiple models  All-round Application  Outrageous Outlook
  • 4. © 2010 Condat AG 4 Major motivation Likes  Model-driven development  Application of design patterns  ArchGenXML Dislikes  Writing boilerplate code  Editing *.zcml, *.xml  Migration migraine (Plone 234 …)  Learning curve for new developers
  • 5. © 2010 Condat AG 5 Definitive dream The model is Plone content.
  • 6. © 2010 Condat AG 6 Dream details  Metamodel == Domain-specific language == Plone Content Types  Model == Metadata == Description of a specific system == Plone content  Code == Implementation of a specific system == Views on Plone content (metadata)  Metamodel == Domain-specific language == Plone Content Types  Model == Metadata == Description of a specific system == Plone content  Code == Implementation of a specific system == Views on Plone content (metadata) ArchGenXML: • Metamodel == UML Metamodel • Model == UML (XMI file) • Code == generated from XMI PloneFormGen: • Metamodel == PFG Content Types • Model == FormFolder + Subobjects • No code generated, interpretation of model at runtime Collections ExistingExamples It‘s an approach – not a product.
  • 7. © 2010 Condat AG 7 Attractive Advantages  Reduces manual coding effort  Generates .py, .pt, .cpt, .cpy, .xml, .sql, .zcml, …  High configurability (for you and the customer)  Model can be accessed at runtime  Behavior of generic parts is dynamically changed  Increases productivity  Homogenous environment, everything is Plone-ish  Makes your design patterns explicit, enforces conventions  Better learning curve for new developers  Higher maintainability  Single source for changes  Helps you deal with major changes in Plone architecture  Integrated documentation (orange: specific strengths of PD2, otherwise: typical advantage of MDD)
  • 8. © 2010 Condat AG 8 Conflicting Challenges  Keep implementation details out of the models  Make it simple  Customer readable  Generate as much as possible (and useful)  Make it powerful  Executable
  • 9. © 2010 Condat AG 9 Domain description  Finding your metamodel – How would you describe your future systems? What abstractions/patterns do you employ?  Possible input  Legacy systems (to be migrated)  The future design  Storyboards  UML models  Your own patterns/frameworks  User/technical documentation
  • 10. © 2010 Condat AG 10 Multiple metamodels  Content  Views  Navigation  Layout  Authoring  Build  Deployment  Code Structure Abstraction Looking at the system from different perspectives
  • 11. © 2010 Condat AG 11 Code structure
  • 12. © 2010 Condat AG 12  Concepts / structures for code generation  File, Directory, FileSeries, FileGroup, etc.  PT/DTML Templates for code generation, using domain model objects as contexts  Code generation traverses the structure, applying model elements to templates, writing the resulting code to the local file system of the Zope (ZEO client) instance Code structure modelling
  • 13. © 2010 Condat AG 13 UML example
  • 14. © 2010 Condat AG 14 Example structure ('plone3layout', 'Plone 3 Standard Layout', 'PD2Layout', {'namingExpression':'context.Title()'}, [ ('readme.txt','README.txt','PD2File',{'viewname':'empty','namingExpression':'self.Title()'},[]), ('setup.cfg','setup.cfg','PD2File',{'viewname':'empty','namingExpression':'self.Title()'},[]), ('setup.py','setup.py','PD2File',{'viewname':setup','namingExpression':'self.Title()'},[]), ('modulepart1','<modulepart1>','PD2Directory',{'viewname':'','namingExpression':'context.Title().split('.')[0]'}, [ ('init.py','__init__.py','PD2File',{'viewname':'initpkg','namingExpression':'self.Title()'},[]), ('modulepart2','<modulepart2>','PD2Directory',{'viewname':'','namingExpression':'context.Title().split('.')[1]'}, [ ('init.py','__init__.py','PD2File',{'viewname':'init','namingExpression':'self.Title()'},[]), ('configure.zcml','configure.zcml','PD2File',{'viewname':'configure','namingExpression':'self.Title()'},[]), ('config.py','config.py','PD2File',{'viewname':'empty','namingExpression':'self.Title()'},[]), ('interfaces.py','interfaces.py','PD2File',{'viewname':'interfaces','namingExpression':'self.Title()'},[]), ('readme.txt','README.txt','PD2File',{'viewname':'empty','namingExpression':'self.Title()'},[]), ('version.txt','version.txt','PD2File',{'viewname':'empty','namingExpression':'self.Title()'},[]), ('browser','browser','PD2Directory',{'viewname':'','namingExpression':'self.Title()'},[]), ('content','content','PD2Directory',{'viewname':'','namingExpression':'self.Title()'}, [ ('init.py','__init__.py','PD2File',{'viewname':'empty','namingExpression':'self.Title()'},[]), ('type.py','<type>.py','PD2FileSeries',{'viewname':'atclass','namingExpression':''%s.py' % context.Title().lower()','listExpression':'context.getContentTypes()'},[]), ('configure.zcml','configure.zcml','PD2File',{'viewname':'cconfigure','namingExpression':'self.Title()'},[]), ]), ('profiles','profiles','PD2Directory',{'viewname':'','namingExpression':'self.Title()'}, [ ('default','default','PD2Directory',{'viewname':'','namingExpression':'self.Title()'}, [ …
  • 15. © 2010 Condat AG 15 Example: gstype view <tal:block i18n:domain="conpd2.codegen" tal:define="ct context/Title"> <object tal:replace='structure string:<?xml version="1.0"?>'/> <object name="PD2Adapter" tal:attributes="name ct" meta_type="Factory-based Type Information with dynamic views" xmlns:i18n="http://xml.zope.org/namespaces/i18n"> <property name="title" tal:content="ct">PD2Adapter</property> <property name="description"></property> <property name="content_meta_type" tal:content="ct">PD2Adapter</property> <property name="product" tal:content="context/getProductName">ConPD2</property> <property name="factory" tal:content="string:add${ct}">addPD2Adapter</property> <property name="immediate_view">base_view</property> <property name="global_allow">True</property> <property name="filter_content_types">False</property> <property name="allowed_content_types"> </property> <property name="allow_discussion">False</property> <property name="default_view">base_view</property> <property name="view_methods"> <element value="base_view"/> … Full example
  • 16. © 2010 Condat AG 16 Content
  • 17. © 2010 Condat AG 17 Content modelling  Describes most of the information architecture  Metamodel: Types, Attributes, Relationships  Probably even more domain-specific  Code: AT schemata, classes, GS xml, zcml  Also possible: RDBMS-related content
  • 18. © 2010 Condat AG 18 UML example (this is taken from the metamodel of the first version of ConPD2, which is basically a metamodel for AT development)
  • 19. © 2010 Condat AG 19 Views
  • 20. © 2010 Condat AG 20 Views modelling  What is presented where/how?  Metamodel: View Types (e.g. single object, object list, dashboard) with presentation details (e.g. sorting, batching)  Code: template fragments, macros, view classes, helper methods
  • 21. © 2010 Condat AG 21 More metamodels  Navigation: primary, secondary, depth, …  navigation portlet, sections viewlet  Layout: two/three columns, header, footer, …  Viewlets, CSS (cf. Subskins product)  Authoring:  roles, workflows, staging, content rules  Build & Deployment:  devbuildout|production|test.cfg, deployment scripts, monitoring frontend
  • 22. © 2010 Condat AG 22 All-round Application  Implement Metamodel  E.g. with ArgoUML, ArchGenXML  Templates for code generation  Deploy PD2  Model lives in ZEO server  Developers work with local ZEO Client, which writes to local file system  Develop with PD2  Describe customer site in terms of the metamodel  Push the button  Make customer specific extensions  Implement generic parts (which interpret metadata at runtime)  Iterate
  • 23. © 2010 Condat AG 23 Outrageous Outlook  Metamodels for knowledge management, public internet, collaborative applications, …  Plone Technology Metamodel  Generic Applications for multiple clients in SaaS scenarios
  • 24. © 2010 Condat AG 24 Thank you Condat AG Henning Rietz Alt-Moabit 91 d 10559 Berlin Tel. (030) 3949-1179 hr@condat.de www.condat.de

Editor's Notes

  1. Motivation: Likes &amp; Dislikes Idea
  2. Die Startseite zeigt… Auf den nächsten Ebenen sieht man Wenn man ein X öffnet, dann Typen: Dashboard, SingleObject, ObjectList, Form Bausteine: Bildergalerie, Zusatzinformationen Ausdrücke: die letzten X, die neusten Y, allg. Suchkritieren