This is almost late, but it has also almost destroyed my computer.
So my weekly goals right now are:
Nov 21 – Nov 27
- Finish backend for file attachment function
- Come up with a UI
- Goal: get something working that will attach a file to a review and display it
Nov 28 – Dec 4
- implement any UI changes following input from the previous week
- Goal: feature should be complete– one should be able to comment on, edit, and download the file
Dec 5 – Dec 11
- take care of any issues that have come up with the installer
- take care of issues that have come up with the file attachment project, as presented last week
- Create the screencast
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.
- Integrating RB with GoogleCode issues tracker. Now it is 80% done.
- I will try to finish the GoogleCode integration next week and
start the integration of other bug trackers.
- Posted another large update to our review request (#1847.)
- Work on the feedback provided on the review request.
- Start to create command scripts that will integrate use of the
- part of the api that Brendan has been working on.
- Tested the installer works with mysql/postgresql, git/cvs and apache.
- Partially finished perforce support
- Partially finished pysvn support
- Went over in detail the installation instructions for Reviewboard&Win32 and wrote down some possible improvements/changes.
- Started work on the file attachment backend.
- Perforce support and test, then installer is done
- finish file attachment backend, start ui design
- Had issues due to lack of understanding of git, and the code structure. I’m past these issues now.
- Make a new extension from the webhooks code.
- I’m not sure where exactly the “webhooks” code is, and whether it’s all in one spot or sort of spread out in the code.
- Almost finished cleaning up repository code so that it matches suggestions made by Christian and Mike, and so that it runs correctly
- Make sure my code reflects Lindsey’s changes and vice versa
- Still designing the user page.
- Implement user page.
Christian, David and Kevin were unable to attend.
This was a very short meeting; no one had any questions or concerns about their work and no one seemed to be blocked on anything.
Happy Halloween everyone! 🙂
For those who (like me) know nothing about how installers for Windows are built, Reviewboard uses something called NSIS which is the Nullsoft (yeah, the Winamp guys) installer. This installer uses an .nsi file (which is basically a script, something between Bash and Python and specialized for the install/uninstall process), which can then be compiled into an .exe file. The NSIS installer writes the install and uninstall in the same script, which is kind of cool, and it’s got a plugin architecture. It’s robust and easy to write for.
Right now the list of stuff our installer is supposed to be doing is:
- install Python if it’s not already installed. –> done
- install setuptools (if they’re not already installed). –> In testing
- install python libraries such as pyz… should be easy_install compatible.
- install PIL, Patch and PyCripto which have installers, possibly checking for whether they’re installed already (Patch especially)
- OPTIONALLY install a database: MySQL, Postgres, Apache, etc. and the database bindings.
- OPTIONALLY install a source control system (not sure yet whether this is a good idea in general).
- The uninstaller, with an option to remove any reasonable subset of the above.
Once setuptools is installed, installing Reviewboard and many of the dependencies should be easy. Some of the non-silent installers (Patch, MySQL, etc) might prove problematic, but that’s in the future for now.
Testing VM Update:
Alongside the development I’ve been setting up a test VM (for Windows XP) where I’m gonna attempt to install our product. I actually did a test-drive of the Microsoft Virtual PC VM player, which is NOT as convenient as VMware even at setting up XP. For one thing VMware handles setting up the networking automatically, while Virtual PC does not.