Plone :
Evolving Python CMS
            胡崇偉
     marr.tw @ gmail.com
I Love Web
    Do You?


    Encouraging Everyone
       to Think in a Way
  Scalable and Collaborative
Common Ways to
   Have Your Sites
1. Building Them with Frameworks
2. Running Them with CMSes
Existing Frameworks
  Never Satisfy Me,
So I Create My Own…
            強者如是說
Plone = Python based CMS

 CMS = Contents in Database
       Added/Edited by User/Group
       Managed via Workflow
       Searchable with Index/Catalog
Installation Options

   1.Unified Installer
   2./usr/bin/python
   3.VirtualEnv
Content ID = URL
http://localhost:8080/mysite
http://mysite.com/my_folder/my_item
http://mysite.com/my_folder/my_item/view
http://mysite.com/my_item/edit
http://mysite.com/manage
http://mysite.com/@@manage-viewlets
http://www.sixfeetup.com/blog/10-reasons-why-plone-can-improve-your-seo
Solid Core
• Proven Migration Path
• Good approximation of
  Security Track Records of
  All Stack Components
http://plone.org/products/plone/security/overview
Undo, Transaction, Versioning
Python’s dynamic nature allows
developers to quickly develop applications,
avoiding the compile cycle and static
typing declarations required by other
languages. The ZODB offers a similar
benefit: developers who use the ZODB can
store their objects transparently without
any cumbersome mapping of objets to
relational database tables.
Default Content Types
   Page        Folder
   News Item   Collection
   Event
   Image
   File
   Link
Editing
Display
One Folder Different Display
News Item Listing #1
News Item Listing #2
More Than
Out-Of-The-Box Functionalities
          Needed?
 With a Little Help from My Friends
Python Building Blocks
Python Packages are distributed as Eggs

         Python Package Index
        http://pypi.python.org/

              Example:
        easy_install docutils
             pip docutils
Extend Plone with Add-ons
Plone Addon (Product) =~ Python Package (Egg)
How Plone Add-ons Work
zc.buildout helps to install addons
CMS = Forms in Database


  Form = Content Type
Form = CMS Core


Content Type = Schema
             = Fields + Widgets
From Archetypes To Dexterity




Improved Content Type Building Framework
Dexterity Behaviors


Reusable components that can be
   enabled on a per-type basis
 through enumeration in the FTI.
Diazo : UI Design + Contents
Diazo Concept

http://www.diazo.org/
Diazo In Action




http://screenr.com/snt8
Considerations
1. ZODB: a Double-edged Knife
2. Positioned as Enterprise Grade
3. Resource Availability
4. Integration Issues

Plone -- Evolving Python CMS