This summer through the Google Summer Of Code, I got the chance to work with ReviewBoard, a web-based code review application. My project and task was to create a cross platform installer for ReviewBoard dependencies and the project can be found on ReviewBoard Cross Platform Installer . To complete this task, I had to use scripts to check the dependencies for each application. If the dependencies were not included, through another script “rb_install”, I had to retreive and provide the user with the guide to install the application. The other part of these scripts was to install the application automatically for the user. The scripts had to be implemented to work with all platforms using silent (No GUI) install methods.
The main script “rb_install” finds the system information and then runs the installer script required to install the dependencies (Mysql, memcached,…).
The problem in this section is to make all the installers for Windows platform silent(no GUI). I was not successfull in making all of them silent, but most of them worked with silent install methods.
The second part of the project was implementing the dependency script within the repository page in the admin panel. So when the user tries to add a new repository or a tool, if they are missing the dependencies they are given a warning message with the guide for how to install the dependency.
Then I included the script for the settings page, so if the user wanted to use pylucene and they were missing the dependencies, they would be informed with a warning and shown the guide to install pylucene.
The third task was to implement the dependency installer and guide in the ReviewBoard installer wizard, in which if any of the applications listed is not installed, the user is informed. Also, if they are not installed, at the bottom of the page the guides are previewed on how to install the application. Then I added the install buttons. By clicking the install button in front of any of the guides, the application is installed on the user’s machine. The user has to have admin privilages in order to have the ability to install the applications. (missing the guide and install buttons within the console mode)
The last feature I worked on was the upgrade script for ReviewBoard. The upgrade script automatically gets the latest versions available through the API and upgrades the ReviewBoard application on the user’s system to the latest stable version. The second part of the upgrade script is supposed to inform the user through webUI if there is a newer version available. I was not able to finish the webUI part, though the check function can inform the user if they are using the latest version or not.
Another feature that I did not have the ability to finish was to fix the patch.exe installation problem on Windows platforms. The problem was that sometimes the patch.exe wasn’t automatically installed and added to the apache mod_files(.fastcgi,mod_python,…).
At the end I was able to implement a working cross platform installer. It was a really good experience and I am really happy that I got the chance to work with great mentors, Christian, Mike, and David. Thanks for all the help and guidance. Also I am very happy I got the chance to work with Alexander and Vladikkof.
Thank you everyone for the great experience!