A talk for the 2012 PloneConf in Arnhem, the Netherlands. Speakers: Gil Forcada, Timo Stollenwerk, Kees Hink. How we built a newspaper website in Plone.
8. Membership
● Login/Registration: z3c.form
● No membrane
● Dexterity member folder
● Sync between member profile and folder with
event handlers
● Behavior to adapt member properties
● Registration should/could go into Plone core?
9. Front page
● Folderish structure
● “Link” objects that reference existing content
● Custom views
● Ability to override article title, description,
image
● Inline management buttons
● Drag-and-drop to reorder content
10.
11.
12. Comments
● plone.app.discussion
● Complex custom workflow
● Blaming / editing / deleting comments
● 3 community moderators
● Most commented viewlet om front page
● About 330 new comments each day
● Allow/disallow discussion
– behavior => plone.app.dexterity
– dexterity support => plone.app.discussion 2.2x???
13.
14. Development
● Git
– git merge --no-ff
– git rebase -i
– git pull -r
● Jenkins
15.
16. Migration
● Numbers
– 30k articles
– 25k blog entries
– 20k members
– 350k comments
● Transmogrifier
● MySQL rel DB => Plone
● Daily non-incremental migration
● Daily Jenkins job
● much more work than anticipated, worked well though
17. Performance Tests
● The Grinder
● In Jenkins
● Helped us identify performance issues (Diazo,
catalog)
● Warm-up script after instance restart
19. Production servers overview
● physical server
● delivery vms
● 10 workers
● 1 ZEO server
● 1 monitoring vm (munin)
● all errors sent as mails
20. Production server caveats
● p.a.caching is wonderful
● workers mem usage keeps growing always
● really slow startup time
21. Servers
● 3 in-house and 4 production servers
● everything in virtual machines
● and everything controlled by fabric
● ~150 fabric tasks
22. Notifications
● Shown in browser (“notification area”)
● Example: “you have a new comment”
● Deleted on click
● Created by event handler
● Storage: annotation on Member object
● Settings
23. Evaluation
● Plone rocks!
● What more could you want?
● Since you ask:
– member profiles, notifications, limit memory
usage, way to run long and intensive tasks,
replication with ZODB,
● Open Spaces