New release system for Drupal contributions now deployed!
After months of design, implementation, and testing, the initial version of the new system for releasing Drupal contributions is finally installed and running on drupal.org. This change impacts everyone who uses or maintains contributions (modules, themes, etc) from drupal.org. Contributions have a new version number scheme, and at long last, official releases.
The most visible change for end-users of Drupal contributions is that the version numbers have now changed. Please read the Version numbers handbook page for the details.
Additionally, you will now be able to download official releases of the contributions your site depends on. These will have a fixed, unchanging set of code, so you will always be able to easily identify exactly what code your site is running. If a new release is available, instead of having to compare dates on release packages, you can just look at the version number to tell.
Finally, if your site is running an older version of core (which is quite common given how fast Drupal core releases come), but you would still like to use new features from some of the modules you are running, it is now possible for module maintainers to provide both stable and development releases of their modules for any versions of Drupal core they wish to support. See the project pages for the modules you are using for details, or submit issues to their issue queue requesting that they provide a development release if one is not available and you are willing to sponsor their efforts to provide one.
Along with the new release system, there have been a lot of updates and changes to the Drupal CVS repository this year. Because of these changes, all CVS account holders and project maintainers should review the updated CVS and Project documentation even if they think they are already familiar with CVS. The handbook outlines the policies and procedures to use going forward for maintaining your projects, managing your releases and proper branching and tagging of your contribution on Drupal.org. More people using the same processes means there will be more people to help others and this will standardize our release process for the future.
Be sure to review the new version number documentation so you will know how to properly take advantage of the release system for your modules and themes.
If you are unfamiliar with CVS branches and tags, please read the updated CVS introduction to these concepts. There is also a new Maintainer quick-start guide to help people new to CVS get up to speed on the basics of using Drupal's contributions repository.
Note: During this conversion, release nodes were automatically generated for all of your existing stable branches (e.g. DRUPAL-4-7
, DRUPAL-4-6
, etc) that were being packaged (e.g. the old 4.7.0
version of your module or theme). So, you will not need to add release nodes for these branches, and when trying to add new release nodes, these branches will not show up in the list of available CVS identifiers, since they're already in use by an existing release.
Primary financial sponsor: Mailfriends
The major financial supporter of this effort has been Mailfriends The original Penpal community. Without their very generous contribution and sponsorship, the work would still be incomplete.
Other financial support
Additional major donors include:
I also want to thank everyone from the Drupal community who made small donations (too numerous to list individually, but taken together, they contributed over $1000).
There's still lots of future work relating to this (read below), and even with all of these generous donors, more support is needed. Please consider donating to this effort, so that I can continue to build on the foundation we've just established:
Technical help
Apologies to anyone I'm forgetting, but these are main people who helped me make the system happen:
- Kjartan was instrumental in reviewing the huge patches to the project.module and cvs.module that made this system possible, in deploying beta versions of the system on scratch.drupal.org, and in the final update to put the system into effect on drupal.org
- killes also reviewed my work, provided design input, helped optimizing the conversion process, and helped answer many mysteries I encountered.
- chx (as always) solved all of the problems I faced when trying to get some very tricky forms working in the Forms API. He also reviewed the patches looking for potential security problems, and throughout the life-span of this effort has been incredibly helpful and supportive.
- Heine provided essential security audits, reviews, and input.
- merlinofchaos did the initial conversion of turning releases into real nodes and provided invaluable input and support during the initial planning and design stages.
- webchick asked all the right tough questions to help make the system usable and understandable, and helped me with a major effort to update all the documentation listed above.
- Eaton also helped shed light on the inner workings of the Form API and helped me solve some of the tricky problems.
And of course, thanks to Dries for letting me fix this stuff. ;)
Albert Einstein wisely said, “Make everything as simple as possible, but not simpler.” Unfortunately, Drupal development happens in a very complicated context, with rapidly changing versions of the core API, the interaction of different modules, the need for stable and development versions of many modules, and so on. Balancing the needs of a simple, usable system with something powerful enough to solve the problems we currently face has been a constant challenge.
If you're interested in finding out how the new releases system got to this point, here's a collection of the major threads of discussion and design that led to its current implementation:
- #58066: New method for contributed project releases and versions (original project.module issue where this was first debated)
- #77562: New system for releasing Drupal contributions (front-page forum post about the new system, explaining it to end users, and asking for donations to fund all the work)
- #75053: make releases into real nodes? (project.module issue to debate the idea)
- #83339: make releases real nodes (project.module issue to implement it)
- #84706: port cvs.module to releases-as-nodes
- #86863: complications for new release system -- i need input (forum post for discussing some complications)
- #86694: New system for releasing Drupal contributions (the presentation I gave at DruaplCon '06 in Brussels about this)
- #90436: New release system now installed on scratch.drupal.org (the post is mostly duplicate with this, but the comments might be useful)
- #92452: New release system: debate on branches and versions (forum post discussing some more complications)
There is now a New Release System group at groups.drupal.org which will become a central place to keep track of work on the system. Please feel free to subscribe if you're interested in progress updates, and especially if you're interested in helping with testing, documentation, and such. ;)
At that group, you can find a complete list of future work which outlines all of the feature requests and tasks that myself and the beta testers have submitted. None of these items were important enough to delay the deployment of the system, but they should all get done eventually.
First, please search the list of future work before you submit new issues, since chances are good myself or someone else has already thought of whatever you want to tell us. ;) However, if your feature or bug isn't listed there, here's where you should report things:
- If it's specific to the CVS integration (the form for adding a release, etc), open a new issue here: http://drupal.org/node/add/project_issue/cvslog (please be sure to set the Component field to "Project releases").
- If it's specific to browsing projects, finding releases, etc, open a new issue here: http://drupal.org/node/add/project_issue/project (please be sure to set the Component field to "Releases").
- If it's regarding how version numbers work within the issue queue: http://drupal.org/node/add/project_issue/project_issue
In all cases, file your issues against the "4.7.x-2.0" version of these modules.
Thanks!
-Derek