Thursday, November 20

Plone LOC statistics

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.

News from Plone trunk

Some people following the developer mailing lists or blogosphere have noticed that Plone trunk has seen quite some interesting changes as of late.

Since I'm the current intermediate release manager for the upcoming Plone 4.0 release, I thought I might share some of those exciting news with you. The framework team for Plone 4.0 is currently being selected and will suggest a final release manager to the Plone Foundation board. I'm available as a candidate, but the decision is yet to be made.

Over the summer we have seen an amazing effort from some of our Google Summer of Code students and their mentor Sidnei who brought us Python 2.5 and 2.6 support for Zope trunk. This has been followed up by Sidnei and Matthew Wilkes and we can run Plone trunk with all Python versions from 2.4 up to 2.6 now.

In other news, we run Plone trunk based on the eggified Zope2 trunk as of last week. Thanks to David Glick for helping with some tough Acquisition related changes. This means we have moved our entire stack towards eggs. As a side effect of that move the amount of code we need to pull in from Zope2 has gotten a lot less. Instead of 105 zope and zope.app packages we only pull in 65 of them anymore. I'll post some current lines of code graphs soon.

The most amazing news has been unveiled by Malthe yesterday. I have been lucky enough to be in Copenhagen and cheer Malthe while he got Plone trunk running entirely based on Chameleon. While he posted some impressive numbers for the Chameleon versus ZPT comparison for Plone trunk, I thought I put this into perspective and compare it with Plone 3.2.



We have a 50% to more than 100% speed increase. And yes we get 16 requests per second out of a completely uncached front-page.

I included the number for the HTML filter control panel as an example of a somewhat complex formlib-based form. This gives you a hint, at what we can expect from a framework like dexterity when it comes to edit screens.

This is just the beginning of what we can do and I expect more performance improvements to come. We have seen a lot of improvements made to the content creation, catalog and search performance during the last year which still need to make it into Plone trunk.

With the next performance sprint in Bristol coming up in December, the future of Plone looks bright to me. And all of this just happens while we redefine the content editor and administration UI for Plone at the same time.

The future of Plone happens now,
Hanno