The FLINT software has proven its reliability and scalability in numerous ways over the last few years. Some projects worth mentioning are: multiple applications across Canada, and projects in Chile, Korea and a recent (Tier 1) global analysis.
It is logical that the requests from users have shifted more to usability and speed. So this year we are introducing a number of improvements supported by Google’s Summer of Code (GSoC) to respond to these user requests.
GSoC brings student software coders and open source projects together. Mentors from the open source projects work virtually with the students to code for 3 months. Everybody wins: the students get real life experience, they learn about new projects and open source operations, the projects get additional coding power to speed up their development.
The improvements to FLINT contributed by GSoC teams, cover the development of a user interface, the visualisation of FLINT’s output, the development of a scientific module, and the further improvement of FLINT’s processing speed.
Improvement 1: A User Interface
While experienced FLINT users tend to prefer the JSON input files, the barrier to entry to using FLINT can be lowered considerably by developing an intuitive user interface.
Abhishek Garain, a GSoC’20 student is working on a desktop app to make the experience of using FLINT much more seamless and user-friendly by creating a dashboard which will provide features like generating a basic set of files for a pre-defined and widely used project for on-the-go users who need to set up a project quickly.
The dashboard also provides features like creating a config file in an intuitive manner. Most new users find it challenging to set up the JSON files. So, Abhishek is working on creating a User Experience similar to Google Forms, where users can easily choose options from a dropdown menu or simply fill check-boxes.
Technically, the interface uses these responses to create a JSON file. Experienced users who want to write the JSON files from scratch can of course continue to do so. Keeping in mind the comfort of our users, they will also have an option to switch between the form-like editor and a basic editor seamlessly.
The other feature which Abhishek is working on, is to provide load, copy, modify and backup solutions of user created JSON files and a console where users will be able to install and launch FLINT in a few button clicks.
Improvement 2: An agricultural Module
FLINT is a flexible platform that allows every user to plug in its own modules. While a range of modules are available for forest related estimates, there are fewer agricultural modules. Moreover, the process of how one can easily build a module is not well tested and documented yet.
So Sulay Shah, a GSoC student is developing a module which implements the agricultural soils model used to estimate N2O emissions, a major source of GHG emissions worldwide. Better quantification of agricultural N2O emissions improves greenhouse gas inventories, allows for better evaluation of the environmental impacts of different cropping systems, and increases the understanding of the nitrogen (N) cycle in general.
This module, once complete, will be able to estimate N2O emissions using three types of disturbances: (1) human-induced net N additions to soils (e.g., synthetic or organic fertilisers, deposited manure, crop residues, sewage sludge); (2) mineralisation of N in soil organic matter following drainage/management of organic soils, or (3) cultivation/land-use change on mineral soils (e.g., Forest Land/Grassland/Settlements converted to Cropland).
The users can use this module with other modules which take N2O emissions into consideration during simulation.
The process of building a new module for FLINT will be documented by Sulay, so other users who want to build their own modules can refer to this approach as a reference.
Improvement 3: Visualisation of the output
The power of FLINT is that it produces spatially explicit outputs. To visualize these outputs, Abhineet Tamrakar, a GSoC student, is working on an interactive visualization tool named ‘taswira’ which means visualisation both in Swahili and Hindi. ‘Moja’ means ‘one’ in Swahili and was selected as a name for the organisation ‘moja global’ because the collaboration on FLINT started in Kenya. So ‘taswira’ nicely captures the contribution from Abhineet who is based in India in the tradition of the ‘moja global’ community.
This tool aims to be an easy-to-use and intuitive solution for exploring the rich data produced by FLINT. It will provide users with an interface to view processed spatial data of different ecosystem indicators like Net Biome Productivity, Above Ground Biomass, etc., overlaid on a map. Furthermore, this interface would allow users to visually step through a timeline of these data and view how they change over the years.
Below is a very first visual produced by the new tool. This version will go through several cycles of improvement to add legends, labels, colour, scaling, etc. Improved versions will be available soon.
Improvement 4: Make FLINT faster
Speed is very important for FLINT as it repeats calculations for every pixel and every time step. To continuously improve processing speed, Parth Arora, a GSoC student, is working on refactoring the code base of the core software tool. Small but crucial code changes aim to make the code hyper efficient. As a first step a consistent way to measure code performance has been established including the required tool. This measurement tool works cross-platform which is useful to benchmark FLINT performance.
As a next step Parth is identifying the bottlenecks and vulnerabilities. After this troubleshooting phase, potential improvements will be tested.
Performance can be highly dependent on data layouts too so Parth is working on core improvement by improvising custom allocators, object pooling, data oriented design techniques. And also choosing and implementing alternatives for the libraries used.
These improvements are retroactive for the existing code but Parth will also look ahead to the future and analyse new code additions and make suggestions for coding styles that increase performance.
Moja global is owned and managed by its users. When users need additional functionality or features, they are welcome to make those changes in collaboration with the contributors community. If the users do not have the capacity to do so, then moja global will try to find the resources to implement the requested features. That is why the support from Google Summer of Code is so wonderful. It helps open source projects like moja global to serve its users, and at the same time, it widens the community of moja global contributors specifically and open source enthusiasts in general. Win all around. Thank you Google.