Strategies for a hydrogeologist to develop advanced open source groundwater modeling software
/Based on real story…
Imagine that you are a normal hydrogeologist - numerical modeler that does research, or works on consultancy with a bunch of desktop software of GIS and groundwater modeling (commercial and open source). You deliver models on a common workflow of data compilation, model construction, model calibration and reporting for “sogennante” (so called) clients. On a average project you have to deal with limited budgets, scarce observation data, coming deadlines, multiple review levels, and somehow there is a general disbelieve that your model is actually useful because someone has a better gut feeling.
An one day you drink a great morning expresso with an empty stomach and the first things that come to your mind are some interesting, important but not urgent questions:
Am I using the right tools to model the groundwater flow?
Why a model is detached from the date / time and its geolocation?
Am I sure that the linear approach of Darcy Law is right to describe groundwater flow?
Why the PCG solver crashes with complex geometries?
How important is the graphical component for new and young users?
Why some online games has more resources and better graphics than the software I use?
There are some shining moments in live where a normal hydrogeologist decide to develop open source software for groundwater modeling and for every great task everyone needs an strategy.
Why open source software?
Open source software in water resources will generate better evaluations and changes towards a sustainable management. Commercial software in water resources will only get clients.
Its a new business model, you deliver open source software, create a global audience in shorter time, with less resources and make business in projects related to the software application but not the software itself.
Strategy
You might need a plan to develop your hydrogeological career but you will certainly need an strategy to develop groundwater modeling software. We have to see a strategy as the optimization of steps towards a goal, from great strategists as Hannibal Barca against the Roman empire, we need to see the whole picture and then decide the best steps to take with the resource available.
These are the most relevant topics of the proposed strategy:
Select and appropriate and unique programming language
You don’t want to create a software based on parts written in Python, C, Scala, Haskell if you are on your first software project. By far, the most popular option is Python but we don’t close the idea that another software could have great tools for groundwater modeling in the coming future, specially if this software array indexes start from 1.
Take your time to learn the software tools.
We have considered an strategy that focused on the capacity building in several software tools as programming languages, frameworks for applications an others. Based on our experience, when the software basics are clear more work and development can be done in less amount of time with better quality. By sure, the selection of the appropriate learning material is key.
Make community.
That is close to making friends. You need another programmers or hydrogeologists interested on your project or in developing similar projects to have a virtuous ecosystem that brings you new and fresh ideas to the loneliness of software development.
Think on online applications.
You could face some unexpected type of problems, for example: due to the complex setup of some spatial libraries in Python and the few documentation, some parts of the code can work on Linux but the Windows setup could be resource demanding. For this type of problem, you can couple your desktop software with some cloud services since most of groundwater modelers works with internet connection, or at least you don’t pretend to develop software next to a drilling rig on a remote area.
Start form simple features.
Even though you want to create groundwater software for complex geological setup with machine learning applications on model calibration you have to start form simple features as regional flow, well pumping and recharge.
Create documentation and question and answer sites.
Think about the potential users, they will have specific questions about applied cases. Documentation is great to understand how the program works, but a question and answer site (like Stackoverflow) would be certainly helpful for the software usage in a diversity of cases.
More topics will arise as we will be working in our software development and as any strategy, this one will be improved from the sucess or the failure from the adopted decisions.