Hiya!
I'm manager of a startup business providing hosted CMS solutions (developed with Pylons framework : pylonshq.com) in Australia. I've chosen Webmin/VirtualMin as the CP of choice - to manage the Admin side deployments of client accounts, and all the other nifty stuff it shangles (just made that word up - good huh!?).
Now, what I want to do I HOPE will be served by VirtualMin Pro (VP), but want you to tell me if im better off going with VirtualMin GPL (VG), as I want to customise quite a bit.
I read on these forums that as an Early Adopter/VP customer i'd have access to source that we can modify, if we wish. With this in mind, the key questions are:
Is there a pathway/option for customising* VP to manage deployments of my CMS?
Can I totally customise the interface, without messing up config/Breaking future VP updates/support? (multiple sub-accounts, all different bits shown/hidden).
I also read that VP will provide hooks to scripts that could be written in Python or other scripting languages, could the above be achieved with Separate Scripts and Skins alone? There may be likelihood of us needing to customise the raw VP code, how much could we wrangle without leaving ourselves in the solitary wilderness of forked code!?
A bit vague I know, but your suggestions are really the call here - the 'developers' section seemed appropriate.
Thanks for your great work btw!
Hey Morgan,
Virtualmin Professional and Virtualmin GPL will be roughly identical from a customization standpoint. Professional has quite a few additional features that may be useful, but when you hit the code they are nearly identical.
Our source is always available to customers for either product--it'll always be legal to run a custom version of either. Obviously, only one of them can be distributed freely.
In either case, you'll want to do as much customization as possible via themes, modules, and Install Scripts (all of which are separate from the core code and can be upgraded/modified separately).
To answer your specific questions:
<i>- Is there a pathway/option for customising* VP to manage deployments of my CMS?</i>
Yes. You'd want to write a Virtualmin plug-in. There are hooks for sticking things into the left menu on Virtualmin Professional (and they'll show up in the regular Webmin interface and such in GPL). The plug-in can do anything you can code, and with a wee bit of work you can integrate it very smoothly into the Virtualmin GUI.
It's easiest in Perl, but there is a minimal (and somewhat dated) version of the Webmin API in Python, if you feel significantly more productive in that language. It'll work for reading/writing config files, and a few other bits. You'll need to port the Virtualmin specific hooks, yourself, so it is definitely more work to write modules in a different language. But we'll be very very enthusiastic about helping you, if you set out to work on the Python API. (And we both speak quite a bit of Python from other projects we've worked on, so we can probably be of some assistance.)
<i>- Can I totally customise the interface, without messing up config/Breaking future VP updates/support? (multiple sub-accounts, all different bits shown/hidden).</i>
This one is a bit harder to answer with total confidence. There are many many aspects of the GUI that can be customized via themes and configuration options. But not many of them can be customized per-user/per-account. I'm not really sure exactly what you're after...you'd probably be best served by trying to do what you want, and then when things get hard, ask us some specific questions.
It'll help us visualize your problem, and probably point you to specific solutions. There's a whole lot more possible with Virtualmin than most users ever see or imagine. But, luckily, the defaults are sensible enough for most deployments that they don't have to see them. (We're about to overhaul them a bit to make better use of progressive disclosure of advanced features, since Virtualmin can be very intimidating to new users. Too many possibilities.)
<i>I also read that VP will provide hooks to scripts that could be written in Python or other scripting languages, could the above be achieved with *Separate* Scripts and Skins alone?
There *may* be likelihood of us needing to customise the raw VP code, how much could we wrangle without leaving ourselves in the solitary wilderness of forked code!?</i>
We hope you can do everything with plugins, Install Scripts, themes and if you need a wholly custom GUI there are the command line and remote APIs (I think these are only in Professional right now, though that will probably change). Have a look here for an idea of what they're about:
http://www.virtualmin.com/support/documentation/virtualmin-commands/
The neat bit is that if you need something to be possible via plugins that isn't, let us know. We'll try to make it possible. You can already add elements to the left menu via plug-ins, so you can look like just another menu item.
<i>A bit vague I know, but your suggestions are really the call here - the 'developers' section seemed appropriate.</i>
We're probably gonna be more friendly to what you're doing than anyone else I know of. I'd recommend giving it a try, either GPL or Professional. You can get a refund if you find you don't like Professional, so neither will cost you anything other than a little time, if it proves a poor fit.
Give us a holler when things don't go the way you'd like. We're constantly refining the perl and abstracted command/remote APIs, and adding new functions. We're also doing some new work on the next version of the theme which will make UI elements (like menus and pages) more readily tweaked by other code. It's a pretty major overhaul of the theme concept which will include the addition of "boxes" for administrators, other developers, and plug-ins to insert stuff right into the normal flow of any GUI element.
In other words, we're working on this aspect of things more than anyone else in the field, and if you are writing code that uses Virtualmin we'll try to accommodate your needs (assuming they're sane, and in keeping with the direction we're going with Virtualmin, of course).
--
Check out the forum guidelines!