13. CMSaaS (e.g.
ploud.com/squarespace)
SaaS provider
You team
14. Startup/App
e.g. Django/pyramid
Your Team Off the shelf
15. Dylan's Law of Frameworks
“The bigger the framework, the bigger the
learning curve, the greater the inflexibility...
but the bigger the chance you can use
someone else code”
36. Easy Code
from five import grok
from Products.CMFDefault.interfaces import
IDocument
class HelloWorld(grok.View):
grok.context(IDocument)
grok.requires('zope2.View')
grok.name('hello-world')
http://plone.org/products/dexterity/documentation/manual/five.grok
50. Zope Object Database
storage = FileStorage.FileStorage(’db.fs') new User instance
# Create
db = DB(storage) newuser = User()
conn = db.open()
# Add whatever attributes you want to track
class User(Persistent): newuser.id = 'amk'
pass newuser.first_name = 'Andrew' ; newuser.last_name = 'Ku
...
dbroot = conn.root()
# Add object to the BTree, keyed on the ID
# Ensure that a 'userdb' key is present
userdb[newuser.id] = newuser
# in the root
if not dbroot.has_key('userdb'):
# Commit the change
from BTrees.OOBTree import OOBTree
transaction.commit()
dbroot['userdb'] = OOBTree()
userdb = dbroot['userdb']
51. ZODB makes complex structures easy
http://david.wglick.org/2009/visualizing-the-zodb-with-graphviz
note, plone is one of the only single software solutions that crosses three areas of functionality
If plone is so good, why not more popular? Public sites vs intranets. Hosting.
Not owned by one company, trade mark controlled by the Plone Foundation. Plone can never be bought out or shut down so users can never be stranded. STA - 1 million uniques a month