I recently started learning to develop for the Python-based CMS, Plone. This is my perspective on learning to be a Plone developer with years of experience as a SysAdmin and Python developer.
More Powerful Than I Thought
Getting to know Plone, I can really see its appeal for someone who needs a CMS. It can handle anything you want it to. I've been really impressed with the granularity of:
- Access control
- Where portlets can be located
- What types of content can exist in a container
- How you can override styles and templates at any layer
It's impressive to me that you can even create your own content types. Plone is packed with features for large organizations and let's you customize it to your requirements.
There's no Free Lunch
The flip side of the ability to do whatever you want is that it has a steep learning curve. Figuring out where parts of Plone start and end can be difficult:
- Where does buildout end and Plone begin?
- What is a part of GenericSetup vs. Plone?
- When do you need to use Templer?
This is further complicated by the fact that almost everything has an "old way" and a "new way".
Make sure you understand vanilla Plone before you dive into anything custom on an existing site. There are also many versions of Plone in the wild that are still supported from 2 to 4.3, and 5 is just around the corner. Make sure to learn on the version your organization is already using or plans to use.
How I would learn Plone
If you need to learn how to develop for Plone, I recommend to start you:
Learn Buildout First
With Plone you don't install packages like you traditionally would with `pip install`. You list all the packages in a file that Buildout uses to install everything at once and track their location. You should also understand the difference between a Unified Installer buildout or a manual buildout.
ZODB and Plone
Get to know the commands and sequence required to start the ZODB and Plone and shut them down. Then you can get familiar with the command scripts that helps take care of this for you.
Learn How to Get Into the Debugger
Next I would get familiar with the Plone debugger which will let you inspect and interact with live objects.
Explore the Admin Interface
Once you are comfortable with getting Plone installed, running, and debugged, you can start getting familiar with the user's admin interface inside Plone. Take a look around and get familiar with creating content like blog posts as well as changing system settings.
Understand the Zope Management Interface (ZMI)
Once you've played with settings and content in Plone, you can hop over into the ZMI and see how the changes you made in the Plone interface modifies and creates data in Zope.
At this point you should be familiar enough with Plone to start looking at how to build the site you want. Then things get real interesting depending on where you go with this powerful CMS.
Did you enjoy this post? I'll continue to blog on my perspective of Plone and how to modify and manage it.