Installability

sandal edited this page Jan 3, 2012 · 7 revisions

The easier a software project is to install, the more likely it is that people will use it. In open source projects, ease of installation also affects how likely your project is to be contributed to, and so forms an important part of the software quality equation.

Ruby software has become significantly easier to set up over the last several years, particularly when it comes to libraries. A combination of RubyGems and Bundler have made dependency management gradually easier over time, even if it's still not quite as good as we wish it would be. However, there are far fewer Ruby applications in widespread circulation than their are libraries, and this may in part be because we lack best practices for packaging up applications and sharing them with one another.

Some progress has been made in this area as well: JRuby makes it easy to distribute Ruby application as Java jarfiles, which are a fairly common packaging format for executables that can be run standalone. There are some tools out there for distributing a fully packaged Ruby interpreter and application as a single executable, but none are so widespread as to become a defacto standard approach. When you add to this the fact that most Ruby applications are infact not desktop applications but Rails applications, the end result is that we end up going through a bunch of complicated processes whenever we want to get someone else's web application running on our system unless it has very simple dependencies.

A project I know of that has been making some modest but worthwhile effort in this area is Jordan Byron's mission_of_mercy application. Jordan ships this project with a rake setup task which guides you through an interactive process that configures the application for you. Except for a few stops along the way to edit a config file or enter some preferences when prompted, this task automates the setup process whenever it is possible to do so. This makes the process of getting things like an administrative user account and all the necessary seed data set up much easier.

While the setup task provided by mission_of_mercy is probably still more low-level than it needs to be and requires a bit more manual intervention than we'd like to see, it beats following a long and complicated install process in a README file. As time goes on, I'm sure that Jordan will continue to refine and improve this script, and I'd love to see this be a standard practice for all Rails developers in the near future.


Turn the page if you're taking the linear tour, or feel free to jump around via the sidebar.

You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.