-
Notifications
You must be signed in to change notification settings - Fork 12
Description
User Experience
-
The user should not be expected to have any sysadmin knowledge.
-
The CLI will walk the user through every step of the way, explaining how things work when needed, being careful to not overwhelm the user with information.
-
Tasks should display a clean, clear summary of what is happening, but show no output by default, unless asked for with
--verbose
.
-
The voice of Provision should friendly and helpful, always anticipating the users needs and communicating things as clearly as possible.
Self Setup
-
Provision should be able to install everything by itself.
-
The tool will detect what is already running on the system and offer to integrate with it. (Started this in d4596f9). Provision now checks to see if it's configuration is active in apache.
-
The tool will know how to install additional services if they do not yet exist.
Redefine "Platform".
In Aegir, "Platforms" were treated as primary entities, separate from sites, but required to install a site.
One problem with this is that some of the most important information for a site, like it's root path, and what web server it should be running on were associated with the platform, not the site itself.
In Provision 4, I propose we make Platforms optional. Platforms are like site templates. They allow for automating the site creation by storing default information like path and code-base. Let's treat Platforms less like a primary entity and more like a way to create a site template.
We must redesign the system so that the ServerContext sets itself up, and all you have to do to get a site is add a site.
Here's how we can remove the requirement of creating the platform first:
- Move "publish_path", makefile, and git repo to
SiteContext
. - Move "platform_verify" tasks to "site_verify" tasks.
- Remove
ContextSubscriber
andContextProvider
, and just haveServerContext
andSiteContext
. - Move 'http' service to SiteContext.
- Change
PlatformContext
to not have a relationship to services at all. - Allow PlatformContext code to add a property to a site, indicating that the site is using
- Change the UI to show Servers, Sites, and platforms separately.
- Allow a new platform to be created from an existing site. Allow new sites to be created on existing platforms.
Developer Experience
- Users should be able to use
composer global require
(or cgr) to add additional Service plugins. - Service Classes should be as simple and clear as possible:
ExampleServiceClass::verify_site()
ExampleServiceClass::verify_platform()
ExampleServiceClass::verify_server()
- Should leverage all of the latest PHP techniques: Interfaces, Traits, Annotations
- Should leverage existing libraries like https://thephpleague.com/
- Should provide easy ways to run commands and write templates.
- Should be pluggable to allow provision to kick off to other config management like Ansible or Puppet.