SlideShare a Scribd company logo
Alt. Content DeliveryAlan RunyanPlone Symposium EastState College, Pennsylvania5/29/09
OverviewReview modes of content deliveryWhy and what purpose Existing solutions for PloneStrengths and WeaknessContentMirror in detailConclusion
What is itTwo modes in-band & out-of-bandPlone Default is “in band”Req to Plone; Plone computes Respe.g. XDV, mod_wsgi, mod_proxy, varnishAtypical usage of Plone, “out of band”Plone emits content into intermediary storagePlone is not involved in responding to ReqNo other FOSS CMS has such feature
How Others Do ItRender pages to filesystem + syncCustom programming to iterate over repository rendering views to diskProvide an API into repository for web-tier application to source contentPromote the database schema as API
Out of BandStatic DeliveryGenerates static assets from PloneAssets transferred to web serverStatically rendered content servedDynamic DeliveryPlone pushes content into 3rd party data storeSeparate web application to display content
Why?Static DeliveryConstraints in delivery mode of websiteSecurity requires no moving partse.g. Kiosk, updated every X hoursDynamic DeliveryWeb application is vastly different than CMSDifferent organizational / skill-sets being usede.g. existing website is .NET; want new section to be driven by Plone
Current OptionsStatic DeliveryCMFDeploymentenpraxis.staticsiteDynamic DeliveryEntransitContentMirror
Plone ApproachRender pages to filesystem + syncCMFDeployment, enpraxis.staticsitePromote the database schema as APIEntransit, contentmirrorProvide API into the Repositorywsapi4plone.parfait
CMFDeploymentStatic deliveryStrengthsVarious large projects have used itVery flexible configuration modesSupports transportWeaknessFlexibility brings complexity / lacks testingLast release 2006
In the Wild
enpraxis.staticsiteStatic deliveryStrengthsVery simple and approachableSerializes Plone to file systemWeaknessRequires programming & deploymentLack of documentation and testing
In the Wild
EntransitDynamic DeliveryStrengthsSupports staging of entire changesetsConceptually simpleWeaknessRequires too much programmingDocumentation and testing is lackingToo many moving partsDoes not have connection to CMS during load into data store.  Significantly complicates state mgmt
In the Wild
ContentMirrorDynamic deliveryStrengthsSimple, Extensible, and FastTight coupling with Plone event modelWeaknessEvolving data store & Plone models requires disciplineData model currently exposes impl details
In the Wild
Wrap UpAlt delivery is atypical use case for PloneSystems with multiple ORG actorsStatic Delivery vs. Dynamic DeliveryBuilding up is more approachableDocumentation / Testing criticalDynamic delivery: CM is best bet.Entransit 2 plans on layering staging on CMNow lets go into details of ContentMirror
ContentMirror Pitch Sync Serialize content from Plone RDBMSJust Works™Small code base < 1k LOC; 99% coverageLet SQLAlchemy do heavy liftingRDBMS query-ability of content attributesWell tested, 99% coverage + mocked
Evaluate TodayBuildout: Plone, ContentMirror, and SOLREstimate: 30 minutesConfiguration of Relational DatabaseEstimate: 20 minutesBootstrap database with ddl.pyEstimate: 5 minutesHave real time Plone Content (RDBMS) and Search (SOLR); Now pick frontend.
UsagesBusiness reports based on content repository (i.e. Crystal Reports, iReport)Provide richer queries (using SQL)Store data in multiple back endsRDBMSGoogle App Engine
You already knowIf you do not customize Plone heavily; it migrates really well.Plone lots of neat features: WebDAV (Enfold Desktop;), LDAP, Content Types, Cache Fu (Enfold Proxy;), etc.So the authoring experience is flexible, configurable, and enjoyableYou can have multiple “sub-sites”
ObservationsPresentation tiers have different requirements than content repositorySimplicity is key.  Maintaining presentation tiers have to be simple; few abstractionsPHP or Django have few abstractions to display dynamic data on web pageIsolate complexity; never will go awayPlone seen as self-licking ice cream cone
The StoryBig university has 200 IT staff; all busy managing HR, ERP, printers, etc.Individual departments are independent and have transient staff who manage webDepartments need way to use transient staff to maintain web presence; if CMS exists.  Transient staff can use PHP.PHP, Django, .NET developers are cheap
More StoryThere is no way IT can:Manage all department changes centrallyMaintain system that has software changing daily or hourlyAllow people to make a change that impacts campus wide systemNoam in Linguistics should not be able write code which DoS the campus CMSIT does best with focus: keep systems up.
Even More Story?IT offer primitives: LDAP (users), RDBMS (content), SOLR (search). Commodity servicesDepartments implement however they likeContentMirror is a lightweight step towards decoupling the CMS from presentationMake presentation as flexible as possible
InstallationBuildout the recipe.cfgPut SQLAlchemy URI in .zcml or ENVbin/instance run ddl.py $DB > out.ddlExecute out.ddlStart ZopeCreate Plone site and add contentQuery your RDBMS
FeaturesAuto-generate DDL for registered typesAll default Plone content types workCurrently focused on Archetypes; z3 easyBulk import of Plone content into RDBMSRe-entrant (run multiple times)Schema available in JSON (vocabularies)Fast. Serialized 100k content + references in < 20m
Your content typeCreate new zcml that is included<configure xmlns="http://namespaces.zope.org/zope"xmlns:ore="http://namespaces.objectrealms.net/mirror">  <ore:engineurl="mysql://user:passwd@host/database"             name="mirror-db"             encoding='utf8'             echo="False"/>         <ore:mirror content="Products.AudioholicsContent.AHHomePage.AHHomePage"/></ore:engine></configure>Re-run ddl.py; execute ddl.py in RDBMSAll default Plone content types work OOTB
Field not available?ore.contentmirror/transform.zcmlcontains adapters for how AT Fields are mapped to SQLAlchemyore.contentmirror/transform.pycontains the adapter source code <adapter     for=".interfaces.ITextField .interfaces.ISchemaTransformer"     provides=".interfaces.IFieldTransformer"     factory=".transform.TextTransform"     />
Escape HatchIf you don’t want field level serializationWrite custom transformer for your classYou take full responsibility forCopying state from instance to RDBMSMay also have to do some extra work
Of Interestore.contentmirror/operation.pyProvide buffer to filter out duplicate operationsSimple pattern for transaction integrationore.contentmirror/jsonschema.pySerializes AT schemas into RDBMS via a JSON structurePresentation can easily find out what the original schema (including vocabularies)Not used by default
DynamismWhat about PloneFormGen or interaction?ContentMirror would serialize the Form elements as database rows; FE has to draw and validate formsCollage would generate data representing rows, columns pointing to content UIDPresentation tier does re-implement common functionality (RSS, Login, etc)
ConclusionSignificant experience in communityStarting simple is more approachableStatic vs. DynamicCM has a great experience OOTBrc2 has minor OOTB issue; all fixed in trunkStaging not implemented across multiplecontent types. DEV, STAGE, PRODAlt delivery is a minority use case.
ConclusionYou would never know that Plone fits these use casesLittle visibility in broader communityHard to separate the add-on pilecollective simply has too much activityCostly to maintain; advocateWithout formal support in Plone support expensiveKapilThangavelu wrote ContentMirror & CMFDeployment – awesome software designer!
FinContent Mirror (ore.contentmirror) http://code.google.com/p/contentmirror/SOLR (collective.solr)http://lucene.apache.org/solr/Enfold Systemshttp://www.enfoldsystems.com/My email addressalan@enfoldsystems.com

More Related Content

PPT
Implementing WebServices with Camel and CXF in ServiceMix
Adrian Trenaman
 
PPT
EQR Reporting: Rails + Amazon EC2
jeperkins4
 
PDF
Trigger maxl from fdmee
Bernard Ash
 
PPT
An Introduction to Apache ServiceMix 4 - FUSE ESB
Adrian Trenaman
 
PDF
CMIS REST HTTP
David Nuescheler
 
PDF
Async event based web server
Gi Woong Lee
 
PPT
ServiceMix 4 -- Integrating OSGi with JBI
Gert Vanthienen
 
PDF
FDM to FDMEE migration utility
Bernard Ash
 
Implementing WebServices with Camel and CXF in ServiceMix
Adrian Trenaman
 
EQR Reporting: Rails + Amazon EC2
jeperkins4
 
Trigger maxl from fdmee
Bernard Ash
 
An Introduction to Apache ServiceMix 4 - FUSE ESB
Adrian Trenaman
 
CMIS REST HTTP
David Nuescheler
 
Async event based web server
Gi Woong Lee
 
ServiceMix 4 -- Integrating OSGi with JBI
Gert Vanthienen
 
FDM to FDMEE migration utility
Bernard Ash
 

What's hot (9)

PDF
JNUC 2017: Open Distribution Server
Bryson Tyrrell
 
PPT
Succeding with the Apache SOA stack
Johan Edstrom
 
PPT
ScalabilityAvailability
webuploader
 
PDF
Presemtation Tier Optimizations
Anup Hariharan Nair
 
PPT
Using IBM's Cast Iron with SugarCRM to Integrate Customer Data | SugarCon 2011
SugarCRM
 
PPT
Web Server/App Server Connectivity
webhostingguy
 
PDF
Service Oriented Integration With ServiceMix
Bruce Snyder
 
ODP
JUDCon 2010 - Innovative ideas for Integration Solutions through JBoss ESB
Edgar Silva
 
PDF
Building A Simple Web Service With CXF
Carl Lu
 
JNUC 2017: Open Distribution Server
Bryson Tyrrell
 
Succeding with the Apache SOA stack
Johan Edstrom
 
ScalabilityAvailability
webuploader
 
Presemtation Tier Optimizations
Anup Hariharan Nair
 
Using IBM's Cast Iron with SugarCRM to Integrate Customer Data | SugarCon 2011
SugarCRM
 
Web Server/App Server Connectivity
webhostingguy
 
Service Oriented Integration With ServiceMix
Bruce Snyder
 
JUDCon 2010 - Innovative ideas for Integration Solutions through JBoss ESB
Edgar Silva
 
Building A Simple Web Service With CXF
Carl Lu
 
Ad

Viewers also liked (7)

PDF
David Convent - Theme It Yourself
davconvent
 
PDF
Enterprise search in plone using solr
Calvin Hendryx-Parker
 
PDF
Lennart Regebro What Zope Did Wrong (And What To Do Instead)
Vincenzo Barone
 
ODP
David Rey Lessons Learned Updating Content Licensing To Be Plone 3 Compat...
Vincenzo Barone
 
PPT
Where's the source, Luke? : How to find and debug the code behind Plone
Vincenzo Barone
 
PDF
How to market Plone the Web2.0 way
Vincenzo Barone
 
PDF
Plone I18n Tutorial - Hanno Schlichting
Jeffrey Clark
 
David Convent - Theme It Yourself
davconvent
 
Enterprise search in plone using solr
Calvin Hendryx-Parker
 
Lennart Regebro What Zope Did Wrong (And What To Do Instead)
Vincenzo Barone
 
David Rey Lessons Learned Updating Content Licensing To Be Plone 3 Compat...
Vincenzo Barone
 
Where's the source, Luke? : How to find and debug the code behind Plone
Vincenzo Barone
 
How to market Plone the Web2.0 way
Vincenzo Barone
 
Plone I18n Tutorial - Hanno Schlichting
Jeffrey Clark
 
Ad

Similar to Content delivery Plone Symposium East 2010 (20)

ODP
A winning combination: Plone as CMS and your favorite Python web framework as...
Carlos de la Guardia
 
PDF
Content Mirror
fravy
 
ODP
Plomino plone conf2010
ebrehault
 
PDF
Plone
NEWLUG
 
PPTX
Build Python CMS The Plone Way
TsungWei Hu
 
PDF
Plone Futures
Eric Steele
 
PDF
Plone Futures, Plone Conference 2016 Keynote by Eric Steele
T. Kim Nguyen
 
ODP
Jared Whitlock Open Source In The Enterprise Plone @ Novell
Vincenzo Barone
 
ODP
Introduction to Plone (PyCon Ireland 2010)
Kevin Gill
 
ODP
What's New in Plone 4 - Tim Knapp
knappt
 
PPT
Contextual Tour of Plone - (a top open source web content management system)
Ken Wasetis
 
PDF
Why Plone Will Die
Andreas Jung
 
PDF
Plone 5.2 migration at University Ghent, Belgium
Andreas Jung
 
PDF
TU Dresden: A Large-Scale Plone Deployment Case Study, by Sebastian Gottfried
T. Kim Nguyen
 
PDF
Ancient To Modern: Upgrading nearly a decade of Plone in public radio
Cristopher Ewing
 
PDF
BathCamp #32 - CMS Smackdown! - Plone
Matt Hamilton
 
ODP
Plone Intranet under the hood
Guido Stevens
 
PDF
Building bridges - Plone Conference 2015 Bucharest
Andreas Jung
 
PPT
Wpd09 Sydney
virginiachoy
 
PPTX
Performant applications in Plone
David Batranu
 
A winning combination: Plone as CMS and your favorite Python web framework as...
Carlos de la Guardia
 
Content Mirror
fravy
 
Plomino plone conf2010
ebrehault
 
Plone
NEWLUG
 
Build Python CMS The Plone Way
TsungWei Hu
 
Plone Futures
Eric Steele
 
Plone Futures, Plone Conference 2016 Keynote by Eric Steele
T. Kim Nguyen
 
Jared Whitlock Open Source In The Enterprise Plone @ Novell
Vincenzo Barone
 
Introduction to Plone (PyCon Ireland 2010)
Kevin Gill
 
What's New in Plone 4 - Tim Knapp
knappt
 
Contextual Tour of Plone - (a top open source web content management system)
Ken Wasetis
 
Why Plone Will Die
Andreas Jung
 
Plone 5.2 migration at University Ghent, Belgium
Andreas Jung
 
TU Dresden: A Large-Scale Plone Deployment Case Study, by Sebastian Gottfried
T. Kim Nguyen
 
Ancient To Modern: Upgrading nearly a decade of Plone in public radio
Cristopher Ewing
 
BathCamp #32 - CMS Smackdown! - Plone
Matt Hamilton
 
Plone Intranet under the hood
Guido Stevens
 
Building bridges - Plone Conference 2015 Bucharest
Andreas Jung
 
Wpd09 Sydney
virginiachoy
 
Performant applications in Plone
David Batranu
 

Recently uploaded (20)

PDF
MASTERDECK GRAPHSUMMIT SYDNEY (Public).pdf
Neo4j
 
PDF
Cloud-Migration-Best-Practices-A-Practical-Guide-to-AWS-Azure-and-Google-Clou...
Artjoker Software Development Company
 
PDF
Trying to figure out MCP by actually building an app from scratch with open s...
Julien SIMON
 
PDF
Software Development Methodologies in 2025
KodekX
 
PDF
CIFDAQ's Market Wrap : Bears Back in Control?
CIFDAQ
 
PDF
REPORT: Heating appliances market in Poland 2024
SPIUG
 
PDF
A Day in the Life of Location Data - Turning Where into How.pdf
Precisely
 
PDF
Automating ArcGIS Content Discovery with FME: A Real World Use Case
Safe Software
 
PDF
AI Unleashed - Shaping the Future -Starting Today - AIOUG Yatra 2025 - For Co...
Sandesh Rao
 
PDF
OFFOFFBOX™ – A New Era for African Film | Startup Presentation
ambaicciwalkerbrian
 
PPTX
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
 
PPTX
AI in Daily Life: How Artificial Intelligence Helps Us Every Day
vanshrpatil7
 
PDF
Unlocking the Future- AI Agents Meet Oracle Database 23ai - AIOUG Yatra 2025.pdf
Sandesh Rao
 
PDF
Accelerating Oracle Database 23ai Troubleshooting with Oracle AHF Fleet Insig...
Sandesh Rao
 
PPTX
OA presentation.pptx OA presentation.pptx
pateldhruv002338
 
PPTX
What-is-the-World-Wide-Web -- Introduction
tonifi9488
 
PDF
Tea4chat - another LLM Project by Kerem Atam
a0m0rajab1
 
PDF
Orbitly Pitch Deck|A Mission-Driven Platform for Side Project Collaboration (...
zz41354899
 
PDF
Structs to JSON: How Go Powers REST APIs
Emily Achieng
 
PDF
How-Cloud-Computing-Impacts-Businesses-in-2025-and-Beyond.pdf
Artjoker Software Development Company
 
MASTERDECK GRAPHSUMMIT SYDNEY (Public).pdf
Neo4j
 
Cloud-Migration-Best-Practices-A-Practical-Guide-to-AWS-Azure-and-Google-Clou...
Artjoker Software Development Company
 
Trying to figure out MCP by actually building an app from scratch with open s...
Julien SIMON
 
Software Development Methodologies in 2025
KodekX
 
CIFDAQ's Market Wrap : Bears Back in Control?
CIFDAQ
 
REPORT: Heating appliances market in Poland 2024
SPIUG
 
A Day in the Life of Location Data - Turning Where into How.pdf
Precisely
 
Automating ArcGIS Content Discovery with FME: A Real World Use Case
Safe Software
 
AI Unleashed - Shaping the Future -Starting Today - AIOUG Yatra 2025 - For Co...
Sandesh Rao
 
OFFOFFBOX™ – A New Era for African Film | Startup Presentation
ambaicciwalkerbrian
 
Dev Dives: Automate, test, and deploy in one place—with Unified Developer Exp...
AndreeaTom
 
AI in Daily Life: How Artificial Intelligence Helps Us Every Day
vanshrpatil7
 
Unlocking the Future- AI Agents Meet Oracle Database 23ai - AIOUG Yatra 2025.pdf
Sandesh Rao
 
Accelerating Oracle Database 23ai Troubleshooting with Oracle AHF Fleet Insig...
Sandesh Rao
 
OA presentation.pptx OA presentation.pptx
pateldhruv002338
 
What-is-the-World-Wide-Web -- Introduction
tonifi9488
 
Tea4chat - another LLM Project by Kerem Atam
a0m0rajab1
 
Orbitly Pitch Deck|A Mission-Driven Platform for Side Project Collaboration (...
zz41354899
 
Structs to JSON: How Go Powers REST APIs
Emily Achieng
 
How-Cloud-Computing-Impacts-Businesses-in-2025-and-Beyond.pdf
Artjoker Software Development Company
 

Content delivery Plone Symposium East 2010

  • 1. Alt. Content DeliveryAlan RunyanPlone Symposium EastState College, Pennsylvania5/29/09
  • 2. OverviewReview modes of content deliveryWhy and what purpose Existing solutions for PloneStrengths and WeaknessContentMirror in detailConclusion
  • 3. What is itTwo modes in-band & out-of-bandPlone Default is “in band”Req to Plone; Plone computes Respe.g. XDV, mod_wsgi, mod_proxy, varnishAtypical usage of Plone, “out of band”Plone emits content into intermediary storagePlone is not involved in responding to ReqNo other FOSS CMS has such feature
  • 4. How Others Do ItRender pages to filesystem + syncCustom programming to iterate over repository rendering views to diskProvide an API into repository for web-tier application to source contentPromote the database schema as API
  • 5. Out of BandStatic DeliveryGenerates static assets from PloneAssets transferred to web serverStatically rendered content servedDynamic DeliveryPlone pushes content into 3rd party data storeSeparate web application to display content
  • 6. Why?Static DeliveryConstraints in delivery mode of websiteSecurity requires no moving partse.g. Kiosk, updated every X hoursDynamic DeliveryWeb application is vastly different than CMSDifferent organizational / skill-sets being usede.g. existing website is .NET; want new section to be driven by Plone
  • 8. Plone ApproachRender pages to filesystem + syncCMFDeployment, enpraxis.staticsitePromote the database schema as APIEntransit, contentmirrorProvide API into the Repositorywsapi4plone.parfait
  • 9. CMFDeploymentStatic deliveryStrengthsVarious large projects have used itVery flexible configuration modesSupports transportWeaknessFlexibility brings complexity / lacks testingLast release 2006
  • 11. enpraxis.staticsiteStatic deliveryStrengthsVery simple and approachableSerializes Plone to file systemWeaknessRequires programming & deploymentLack of documentation and testing
  • 13. EntransitDynamic DeliveryStrengthsSupports staging of entire changesetsConceptually simpleWeaknessRequires too much programmingDocumentation and testing is lackingToo many moving partsDoes not have connection to CMS during load into data store. Significantly complicates state mgmt
  • 15. ContentMirrorDynamic deliveryStrengthsSimple, Extensible, and FastTight coupling with Plone event modelWeaknessEvolving data store & Plone models requires disciplineData model currently exposes impl details
  • 17. Wrap UpAlt delivery is atypical use case for PloneSystems with multiple ORG actorsStatic Delivery vs. Dynamic DeliveryBuilding up is more approachableDocumentation / Testing criticalDynamic delivery: CM is best bet.Entransit 2 plans on layering staging on CMNow lets go into details of ContentMirror
  • 18. ContentMirror Pitch Sync Serialize content from Plone RDBMSJust Works™Small code base < 1k LOC; 99% coverageLet SQLAlchemy do heavy liftingRDBMS query-ability of content attributesWell tested, 99% coverage + mocked
  • 19. Evaluate TodayBuildout: Plone, ContentMirror, and SOLREstimate: 30 minutesConfiguration of Relational DatabaseEstimate: 20 minutesBootstrap database with ddl.pyEstimate: 5 minutesHave real time Plone Content (RDBMS) and Search (SOLR); Now pick frontend.
  • 20. UsagesBusiness reports based on content repository (i.e. Crystal Reports, iReport)Provide richer queries (using SQL)Store data in multiple back endsRDBMSGoogle App Engine
  • 21. You already knowIf you do not customize Plone heavily; it migrates really well.Plone lots of neat features: WebDAV (Enfold Desktop;), LDAP, Content Types, Cache Fu (Enfold Proxy;), etc.So the authoring experience is flexible, configurable, and enjoyableYou can have multiple “sub-sites”
  • 22. ObservationsPresentation tiers have different requirements than content repositorySimplicity is key. Maintaining presentation tiers have to be simple; few abstractionsPHP or Django have few abstractions to display dynamic data on web pageIsolate complexity; never will go awayPlone seen as self-licking ice cream cone
  • 23. The StoryBig university has 200 IT staff; all busy managing HR, ERP, printers, etc.Individual departments are independent and have transient staff who manage webDepartments need way to use transient staff to maintain web presence; if CMS exists. Transient staff can use PHP.PHP, Django, .NET developers are cheap
  • 24. More StoryThere is no way IT can:Manage all department changes centrallyMaintain system that has software changing daily or hourlyAllow people to make a change that impacts campus wide systemNoam in Linguistics should not be able write code which DoS the campus CMSIT does best with focus: keep systems up.
  • 25. Even More Story?IT offer primitives: LDAP (users), RDBMS (content), SOLR (search). Commodity servicesDepartments implement however they likeContentMirror is a lightweight step towards decoupling the CMS from presentationMake presentation as flexible as possible
  • 26. InstallationBuildout the recipe.cfgPut SQLAlchemy URI in .zcml or ENVbin/instance run ddl.py $DB > out.ddlExecute out.ddlStart ZopeCreate Plone site and add contentQuery your RDBMS
  • 27. FeaturesAuto-generate DDL for registered typesAll default Plone content types workCurrently focused on Archetypes; z3 easyBulk import of Plone content into RDBMSRe-entrant (run multiple times)Schema available in JSON (vocabularies)Fast. Serialized 100k content + references in < 20m
  • 28. Your content typeCreate new zcml that is included<configure xmlns="http://namespaces.zope.org/zope"xmlns:ore="http://namespaces.objectrealms.net/mirror"> <ore:engineurl="mysql://user:passwd@host/database" name="mirror-db" encoding='utf8' echo="False"/> <ore:mirror content="Products.AudioholicsContent.AHHomePage.AHHomePage"/></ore:engine></configure>Re-run ddl.py; execute ddl.py in RDBMSAll default Plone content types work OOTB
  • 29. Field not available?ore.contentmirror/transform.zcmlcontains adapters for how AT Fields are mapped to SQLAlchemyore.contentmirror/transform.pycontains the adapter source code <adapter for=".interfaces.ITextField .interfaces.ISchemaTransformer" provides=".interfaces.IFieldTransformer" factory=".transform.TextTransform" />
  • 30. Escape HatchIf you don’t want field level serializationWrite custom transformer for your classYou take full responsibility forCopying state from instance to RDBMSMay also have to do some extra work
  • 31. Of Interestore.contentmirror/operation.pyProvide buffer to filter out duplicate operationsSimple pattern for transaction integrationore.contentmirror/jsonschema.pySerializes AT schemas into RDBMS via a JSON structurePresentation can easily find out what the original schema (including vocabularies)Not used by default
  • 32. DynamismWhat about PloneFormGen or interaction?ContentMirror would serialize the Form elements as database rows; FE has to draw and validate formsCollage would generate data representing rows, columns pointing to content UIDPresentation tier does re-implement common functionality (RSS, Login, etc)
  • 33. ConclusionSignificant experience in communityStarting simple is more approachableStatic vs. DynamicCM has a great experience OOTBrc2 has minor OOTB issue; all fixed in trunkStaging not implemented across multiplecontent types. DEV, STAGE, PRODAlt delivery is a minority use case.
  • 34. ConclusionYou would never know that Plone fits these use casesLittle visibility in broader communityHard to separate the add-on pilecollective simply has too much activityCostly to maintain; advocateWithout formal support in Plone support expensiveKapilThangavelu wrote ContentMirror & CMFDeployment – awesome software designer!
  • 35. FinContent Mirror (ore.contentmirror) http://code.google.com/p/contentmirror/SOLR (collective.solr)http://lucene.apache.org/solr/Enfold Systemshttp://www.enfoldsystems.com/My email [email protected]