Novell has used various proprietary CMS solutions over time, including TeamSite and Vignette. None of these solutions met all of our needs, nor were they easy to modify. We began looking at different Open Source CMS options, and decided on Plone. This presentation will briefly discuss Novell's proprietary CMS history, why we chose Plone, what we are currently using and developing, and our plans for the future. It will also discuss our architecture for making Plone successful for enterprise websites.
- 1. Open Source in the Enterprise Plone @ Novell
2. Why do you care? 3. Presentation Outline
-
- Other CMS systems we have used
-
- CMS needs and how we met them
-
- Exciting adventures along the way
4. CMS History at Novell
-
- Whole page only in our version
-
- Thermonuclear detonation (more on this later)
-
- Required Vignette consultants for EVERYTHING
- Never-ending coding death spiral
5. How we got to Plone
- Neither Vignette nor TeamSite had all the features we
needed
- Novell is investing heavily in open source
-
- Active community (lots of third-party products)
-
- Localization, localization, localization
-
- Scalable???We hoped so...
6. Challenges 7. Challenge 1: Security How do we not get hacked?
Warning: Eye Chart Ahead! 8. 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 9. Challenge 2: Localization
- LinguaPlone for 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: 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 11. TeamSite Disaster (cont.)
-
- FileSystemStorage with our own storage strategy
-
- 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 Dynamic Content
-
- Composite Page/Composite Pack
-
- Generated static file for English, dynamic for non-English
- Corporate Events Calendar
-
- Query Results based upon taxonomy field (patched to all content
types)
13. Challenge 4: Handling the Load
-
- Home page: 537,377 page views
-
- http://www.novell.com/linux : 1,357,157 page views
-
- Apache + iChain (Novell's reverse proxy cache)
14. 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 15. Other Load Gotchas
- Broken-link/orphan-file checkers
-
- 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. Mistakes 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
-
- Content targeting based on locale and interest
19. 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)
20. 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
21. Questions? 22. 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