Skip navigation

Revision of Crazy Aegir Ideas 1: Aegir as Site Builder using Drush Make Generator or Aegir Hostmaster module derived from DrushMake.me from Tue, 04/19/2011 - 18:01

Help

Crazy Aegir Ideas 1: Aegir as Site Builder using Drush Make Generator or Aegir Hostmaster module derived from DrushMake.me

Referenced Page: 
Developer Manual

ok, here we go, beginners luck, fools rush in where angels fear to dread, and all that

have been wondering a lot about Aegir centered site network design and building, site and site network design (see my coming discuss post on the Aegir Graph tba)

came across the DrushMake.me codebase and started using it to create some useful (educational?) make files and play with them http://drushmake.me/ https://github.com/rupl/drush_make_generator

i.e. this is a D6 Drush Make Generator Select All make file http://drushmake.me/file.php?token=752b2d27b49f (warning ckeditor and blueprint theme choke make, comment out)

then I thought, gee, imagine if this was a Aegir (Hostmaster) module ?

Use Case: Aegir as a Site Builder

Aegir client wants to create a Drupal distro prototype, and they dont know about Drush, GIT or much of everything (yours truley ;})

So, fortunately, they have a handy module within Aegir called Drush Make Generator (thanks to rupl at FourKitchens) which allows them to create a make make file, which they can then reference via Create Platform to create a new Platform, and hence a new site

and bingo, they have a new distro to work with, without ever seeing the command line

For many point and click sitebuilders, this is heaven, and is one of the selling points of Wordpress i.e easy to download extensions within the web ui

see my Feature Request for at Drush Make Generator https://github.com/rupl/drush_make_generator/issues/13

Aegir integration: a hostmaster module?

hey, this is great ! have you considered making this a module for Aegir's hostmaster profile ? version 1.0 of Aegir is released and there are some great possibilities http://community.aegirproject.org/developing http://community.aegirproject.org/node/33 Aegir is a great tool for managing distro's, but imagine the power of being able to actually create a distro from within Aegir? thats recursive bliss -N

the creator or DrushMake.me rupl has ideas of extending Drush Make Generator in directions that coule be useful to the Aegir Graph https://github.com/rupl/drush_make_generator/issues/

Feature: suggested makefiles

High-level list of common websites, like e-commerce, social features, gallery, portfolio. Picking an option should populate the generate form and allow for further tweaking

https://github.com/rupl/drush_make_generator/issues/5

ps: yes, I know this is a dangerous idea/module from a management perspective, all sorts of frankensteins are possible, its a bit like GMO, lots of dangerous freakazoids with unknown consequences

cheers

-N

#1

So, first off, makefiles generate platforms, not sites. All they do (and this is no small feat) is download a bunch of modules, themes, profiles, libraries, etc. and put them where you want them (under sites/all/modules/contrib, or profiles/openatrium/modules/features) Now, you can build sites based on profiles after that, but most well-built profiles come with their own makefiles to gather their dependencies. It's worth noting this current limitation of d.o's packaging system.

Second, I'm not sure what you get from such a makefile generator, as you still have to choose some subset from among the 1000's of modules out there to populate the form. You might instead just build your own platform with the modules you think worthwhile, then allow clients to build sites on that. Also worth noting is an inter-site security issue that remains to be resolved.

Finally, Drush, Git and makefiles are really tools worth appropriating. Makefiles themselves use a fairly simple declarative .info-style syntax; i.e., there are no complicated control- or data-structures as in PHP or JS development. There's already a drush generate-makefile command that will build a makefile for you from any existing site.

Without a revision control system, such as Git, development becomes a nightmare. If you make a change that breaks something, how do you roll it back? Either you have to recall any changes you made and reverse them by hand (difficult and error-prone), or you kept a backup copy of the file you changed and revert to that (in which case you're doing manually what Git does, without all the other benefits.)

Building distros is a complicated undertaking, especially if you intend to support it for any length of time. It's challenging, even with a fair mastery of the tools available to make it feasible: the Features stack (context, strongarm, ctools, etc.), makefiles, Profiler, Drush, Aegir, etc. That said, it's highly engaging and satisfying work, but proficiency in the tools of the craft are essential.

#2

thanks for the feedback, will check the issues you mention and i agree with your views

some other attempts are http://betterwebshop.com/make and some other modules http://drupal.org/project/drush_make_ui http://drupal.org/project/drush_make_builder

perhaps there should be higher abstraction than .make

btw, i was thinking the .make would be placed in the folder that Aegir can access when making a new platform, and then it would spawn a single site off that .make

as I said, its a crazy idea, not exactly sure what or how, but I think there is something in it

#3

ref comment #1

Current limitation of d.o's packaging system
I think anarcat has submitted a patch for this that is yet to be commited.
makefile generator
I can see what niccolo is getting at here, now the aegir .deb pkgs are available, with this sort of functionality I can see how an entirely gui based process to create a makefile, generate a platform and build a site might appeal to a wider audience
No need for all the modules/themes! I had a look at rupl's readme file for Drush Make Generator in which he states -"I loaded about 100 modules up, you may want more. I got all the data from this URL: http://drupal.org/project/usage" seems fair and logical i think.
I'm no expert but it sounds like ergonlogic is right on the money here and the "inter-site security issue that remains to be resolved" indicates to me that to
"build your own platform with the modules you think worthwhile, then allow clients to build sites on that"
is not really an option but how it should be done, where the use case is for Aegir to allow seperate clients to build sites, at least for now until the aforementioned vulnerability is fixed.
Drush, Git and makefiles
I assume we are talking about the host rather than the client here as I believe the "inter-site security issue that remains to be resolved" would be relevant if I'm not mistaken.
Totally agreed on the methods though, I am slowly working through the list, for me it's about sustainability but it is a lot to learn and really we're talking a whole new ball game here like, some next level bizz, I think perhaps these things can be a hurdle for new users who can come back to all this later, I think the advise
"In the case of web development, execute the good plan now and iterate, versus trying to perfect everything before release"
which I found in this post which mentions Eric S. Raymond and his article The Cathedral and the Bazaar, also these things seem to snowball, for instance there's no mention of "features" or "context" and that's just a start, I know that much.
drush generate-makefile command
I think getting this functionality into a drupal module is probably a good deal of the answer to this post I made recently, in which I talk about a way for drupal users who are posting to the issue queue to export a drushmake file for their site which can be attached to the issue and aid others in reproducing bugs, by providing an virtually identical environment for them to test in, I think obviously to get the same modules enabled etc we would also need an install profile generated too.

Summary

I think the idea is a good one but it does require the "inter-site security issue that remains to be resolved" if it's a feature intended to be available to clients and if it's just for the host to use then calls for getting someone to code a whole aegir module for this will probably be answered by ppl providing links to the likes of http://drushmake.me and such sites!

#4

thanks for the feedback.

Have a look at whats happening with OpenPublic and the Apps feature... Apps are Kit Compliant Features that are installable within OpenPublic http://drupal.org/project/kit http://www.agileapproach.com/blog-entry/apps-distributions-ready-get-sta...

now, within Aegir, imagine being able to select groups of modules via the Drush Make Generator tool to create a platform

see how Open Outreach is based on a suite of Debut Features ... http://drupal.org/project/debut

will work on this more during the next 8 weeks over the summer

Need help?

The revisions let you track differences between multiple versions of a post.

Discussion

The discussion area lets your team communicate by posting updates and discussing issues. It is a great place for sharing progress, discussing challenges, and exploring ideas.