November 17th, 2006

The Namespace is not the Product

In which the author tries to make the case for good product naming and conventions in Plone and its associated add-on products.

With the move to using Zope 3 components in Plone, add-on products have seen a move towards the naming standard of the Python and Zope too.

One of my pet peeves with Zope, CMF and Plone has always been the lack of consistent naming. Back in the day when I started using Java, I always liked that they had strict rules for how to name methods, classes etc. The situation in the Python/Zope/Plone world has always been confusing.

Traditionally, Python used the naming scheme set_title() for its methods. In Zope2 (Zope 2 is over 10 years old, so inconsistencies are expected) and CMF, you find a mix of set_title(), setTitle() and settitle().

With Zope 3, we finally have the opportunity to start fresh, have a common naming scheme, and make things prettier and more consistent. This has carried over to the Plone world, with all new features using the Zope 3 components — and we're all happy about that.

What I want to talk about is the tendency to name add-on products in all-lowercase style. Python modules are using lowercase namespaces, like plone.app.portlets. Carrying this over into product naming causes all sorts of bad — both typographical and semantic — artifacts. Consider the following sentences, taken from the product pages of a Plone add-on product (slightly adapted to highlight the issues):

membrane provides a set of plug-ins that let content objects provide the properties, groups, and roles information for user objects. remember builds on this, using membrane to fully reconstruct the default Plone member implementation, but in a much more flexible and powerful manner.

This is hard to read, and even makes it necessary to start sentences with lowercase words. It is further compounded by the fact that there is a tendency to give new modules simple single-word names like “remember”, “listen” and “membrane”. When a product has a name like this, it makes it very hard to read a sentence containing the product name, since it flows into the interpretation of the entire sentence.

It reminds me of the insistence of dot-com companies to include interesting typography as part their names. Anybody remember “excite!”? Didn't think so.

So, please: The namespace is not the product. Please use properly capitalized names for your product when referring to it in formal settings like product pages and similar. The exception is of course if you are talking about the namespace and/or the Python module.

Rant off.

Alexander Limi makes software easier to use. Founder of the open source project Plone, he currently lives in San Francisco, and previously worked at Jarn & Google. Right now, he’s busy making Firefox better at Mozilla.

“No amount of genius can overcome a preoccupation with detail.”
—Marion Levy

Follow me on Twitter or Get an email when this site is updated

Powered by Plone & hosted by Amaze