PrefaceΒΆ

Plone and its accompanion technologies have been built during the course of many years. The codebase contains over 6000 modules. Even the masterminds don’t get it always on the first try: Over the years, generations of technology for the same function has come and gone, leaving its marks to the code. There are technologies built when HTTP was just coming to mainstream. There are technologies which were built when Python programming language was still young, lacking vast amount of power and standard library functionality you have nowadays. Then there are latest trends influencing how things should be done when it become inevi le clear that old, once good, ways have hit their limitations at evergrowing digital information.

The power of hundreds work years of code evolution comes with a price. Comprehensive feature set guarantees that most remove corner cases are usually covered. However, comprehensiveness bring complexity which in turn makes simple things unnecessary difficult.

Plone is easily one of the most complex Python projects and no human person can master it perfectly. It is not always easy to figure out how everything is interacting, especially when there are several ways of doing the same things. There might or might not be good documentation, but due to vast number of possible needs, most of them are uncovered. The documentation itself is distributed to the separate domains of knowledge from different ages.

When you encounter something you want to get accomplished, but you are unable to find direct example how to do it you can resort to the two following methods

  • Ask help. Try #plone IRC channel and product-developers email list. The help might not arrive instantly. You’ll increase chances to get a fellow giving you a helping hand if you can have very detailed descriptions of your problem. People are also voluntarily helping you; it is not use to push them for more they can give for you.
  • Search through codebase. Search references and clues from all Python, ZCML, XML, Javascript and page template files found in the codebase by task keywords. After you find hits, read through the code until you have figured out how all different subsystems interface.

Be patient. Be aware that you are dealing with complex systems and you need to reserve time to manage technology risk. The worst unknowns are unknowns you don’t know are unknowns. But remember: There are never things you cannot do or things you cannot know. There is no blackbox - the codebase is all open. With enough patience, you can study it and find solution to all problems. If the stock code does not do it, you can easily monkey-patch the existing modules to bend them your way or in the most extreme situations you can fork the whole project.

Previous topic

Introduction

Next topic

Documentation process

This Page