Do you need to do GIS work but don't have the money for ArcGIS or the required extensions to do what you want to do? Have you heard about QGIS or GRASS and thought that they might solve your GIS woes with a free, open source solution? You might be right…or you might be very wrong. It all depends on what you hope to use them for and what your background is in programming languages.

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
I should provide a bit of important background information. During my masters I published a paper showing that from relatively simple geologic maps, and some knowledge of the water chemistry in your study area, it is possible to predict what the strontium isotopic ratio will be anywhere along the river. This is hard to communicate over the thump of electronic music, and doesn't even go down well at refined cocktail parties. It's super interesting if you study where fish go using the isotopes in their ear bones, which is what I do as a PhD student.
Interface of ArcMap 10.2, the industry standard GIS software.
To do this work I used ArcGIS, the "industry standard" GIS platform. Personally, I dislike ArcGIS quite a bit (file names have to be less than 13 characters? This is 2015). So, for an upcoming paper on the migration patterns of giant Amazonian catfish I used a combination of QGIS and GRASS, two open source geospatial packages that inter-relate with each other and provide almost all of the functionality available in ArcGIS. Once I learned how to use them, these packages worked fine for fairly simple manipulation of maps, analysis of watersheds and geology, and creating really nice maps for publication.The vast majority of the tasks are automated and run through interactive windows like any other program. Where the problems cropped up was in trying to do anything more complicated.
Interface of QGIS 2.0. Notice the similarity to ArcMap.
QGIS in particular is a great platform that I think has tremendous promise. The interface is similar to ArcGIS but much more intuitive in my opinion. It accepts files of all kinds and is flexible about map projections. It also brings almost every other open source GIS resource into its toolbox, allowing you to use the tools available in all of them under one interface. I'm very excited about the future of QGIS, I think it will be the future. Just as R is supplanting expensive SAS licenses in academic publications I see QGIS doing the same thing to ArcGIS in the future.
Interface of GRASS 7.0 is very different, as is the functionality.
GRASS is a more picky beast, like a 70's muscle car, you can feel the power under the hood but the entertainment system and seats aren't quite as snazzy as a new Ferrari. If you don't know much about map projections GRASS will teach you like an angry stepmother, with beatings behind the woodshed until you get it. For those of us who have been coddled by ArcGIS or QGIS and their "on-the-fly" projection it can be hard to make sure each new GRASS import is in the correct projection and that the import parameters are correct to make a functioning file. Then, once those files are in GRASS they disappear into a database and can't just be copied around like a .shp file, they must be exported. Figuring out the difference between a "Location" and a "Mapset" (the names for the database locations and the organization within them) is not well explained. Further, if you require overlapping polygons in one file GRASS cannot do this, it uses a different type of vector representation that doesn't allow it. This attention to map projections and reliance on a database has an upside though. Once the maps are input you can be sure that the calculations you do aren't introducing errors because of the way the layers are projected.

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.