I found this module very, very useful to begin to port 4.6 code to the new form api: http://drupal.org/node/37457 It is a form updater module that would really help newcomers to the new form api as myself. Give it a try and you won't regret. Robert Garrigos Karoly Negyesi wrote:
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.