Prior to Plone 3, setting up Plone was fairly straightforward: you installed Plone and dropped all of your Plone add-on products into a Products
directory. Making modifications meant that you simply edited a template and your changes showed instantly. While that sounds simple (and for themers, it was), it was not flexible or repeatable, and resulted in the development of monolithic products that were difficult to distribute or reuse and could only be used in the context of Plone.
Since Plone 3, the development environment has moved toward a more pluggable "egg-based" environment. Eggs are a way to package and distribute Python packages, with certain metadata intact. The Python library that powers the egg mechanism, setuptools, is able to automatically locate and download dependencies for eggs that you install. This technology means that it is easier to create shared, repeatable, and easily-configurable development or staging environments. The Plone community has also standardized...