I am a huge proponent of open source software but, before you start using a new open source package it is well worth your while to know how much time you are willing to commit. How far down the rabbit hole of coding and scripting you are prepared to go to get what you want? In some cases this isn't an issue and things work right out of the box, but it's worth it to know your limits ahead of time. This is particularly true for the open source GIS packages available out there.
I use multiple open source software packages and some are absolutely vital to what I do as a scientist. If there were one piece of software that I couldn't do without as an ecologist it would be R, the open-source statistical package that has become ubiquitous over the last few years. Open Office and specifically Libre Office have saved multiple files from Excel and Word that have been corrupted by their own office suite. I've been using Libre Office primarily for a couple months now.
Open source software promises a future where everyone can get what they need out of the software they use, rather than having features added only when it makes monetary sense for the company making it. It also provides, at least in theory, a very approachable and ever changing help system where questions can be answered by other users and problems can be reported and quickly fixed by those with the interest and skills to do it. The idea is great, and in the case of the programs I listed above it has worked out really well. But, for less developed software this isn't always the case.
I've recently been tearing my hair out trying to complete a GIS project that should have taken hours and instead has taken days. Because I'm a stubborn bastard who believes in open source (dammit!) and I didn't have an available license for ArcGIS and Arc Hydro Tools I have refused to back down, thinking that if I could only learn a bit about Python or a bit more about bash shells for Unix I could get done what I want to get done. It didn't work. What I wanted to to do is possible, but it's further down the rabbit hole than I have time or skills to go right now.
|The interface of ArcMap 10.2, the industry standard GIS software|
|Interface of ArcMap 10.2, the industry standard GIS software.|
|Interface of QGIS 2.0. Notice the similarity to ArcMap.|
|Interface of GRASS 7.0 is very different, as is the functionality.|
Both of the software packages are fairly mature, but the way they evolved has made QGIS much more intuitive and user friendly. While QGIS seems to have focussed on usability and GUI development, GRASS grew out of a command line interface in UNIX and has only recently released a somewhat polished GUI. Much of it's functionality is still accessed through scripting. You have to drag a Mapset folder onto the app to start the GUI, a double click doesn't work on my Mac. The GUI starts as a wxPython icon via a terminal window…it isn't what you expect but it work. The script languages you must use seem to depend greatly on the operating system you use and the window you pick to enter scripts. For instance, one can enter commands directly into the terminal window in bash script (who's grammar varies it seems), or you can enter GRASS scripts into the command console of the GUI using a language that seems very similar to R, or you can enter Python scripts using the Python Shell that is integrated into the GUI…or you can use the GUI interface. Making sense of the online documentation with this mess of input languages is difficult at best.
That brings us to the factor that sets good open source software apart from the rest, the online documentation and the user community. Programs like Libre Office are so mature that the documentation is very similar to MS Office and anyone can get going with it right away. The R statistical package has a steeper learning curve but the user community is huge, and growing, so there is plenty of documentation. They also have a very strict documentation requirements for packages on the CRAN repository so that it's easy to figure out what each new add-on package does and how to use it (assuming you are familiar enough with statistics to understand the concepts being used). Also, R has a single input language so every command is intelligible. That isn't the case for the open source GIS packages yet.
QGIS is making a good start, with a polished website and some good documentation. But, if you are interested in anything beyond the basic functionality it can be really difficult to figure it out. The user community seems to be pretty small, and the program relies on integrating the functions of multiple other GIS packages…most of which I was unable to make work in my installation. Because each of these other packages is built on different code bases and uses different inputs, figuring out how to make add-ons work is really confusing.
GRASS has even more problems, in my opinion. The program itself is very powerful. Unfortunately, the way the program has been developed means that the range of input languages, and even the grammar of each, depends on your operating system as well as the add-ons you use within the program. The website itself does a terrible job of introducing this coding complexity. The user community compounds the problem by doing a terrible job of specifying in their posts what script languages they are using, and on what system it is meant to operate on. In R you can pick a snippet of script and play with it until it works. In GRASS you can't be sure that the example script you find is even runnable on your machine. It's incredibly frustrating unless you have a deep understanding of multiple scripting languages and the GRASS program itself. It is not for the faint of heart and this rabbit hole is deep.
So, if you are a poor graduate student looking at the money you could save using an open source GIS package here is my advice. If you are just doing fairly basic vector editing, overlay type analysis, or basic raster analysis then install QGIS and you won't be disappointed. If you need to do quite a bit of work with rasters, watershed analysis, or other terrain based analysis then GRASS will do the job. But, remember that neither of these packages do more complex analyses easily because you will need to script anything that requires repeated analysis of different features across a map. Some of this probably isn't hard if you have a background in Python. If you don't already have that background, and sometimes even if you do, then expect to spend a lot of time learning from mistakes and trying to piece together information from cryptic message board posts. I think the future is bright for open source GIS and in a few years I expect it will be very user friendly. Until then it isn't for everyone.