Monday, December 2, 2013

Plone the big picture

Plone is an application built on top of a collection of supporting frameworks. I'm intentionally leaving out details, with the aim of presenting just enough to help a newbie to find their footing with Plone.

I encourage persons to approach Plone in the following way:
  • Understand the big picture but focus on the parts that address your immediate need.
  • Inform yourself about the other parts so you know where to look once you need to do more (most information is available at http://developer.plone.org).

Understand the big picture

If Plone is a collection of frameworks it makes sense to get a map of the various frameworks and what they do. The map below presents the most important parts (note: Dexterity and Grok are not core but I have them here because they are widely used, there are parts that I've left out as well).
An incomplete map of some of the major technologies that power Plone
Diazo - Theming framework
Dexterity - Content types framework
GenericSetup - Configuration Framework
Zope Component Architecture (ZCA) - A Framework that allows definition of features as loosely coupled parts (called components). Managed using a configuration language called ZCML.
Grok - provides a convention over configuration framework for the ZCA but is not a core package.
DCWorkflow - A Framework for managing permission based states, transitions and permissions
Content Management Framework (CMF) - Provides the underlying infrastructure for building content management systems
Pluggable Authentication Service - Framework for user authentication, makes it possible to add other authentication sources (e.g. Oauth, LDAP) etc..
Z3CForm - A form and widget framework


Buildout is a build system which controls the assembly of a Plone system. Instructions are stored in a buildout.cfg file which buildout uses to assemble the specific required versions of all supporting packages as well other system settings.

For all newbies - Before you go any further 

It is generally recommended that you learn Buildout properly then become familiar with the mechanics of day to day Plone administration. Spend your first couple days getting a good grasp of Buildout, changing settings and installing add-ons. Then make sure you understand how Plone works from the user and site administrator's perspective. Try to complete the following tasks in building a basic Plone site:
  • Add News Items with images
  • Create some events for the site
  • Create a few custom collections
  • Portlets (manage portlets so that different ones show in different sections of the site)
  • Permissions and Workflows
The screenshot highlights two portlets on a Plone site. A portlet is "box" that can be displayed, most often, in a sidebar.

Customize the Look

If you're interested in changing the look of a Plone site then you'll want to learn Diazo.

Getting started with Development

Ready to create your own add-on? Then Dexterity, Grok and GenericSetup will be very useful.
Very soon after that DCWorkflow and z3c.form will become handy. Finally take the time to understand the purpose of ZCML.

Deeper Dive

Some time later, once you're ready for a deeper dive you can begin to understand the Zope Component Architecture (ZCA) and the Pluggable Authentication System (PAS) which allows you to customize how site authentication is done.

4 comments:

Jean-Michel FRANCOIS said...

Thanks for that big picture :)

But please remove grok from it. You should not use grok. Grok has not being upgrade since 2012 and is not part of the Plone core.

__gotcha said...

Maybe this the sign that grok is thin and stable enough. There has not been a lot of changes in ZTK either.

Lennart Regebro said...

five.grok is in active use and development, so if it's not being updated it's because nobody who has found bugs have nagged enough about them.

That said, I don't even know what bugtracker to use. There's one on github, with zero bugs, one on launchpad with zero bugs, and I can't find any bugs in the Plone tracker either.

Grok itself has a bugtracker, and had a release in April, so the grokcore packages, which do most of the heavy lifting, are being maintained and released.

David Bain said...

+Jean-Michael FRANCOIS

I have a problem. While Grok is definitely not core (I even noted in the post, it is widely used. In fact it is integrated into tools like ZopeSkel and is used in beginner tutorials like the TodoApp tutorial.

If it isn't the recommended way forward, I'll actively discourage it in future recommendations.

(hmmm... Maybe I'll need to colour code things to identify the non-core components).

Sign up for my upcoming Plone 5 Book & Video tutorials

plone 5 for newbies book and videos