Project goals
Open
This project is developed using Git. It used to be developed using CVS on drupal.org. It may return to drupal.org when the switch to Git is complete.
People are free to download the source code for the project (and in fact are required to to run it). Git access is available here.
After many discussions with many different developers working in this space, it has become apparent to the developers that many people have developed their own custom set of utilities and scripts to manage many of the issues this project encompasses.
This project aims to be an open framework that will allow us to collaborate on a single set of community developed / maintained utilities, so that the quality and the capabilities will improve for all of us.
Easy
This functions on both a developer and a user level.
For the user, the intent is to make the system as simple to install and operate as possible, which means drastically lowering the requirements for installing and getting up and running with the system. To that end the system has an installation script to automate the installation of Aegir, which has developed a long way from a multi-step install.php wizard and even more complex requirements before then.
The system will auto-detect as many of the settings it requires to run as is possible from within the confines of PHP, and will provide detailed and accurate inline documentation on the server configuration required, based on the configured settings.
This system aims to be self documenting, to aid in troubleshooting, in the event that an error occurs. This documentation is both translatable and extendable when new services are enabled.
For developers we aim to keep the implementation simple, clear and concise, and use as few as possible additional requirements outside of Drupal itself. We aim to provide extensive developer documentation, to lower the barrier for people wanting to integrate with the system.
The system will never require any additional core patches for the sake of base functionality. It is a 'contrib' project.
Basically, the aim is to do everything possible to ensure that the user and developer experience is a positive one.
Useful
The system aims to help maintain many sites, not just when they are initially installed, but over the entire lifetime of the site.
It is designed to install new sites, provisioning all the required services (such as Apache, Mysql and DNS), with the flexibility to provision additional services (such as Mail, LDAP etc.) through optional contributed modules or features.
It provides the ability to revert back to previous versions of your sites, as well as re-deploy existing sites under different domain names (mysite.com copied to dev.mysite.com). These backups will be usable on any system with the provisioning backend installed (such as a developer's machine, or a staging server).
This aspect of the system will also be used to manage upgrades between multiple versions of Drupal, and will allow you to schedule upgrades. It will do its utmost to ensure that your site has been successfully upgraded, and features dependency tracking to keep track of which sites are eligible to be upgraded.
It will provide a mechanism that ensures the cron process is run on all your sites within the specified time frame, and additionally will allow for scheduled backups of all your sites.
Through optional modules it will be able to extract usage statistics from your hosted sites and provide an overview of site usage through the administration interface, it will also be able to keep track of server health and load for each of the configured servers.
These are the stated feature goals, many of these features will not be available in the initial releases, as they are not considered a base requirement.
Secure
The system will make sure that it has the least amount of power available to it to accomplish it's task, and will ensure that all file permissions are set to the strictest possible levels they need to be, and that no sensitive information is web accessible.
None of the functionality or code required to accomplish it's tasks will ever be available in the provisioned sites, and the hosting front end itself will make extensive usage of Drupal's access control requirements to ensure that users will not have access to things they are not meant to see.
to be extended
Distributed
The system functions entirely on the command line, using unix pipes for inter-process communication.
As such, once ssh has been configured for the user the back end script is running as, it will be able to freely communicate with the external server through the only mechanism it knows how (the command line).
As an extension of the backup/restore functionality, you will be able to seamlessly move sites between servers, while providing a redirect to an always accessible site alias for users who have cached dns entries.
You will also be able to change database servers through simply modifying the site record on the user frontend.
to be extended
Diagnostics
The system will provide accurate and complete logs of everything that has occurred on the system, as well as feature complete error reporting and notification of all issues that have occurred. It will first verify that it is able to complete the requested task, and then it will verify that the task has been completed successfully, before completing the task.
When an error occurs, it will rollback to its last working state before exiting, so that failures will not negatively affect sites.
All node types in the front end are revision controlled, to allow for complete history of all objects.
to be extended
Flexible
This system aims to be as flexible as Drupal itself is.
It will provide a complete and useful set of hooks to module developers, for both the front end and the back end, to accomplish whatever tasks they need.
The administration interface will provide complete views support for all data in the site, to allow for custom reporting on your network.
The core node types are all standard Drupal nodes, that can be extended through CCK by the implementor. This could be used for tracking additional client information or additional information on sites.
You will be able to integrate Drupal contributed modules such as Organic Groups or Ecommerce/Ubercart to build support or billing functionality directly into the hosting front end.
The system is completely white boxed, so that it will work with almost any Drupal theme, and as such can have your own corporate identity.
to be extended