A couple of days ago I removed the source code statistics for Plone from ohloh.net. The way ohloh calculates statistics from Subversion repositories is long broken for any project that copied or moved any of its code base in Subversion. Plone has done so many times in its lifetime and as a result ohloh was showing wildly incorrect statistics.
But fear not - ohloh's lines of code counting tool called ohcount is available for download and local install. Executed on a checkout of our codebase it provides quite accurate results.
A distinction between the Zope, CMF and Plone parts of our stack isn't practical anymore for Plone trunk. In a completely egg-based world, we have cases like plone.portlets depending on zope.app.content, while it is not included in the Zope2 egg anymore. Where should one place Products.ZopeVersionControl, which is pulled in for Products.CMFEditions but written by the Zope community? The number that is comparable over all releases is the total, so here it is:
The main source of the recent decline is the removal of lots of zope.app packages from the Zope2 installation, which were never used nor usable inside Zope2. zope.app.rotterdam, the example theme for the zope.app ZMI replacement is the most famous example of those. But we are also busy at reducing the amount of old code we have been carrying around in our own packages.
I expect to see the total amount of lines of code to decrease further, while we are developing Plone trunk. Yes, that is: We will be able to deliver more features with less lines of code, without cheating on quality, tests or documentation.