Open Source in the Enterprise Plone @ Novell Jared Whitlock Web Marketing Systems
Why do you care?
Presentation Outline CMS History at Novell Other CMS systems we have used How we got to Plone Challenges CMS needs and how we met them Exciting adventures along the way Mistakes Future Direction Sage Advice
CMS History at Novell Interwoven TeamSite “Whole page” only in our version Didn't care about us Thermonuclear detonation (more on this later) Vignette VCM Expensive Required Vignette consultants for EVERYTHING Flexible...sort of Never-ending coding death spiral
How we got to Plone Neither Vignette nor TeamSite had all the features we needed Novell is investing heavily in open source Plone has great features Easily expandable Active community (lots of third-party products) Localization, localization, localization Archetypes are awesome Scalable???  We hoped so... The price was right
Challenges
Challenge 1: Security How do we not get hacked? Warning: Eye Chart Ahead!
Plone Architecture Plone3 ZEO3 Plone2 ZEO2 Plone1 ZEO1 intranet/cms www.novell.com /* ZRS FileDeployment Read/Write – Inside Firewall Read Only – Outside Firewall Zope Client1 Zope Client1 Zope Client2 Apache File System ZODB Zope Client2 iChain iChain Zope Client1 Zope Client2 Apache File System ZODB File System ZODB L4 L4 L4 L4
Challenge 2: Localization LinguaPlone for languages Core of eight languages Up to 15 languages on some content Built an XLIFF exporter that connects to translation vendor GeoPlone for geography-specific content Similar in operation to LinguaPlone Simple example: Novell.com home page phone number
Challenge 3: TeamSite Disaster Can we do a mass-migration of static files to Plone? How do we make common changes across files? How do we push those files to the production servers? Story time
TeamSite Disaster (cont.) StaticFile content type AttachmentField FileSystemStorage with our own storage strategy FileDeployment product Queues files for deployment to targets set up in the tool Transactional processing ensures that the files arrive when they should Only deploys to Apache targets on “publish” Search and Replace product Uses either strings or regex Returns a preview list with checkboxes to change only what you want
Meanwhile...back to Dynamic Content Novell.com home page Composite Page/Composite Pack Generated static file for English, dynamic for non-English Press Releases Corporate Events Calendar ListPages Extends Smart Folder Query Results based upon taxonomy field (patched to all content types)
Challenge 4: Handling the Load Some stats for August Home page: 537,377 page views http://www.novell.com/linux : 1,357,157 page views StaticFiles Apache + iChain (Novell's reverse proxy cache) Dynamic Pages CacheFu + iChain
Plone Architecture Plone3 ZEO3 Plone2 ZEO2 Plone1 ZEO1 intranet/cms www.novell.com /* ZRS FileDeployment Read/Write – Inside Firewall Read Only – Outside Firewall Zope Client1 Zope Client1 Zope Client2 Apache File System ZODB Zope Client2 iChain iChain Zope Client1 Zope Client2 Apache File System ZODB File System ZODB L4 L4 L4 L4
Other Load “Gotchas” Web Crawlers Broken-link/orphan-file checkers Plone skin “exposed” URLs Don't have an elegant solution for this Currently using isAnon variable in templates to hide things externally Sounds like Plone 3.x technologies will help with this
Mistakes
Mistakes ZODB Insecurities: “we know and love SQL databases” Fear of Python: “we know and love Java” Wouldn't SQL queries and a search engine be better than catalog queries?  How about replacing Plone's interface with a home-grown one? Answer: no Answer: DEFINITELY no
Future Direction Entire website in Plone Many more dynamic pages Content targeting based on locale and interest Intranet on Plone Currently under way Moving to Plone 3.x
Sage Advice For Beginners Read “The Definitive Guide to Plone” (outdated, but still very good)   Read Martin's Book Become familiar with every third-party product on Plone.org Subscribe to the "Latest releases" RSS feed on Plone.org Subscribe to the Plone users mailing list Use Plone as it is intended Use quick prototyping to “win people over” Don't be a wuss (just learn Python)
Sage Advice For Beginners (cont.) Hang out in the #plone chat room Don't be afraid to add debug logging in Plone code DeadlockDebugger and Clouseau are your friends
Questions?
Our Products: Do You Want Them? BackgroundTasks  - Run ZODB operations asynchronously CharsetConversion  - Character set conversion on file upload/download FileDeployment  - Deploy files to SFTP targets GUITopic  - Smart Folders whose views can be edited TTW by end users GeoPlone  - Like LinguaPlone, but for Geography RDBSynch  - Synchronize data from a RDB into Plone objects SearchAndReplace  - Regex capable multi-file search & replace TxnFileOps  - Transaction support for Filesystem and SFTP

Jared Whitlock Open Source In The Enterprise Plone @ Novell

  • 1.
    Open Source inthe Enterprise Plone @ Novell Jared Whitlock Web Marketing Systems
  • 2.
  • 3.
    Presentation Outline CMSHistory at Novell Other CMS systems we have used How we got to Plone Challenges CMS needs and how we met them Exciting adventures along the way Mistakes Future Direction Sage Advice
  • 4.
    CMS History atNovell Interwoven TeamSite “Whole page” only in our version Didn't care about us Thermonuclear detonation (more on this later) Vignette VCM Expensive Required Vignette consultants for EVERYTHING Flexible...sort of Never-ending coding death spiral
  • 5.
    How we gotto Plone Neither Vignette nor TeamSite had all the features we needed Novell is investing heavily in open source Plone has great features Easily expandable Active community (lots of third-party products) Localization, localization, localization Archetypes are awesome Scalable??? We hoped so... The price was right
  • 6.
  • 7.
    Challenge 1: SecurityHow do we not get hacked? Warning: Eye Chart Ahead!
  • 8.
    Plone Architecture Plone3ZEO3 Plone2 ZEO2 Plone1 ZEO1 intranet/cms www.novell.com /* ZRS FileDeployment Read/Write – Inside Firewall Read Only – Outside Firewall Zope Client1 Zope Client1 Zope Client2 Apache File System ZODB Zope Client2 iChain iChain Zope Client1 Zope Client2 Apache File System ZODB File System ZODB L4 L4 L4 L4
  • 9.
    Challenge 2: LocalizationLinguaPlone for languages Core of eight languages Up to 15 languages on some content Built an XLIFF exporter that connects to translation vendor GeoPlone for geography-specific content Similar in operation to LinguaPlone Simple example: Novell.com home page phone number
  • 10.
    Challenge 3: TeamSiteDisaster Can we do a mass-migration of static files to Plone? How do we make common changes across files? How do we push those files to the production servers? Story time
  • 11.
    TeamSite Disaster (cont.)StaticFile content type AttachmentField FileSystemStorage with our own storage strategy FileDeployment product Queues files for deployment to targets set up in the tool Transactional processing ensures that the files arrive when they should Only deploys to Apache targets on “publish” Search and Replace product Uses either strings or regex Returns a preview list with checkboxes to change only what you want
  • 12.
    Meanwhile...back to DynamicContent Novell.com home page Composite Page/Composite Pack Generated static file for English, dynamic for non-English Press Releases Corporate Events Calendar ListPages Extends Smart Folder Query Results based upon taxonomy field (patched to all content types)
  • 13.
    Challenge 4: Handlingthe Load Some stats for August Home page: 537,377 page views http://www.novell.com/linux : 1,357,157 page views StaticFiles Apache + iChain (Novell's reverse proxy cache) Dynamic Pages CacheFu + iChain
  • 14.
    Plone Architecture Plone3ZEO3 Plone2 ZEO2 Plone1 ZEO1 intranet/cms www.novell.com /* ZRS FileDeployment Read/Write – Inside Firewall Read Only – Outside Firewall Zope Client1 Zope Client1 Zope Client2 Apache File System ZODB Zope Client2 iChain iChain Zope Client1 Zope Client2 Apache File System ZODB File System ZODB L4 L4 L4 L4
  • 15.
    Other Load “Gotchas”Web Crawlers Broken-link/orphan-file checkers Plone skin “exposed” URLs Don't have an elegant solution for this Currently using isAnon variable in templates to hide things externally Sounds like Plone 3.x technologies will help with this
  • 16.
  • 17.
    Mistakes ZODB Insecurities:“we know and love SQL databases” Fear of Python: “we know and love Java” Wouldn't SQL queries and a search engine be better than catalog queries? How about replacing Plone's interface with a home-grown one? Answer: no Answer: DEFINITELY no
  • 18.
    Future Direction Entirewebsite in Plone Many more dynamic pages Content targeting based on locale and interest Intranet on Plone Currently under way Moving to Plone 3.x
  • 19.
    Sage Advice ForBeginners Read “The Definitive Guide to Plone” (outdated, but still very good) Read Martin's Book Become familiar with every third-party product on Plone.org Subscribe to the "Latest releases" RSS feed on Plone.org Subscribe to the Plone users mailing list Use Plone as it is intended Use quick prototyping to “win people over” Don't be a wuss (just learn Python)
  • 20.
    Sage Advice ForBeginners (cont.) Hang out in the #plone chat room Don't be afraid to add debug logging in Plone code DeadlockDebugger and Clouseau are your friends
  • 21.
  • 22.
    Our Products: DoYou Want Them? BackgroundTasks - Run ZODB operations asynchronously CharsetConversion - Character set conversion on file upload/download FileDeployment - Deploy files to SFTP targets GUITopic - Smart Folders whose views can be edited TTW by end users GeoPlone - Like LinguaPlone, but for Geography RDBSynch - Synchronize data from a RDB into Plone objects SearchAndReplace - Regex capable multi-file search & replace TxnFileOps - Transaction support for Filesystem and SFTP