So the installer is close to finished (now remains some thorough testing) as it was described, and I’m starting to think about the future. Here are some things that I think we should consider about the installer and the installation process:
Installing A Complete Reviewboard Stack: Database/Apache installations
Right now we are installing only the bindings for databases and source control systems. We are not actually installing Apache or MySQL. This is something that we should try to get done, but on the other hand there are already mature projects that will install these, for example, Bitnami will install an Apache-MySQL/PostgrSQL-Python-Django stack without a hassle. Using their Apache-MySQL-PHP stack and the current installer, a Reviewboard installation can be up and running in about 10 minutes, given that the user has their source control component installed already and is able to install and configure mod_python on their own (which is very easy to do by hand but a problem to do programmatically because of how different Apache installations can be).
There is some non-obvious configuration to be done though. We could have a “very basic installation” instruction set that would say exactly how to configure the Apache from this stack to work with Reviewboard, which should make minimum-knowledge-required installation a breeze.
Patch Setup And Troubleshooting
Another problem with our current install is that (as I found out) it is not always enough for Patch to be on the system PATH, it must be visible to Apache specifically, which means it often needs to be copied into the Apache bin directory. Like mod_python, this is very easy to do, but it is not documented except on the Reviewboard support list and can be startling and confusing to the user because the error specifically says that Patch is not on the system path when it clearly is.
Adding this information to the install instructions might be helpful.
Mod_Python and Mod_wsgi
Another potential hassle is that mod_python is currently available only for Python 2.5 and is no longer under active support or development– to make it work with Python 2.6 and up on Windows it must be recompiled and I’ve had trouble finding complete instructions on how to do so. I think the installation instructions should be updated to talk more about mod_wsgi which is currently not mentioned, or to mention that Python 2.5 is the last officially supported version for mod_python. If Python is not already installed, the current installer will install Python 2.5 because the setup with it is much easier.
Also, mod_python is mentioned only briefly in the installation instructions. Installing it is not difficult, but a person who is not familiar with Apache might assume that it came preinstalled which is not strictly true anymore. Adding a small section about installation instructions might be helpful.
Allowing the user more control over the Installation
We currently search for Python 2.5 or 2.6 and install either on an existing python installation, or install a new Python (2.5). I’m not sure I’d be able to finish an update to this setup before the UCOSP deadline along with the other work that needs to be done, but I think in the future we should allow the user choice over what version of Python we are installing, and what version of Python we are installing on top of, as it’s possible to have both versions simultaneously.
A similar situation exists with SVN– the PySVN python module works with “close enough” SVN versions. We currently install 1.6.1 and expect the user to have something in the 1.6 range. There’s no simple way to change which version is installed.
I think I would like to stay on Reviewboard after UCOSP and if I do then this would be what I would do first.
Testing The Installer on Other Versions of Windows
This is a problem for me because I don’t have a license for any other versions of windows but XP and I’m not able to set up a VM to test on. I think that the installer should work on Vista/Windows 7 and probably on NT. The only problems might be with the times when we access the registry, usually to find Python installation or to add to the system PATH.
Inaccurate Windows Installation Instructions
On the Windows Installation Instruction page the instructions for installing MySQL/PostgreSQL bindings are not entirely accurate: on Windows it is usually not enough to use easy_install because of the need to compile a C python extension. There are .exe installer available for both packages that needs to be used.
Installing Without Internet Connection
Right now the installer downloads everything it requires at installation time, to make the size of the total installer download smaller. In many cases, downloading a large installer package with includes Python and some of the other large dependencies which people don’t necessarily need can be annoying. On the other hand this may interfere with people’s ability to install without an internet connection. I think to be fair both options might be made available.
Configuring RB-site During Installation
We could give the user the ability to enter their configuration information during the installation process and run RB-site right after installation finishs. In the case where they have their database and server already installed, this would make the setup of Reviewboard be as easy as setting up the server config file.
Whether this is really desirable or not I’m not 100% sure on.
So despite looking for it for a long time I haven’t been able to find a way to make distutils (the windows method for distributing python modules, especially those which require compilation) silent, as well as the p4python installer. The best way to do this is probably to create our own installers based on the setup scripts and package those with our installer, however I don’t think I can finish this within the given timeframe.
I think installation on Windows right now is in a pretty good place. With some minor changes to documentation and maybe a little extra work on the installer (which I hope, but am not confident, that I can do before the deadline) we should be in an excellent position.