Tuesday 20 November 2012

Proposal for a ColdFusion "express installer"

Yesterday I commented on a coupla blog articles about "how to fix ColdFusion", or more to the point, how to apply CPR to it, get it back up and running, and winning races.

Look, I'm not saying ColdFusion is dead. However I have an opinion that it's at a certain phase of its lifecycle which it's beyond its peak, and settling down to diminsh in importance from now on. I'd like to think it's an informed opinion which I can back up with experiences from reality, and if you'd like to discuss it with me, that's cool. However if all you're inclined to do is get all defensive about this and start moaning, I don't care and I'm not interested.

I say this because there was a bit of a flutter on Twitter y/day with people getting arsey about the notion that someone had suggested CF was dead (when they actually hadn't), and we can do without that sort of defensive attitude. It's unhelpful.

End of digression.

I've gone ahead and raised 3370889 to cover this. Please vote for it / comment against it if you think it's something Adobe should pursue. Cheers.

One of the topics mentioned was how unwieldy the ColdFusion install process is, especially from the perspective of a non-CF person getting it up and running just to have a look-see.  If I want to evaluate a programming language, I don't want the first barrier to entry to be getting the thing installed. The Learn CF in a Week team document all 25 steps involved in getting ColdFusion into a state where one can use it.  25 steps (granted, some steps are like "browse to the Adobe site", but still).

I think that can probably be pared back to a couple of steps. Here are my thoughts on it:

  1. Before one can do anything, one needs to sign-up for an Adobe account. Not necessary. All they use if for is to send an email reminding me my trial will soon be over. This is a waste of time.  The Railo approach is to invite people to register, but it's not enforced: much better.
  2. Download. Yes, this is required ;-)
  3. Run an installer. I don't know that this ought to be required. Can the thing not be shipped in a ready-to-run sort of way?  Railo and OpenBD achieve this with their express installs. Surely ColdFusion can have a package like this too?
  4. OK, so we're installing. The first step is to decide whether it's a licensed version, trial or developer. Not necessary.  Assume developer.  The licence key can be added to CFAdmin later if necessary, which for a lot of installs will never be the case. And it's not needed to get up and running.
  5. On the next screen we select whether we want a server install (so something that is actually operational and usable), or an archive. Assume a full install. There can be a mechanism in CFAdmin for creating an archive (if it's not already achievable in the Instance Manager? I don't have CF10 in front of me to check).
  6. Then we select some subcomponents. I'm of two minds as to whether the default should install all of them or none of them. But either way the installer doesn't need to ask: just make a decision and do it. I think "none" is a good option as it creates less clutter, and none of these things are really needed. Again, provided there's a mechanism to install them later (which there should be anyway!) there's no problem with not installing them immediately.
  7. Secure profile?  Pah. Not necessary or helpful at the best of times, so this can default to "no". Or "no no no no NO" (which is what I think whenever I see it).
  8. Next... passwords. The passwords are unnecessary on a dev install (and most prod installs), so this step can be omitted. If it's deemed necessary to have a CFAdmin, RDS etc passwords, then just default it to something known. If one's concerned about security here, then simply restrict access to the password-protected components to only be accessible from localhost by default, and yer done. This is more secure than a password anyhow.
  9. There's no need to specify an install directory. It can simply be the directory the installer is run from, or just default to C:\ColdFusion10\ or the equivalent on *nix.
  10. The built-in web server is fine to start with. Other web servers can be connected to as is necessary later on. Having a UI to do this in CFAdmin rather than hunting around for WSConfig would be nice, too. Is there any reason why this cannot be done?
  11. Enable RDS by default. With no password.  Or don't enable it. I dunno... I never use it, do most people? Either way, make a decision and just do it.
  12. Enable automatic updates by default. Who would not want to do this? If the install is behind a firewall, then the update-checker simply won't work, and that's fine, and no different from giving the optionality.
  13. Once installation is under way, the installer seems to try to phone home. Or it does something that irritates my firewall anyhow. Whatever this is doing it's not necessary (I don't allow it, and my system has never been any worse for wear), so it should not be done.
  14. After the file install, one needs to "complete installation in CFAdmin" (or something like that). I've never understood this... why is this necessary? Surely it can all be done as part of the installation script? It should not be necessary anyhow.
 As far as I can tell there is not one step in the installation process that ought to be necessary, and actually requires input from the person installing. All the various options can be sensibly inferred, and common-sense defaults used.  Provided one can then add / remove / change any of those default settings in CFAdmin after the fact.  So if the installation process needs to be more complicated that just a file copy, it can just be something that starts, runs by itself, and then finishes, declaring "OK, you're up and running...".

As for why the installation process needs to be more than just a file copy, I'm not sure (and, seriously, I'm just not sure). What does it need to do that isn't covered by a file copy? Does it need to write to the registry? I guess it needs to install some services, but perhaps in an "express" environment it doesn't need to? Railo manages with a batch file to start up, I'm sure ColdFusion could too? What else does it need to do during installation that actually requires some sort of processing to run? That's not a rhetorical question, I'm genuinely asking what it could be (and given that, if it can be done differently so as to not need to be done).

If it does actually require some sort of installation process, then the first step should be "Express or Interactive", with the "interactive" option being as per now, and the "express" option being the "no further questions necessary" approach, as per above.

What do you think?  And do you know what the installer might get up to which requires an installer to be used, instead of just a file copy?