[development] Why Drupal 4.7 is late? (long)

Karoly Negyesi karoly at negyesi.net
Sun Jan 15 08:18:02 UTC 2006


First of all, it is not late. It'll be out when it's done and noone said  
it otherwise.

However, it was announced quite some ago that "In preparation of the  
Drupal 4.7.0 release, development of Drupal core will be frozen on  
September 1st." http://drupal.org/node/28466

On September 1st, Dries announced http://drupal.org/node/30176 that  
September 15 is the new code freeze date mainly due to form API and  
upgrade system improvements. He hoped to have a release candidate on  
October 7. Form API thread http://drupal.org/node/29465 started on August  
23.

The Form API was committed to core in October 7. In a mere three months it  
saw 48 revisions. Bootstrap, for example saw 80 in two years. Even  
node.module needed four months to reach v1.48 but that was almost five  
years ago and much, much less code and users were affected.

Form API is a big change. Not just the way the forms are defined but the  
whole workflow is changed. You no longer have access to the POSTed  
information on form build time, you can interact with that later on via  
various callbacks. This immense change is percieved as hard but it is not.  
Aaron Welch (also known as crunchywelch) have converted nothing less than  
flexinode single handedly in three days time and this included several  
form API fixes -- this was back when form API itself was pretty bogus. His  
estimate (and mine) is that it can be done in a day now that form API is  
fixed up. Other modules have also been converted. Ecommerce is under way.  
Module developers, brace yourselves and try it. It's not hard if you first  
forget the old ways.

But alas the form API conversion of core were not made by form API  
experts. You know why? It's so simple. Think a bit on it. I think you  
guessed it: because there were none (with Adrian being the exception, of  
course). But how could there be? It's a whole new API. We struggled,  
learned it, added stuff to the API itself when there was a need. So, there  
are quite a lot of bugs in core resulting from this conversion and the  
quality is not even. Currently, there are only a handful people who can --  
or want? -- to hammer these bugs out. Everyone, it's impossible for a  
small handful of developers to fix them all. Often patch fixing efforts  
abandoned and I need to take over. I took the form API mantle but it's  
impossible to cope with the load! Currently, being a form API maintainer  
means that I need to understand _all_ core (there are approx. a thousand  
functions and some 32K LoC) on an astonishing level because various bugs  
that were introduced by form API fall somehow on me. If I'd be a  
millionarie with nothing else to do but fixing core bugs, it'd be a  
different situation but alas I need to earn money. Do you except the menu  
maintainer to fix all those menu permission issues just because menu  
system is used?

So, I ask for the help of seasoned developers. Form API is not voodoo  
magic. It is not written in Brainfuck. It's PHP code which you guys can  
understand pretty well. It's even documented even if the documentation is  
a bit spotty.

But there are good things also -- because fixing all this stuff took this  
long, the upgrade system could run its course and got commited on December  
6. It's also a very good thing, now modules can use the upgrade system.  
This sounds a bit deceiving but if you think that there is no difference  
on a database level between create and alter then you'll quickly realize  
that this is a pillar for install system. And we can also say that when  
you have added a feature to your site by installing a new module, it's a  
new version of that particular site, it's indeed an upgrade.

Thanks for bearing with me

Karoly Negyesi

Ps. If anyone wants to start bitching around "you should have released  
without form API", then first please show your comment with a September  
date asking for that on Drupal.org -- I met none in the roadmap posts or  
the form API thread.


More information about the development mailing list