Progress update: Package management and dependency checking

adrian's picture

Progress towards our main development goals.

Drush stuff

Last week I completed what is basically a major rewrite of Drush, save the actual command files. Everything is a lot more sensible and normalized now. This also led to me massively refactoring Provision (our drush based back end) to make use of these new API's. I wrote up a small post about what's been happening with Drush for those that want more in depth information.

The major thing that is coming out of Drush becoming more like Provision every day, is that the drush_extras project is being re-integrated into Drush itself, using the provision conditional include API for the Drupal version specific code. Once that is done, we will be migrating Drupal install and update commands upstream to provision, which provide a much larger user base for the code, getting it far more testing. It will also significantly reduce the size of provision, and make it easier to maintain and will hopefully become the standard way that 'real' Drupal developers run update.php on their sites.

Because we are so deeply involved in Drush now, we are also tied to their release cycle. We are at a point where we want to release an alpha, but moshe has decided to re-integrate Drush_extras first, which should take about as long as it would to have gotten each version of drush_extras ready for an alpha too.

Enabled packages on a site

Aegir stuff

I haven't been resting on my laurels though, I've been tackling many of our critical issues (take a look at how good our issue queue is looking). I have been continuing in my crusade to make the Aegir project easier to build and maintain.

In the last week I finally nailed down the biggest issue that was holding us off on an alpha, namely the package management features. With drush 1.x we could rely on each platform being a site, to have access to the database, unfortunately with 0.2 that isn't possible anymore, so I wrote some routines that index entire Drupal platforms and find all the modules, themes etc for the whole platform, all the profiles and each of the sites, which I then import on the front end to build relationships between the package entities and the sites etc.

This now allows us to do some dependency checking, which we sorely needed. Previously it would let you attempt to migrate any site to any platform, no matter of the version.

This is much nicer. Imagine how great it will be once we have spaces, context and features properly playing along with all this stuff. You'll be able to roll out new features incredibly easily, and seeing that you can extract features with Drush, we can automate that too.

Package compatibility between platforms

As you can see, we're already very close to an alpha, so we're going to be working towards that along with the Drush guys. After the alpha there's going to be another phase of refactoring going on, as we'll have solved all our major issues for the release, and now it's time to make sure the codebase is up to scratch. We're also going to take some time and get some of the contrib modules playing nicely with 0.2, so that will take some time too.

I have also spent a few hours today on the community side of things, mostly fixing up the page. It looks way better now, and displays the release status proudly (keeps us honest, heh).

We'll be continuing forward in the next week or two on both the Aegir and Drush projects, and we'll probably have more announcements soon.

aegir-site-packages.gif30.07 KB
aegir-migrate-list.gif42.17 KB
aegir-release-status.gif38.09 KB