Skip to main content

14 posts tagged with "moja-global"

View All Tags

· 4 min read
Palak Sharma

| Project: Building UI library for moja global

Project DetailsUseful Links
MentorHarsh Mishra, Gopinath Balakrishnan
StudentPalak Sharma
Github Repository for the projectGitHub
Npm PackageNPM
DocumentationStorybook

Project Description✍

Moja global is a not-for-profit, collaborative project that brings together a community of experts to develop open-source software that allows users to accurately and affordably estimate greenhouse gas emissions and removals from the AFOLU sector.

This year in Google Summer of Code 2022, I have worked on building a faster, lightweight, user-friendly, and cross-browser-compatible UI library as a stand-alone dependency for moja global projects. I have worked on building a UI library having pre-written or ready-made code for various widely used components across all the repositories of moja global that future developers and users can use in their projects just by installing the package and running two or three import commands😀.

The Moja global User-interface (UI) library developed under this project serves the following purpose🎉

  • It aims to bring forward an intuitive, consistent, and easy-to-use interface that can help our developers within the User-Interface working group and users to quickly accomplish their tasks.
  • It helps us mitigate popular UI-development issues like inconsistent user experience, performance issues, accessibility requirements, and more.
  • It improves the design & development workflow and meets the acceptable web accessibility requirements.
  • Using UI Library components is easy as most of the code is written in the documentation itself.

My Contributions🎯

The main aspects of my contributions are🎓

ContributionTools and Technologies used
Migration of current projects from Vue2 to Vue3Vuejs
DesigningFigma
ImplementationVuejs
DocumentationStorybook
BuildingRollup
TestingAxe
LaunchYarn
Integration of UI library into existing projectsUI library

Migration of existing project from Vue2 to Vue3 🔁

Initially, I worked on migrating the existing project from Vue version 2 to Vue version 3, to make it compatible to use the UI library which is based on Vue version 3

These are the Pull requests, I made for the migration of the existing project

Designing🌸

After Migration, I worked on designing the components of the UI library according to the Moja Global brand guidelines. The designs can be found here

Implementation & Documentation📝

I did the Implementation and Documentation of the UI library simultaneously, I have added various components in the UI library with each being fully customizable, and accessible.

These are the Pull requests, I made for the Implementation and Documentation of the UI library

Building👩‍💻

Building the UI library is the main task of the project. I used vue rollup to build the UI library.

Testing🔍

For testing the components of the UI library, I have given two options to test in development mode as well as while making the pull request

Launch🚀

With the help of my mentor, the launch of the UI library has been automated. The launch happens as soon as the package version in package.json is changed.

Integration of UI library into existing projects🎊

We tested the UI library by integrating it in the fresh new Vue 3 project as well as in the existing moja global's project. It worked as expected in both. It is currently in use in FLINT UI

Summary👩‍🎓

The overall experience of GSoC has been amazing and full of learning. I learn many things like how to build a project from scratch, how to work with large codebase, etc. I would like to thank my mentors for always being there and I have learned a lot from them during the GSoC period and before🎀. I like the culture of moja global very much. All the mentors here are very friendly and very supportive. I learned the way open source works and the etiquette which should be followed while working on a real-life based project. I want to continue contributing to moja global in the future and wish to see moja global reaching heights of success :)

· 4 min read
Yash Kandalkar

Hello everyone! Hope you're doing well! This is the final blog of my GSoC journey. It'll contain a brief of everything that I have worked on during my term and what's left to do.

Mentors

A huge thanks to Andrew O'Reilly-Nugent and Harsh Mishra for helping me at every step of the project. I cannot thank them enough for encouraging me throughout the project and guiding me in the right direction.

Community Members

Special thanks to all these community members for helping me throughout the project: Padmaja, Namya, Shloka, Sanjay, Janvi, and Palak. I wouldn't have been able to finish the project without their help.

Community Bonding Period

I started working on the project by researching on the different inputs required for running the GCBM Simulation. I gathered information from Andrew, Padmaja and Namya regarding the configs which can be edited by the users on the web interface. During this period, we also decided to migrate the project from Vue 2 to Vue 3 as it is the latest version of Vue and supports more libraries. I worked on the migration process and updated all the old libraries to their Vue 3 compatible versions and updated some legacy code. I also started working on the new components and removing the old ones in the GCBM Simulation Editor.

Local Domain Configuration UI

Relevant PRs:

Week 1:

From the last week of community bonding period I started creating components of each configuration parameter. In this week, I created the UI for the Modules configuration. The users can enable and disable (add or remove) modules that'll be included in the run. Some modules, like the Decay Module, also contains configurable variables.

Modules

Relevant PRs:

Week 2:

In this week I worked on creating the Pools config. Users can edit different pool values and search the name of the pools in a search bar.

Pools

Search bar Pools

Relevant PRs: feat: add Pools config in GCBM run #325

Week 3:

In this week, I added a Create Simulation page which will be the entry point of the simulation run and added sub-menus in the Upload Section for different file types (disturbances, classifiers, input DB and miscellaneous).

Create Simulation UI

Relevant PRs:

Week 4:

I started working on the UI for the Upload section. Here, the major work was of the JSON config editor. There was a requirement for a GUI editor to make it easier for non-developers to edit the JSON attributes easier. I used the vue3-json-editor library for this functionality.

Upload section

Relevant PRs: https://github.com/moja-global/FLINT-UI/pull/332

Week 5:

I added the UI for editing column names in the DB Editor. After the user uploads a database file, the server responds with the table and attribute names. The requirement was to provide users the option to edit table and attribute names on the frontend. I added a Edit button near the database table which when pressed, makes all the attribute names editable.

database editor

Relevant PRs:

Week 6:

Connected some configuration like Local Domain with the Vuex store. I added vue-persist so that the configurations made on the frontend will persist between website reloads.

Relevant PRs:

Week 7:

Added Import Simulation feature in the sidebar. Here, users can upload all the files required by the simulation. If configuration files are uploaded, they will be read using the FileReader API and the UI will be updated accordingly.

import simulation

Week 8:

Added the UI and functionality for changing table names in the db editor.

change table names

Week 9:

Worked on adding an Export Simulation feature so that the users can download the configurations in JSON format if they want to continue configuring the simulation later. These JSON configuration files can be uploaded in the Import Simulation feature, which will update the UI accordingly.

Week 10:

In this week, I worked on creating a Tour for the simulation, which will help new users understand the flow of the simulation editor.

Further Steps:

In the coming week, I will be writing tests for the components I created and documenting the features which will help new contributors understand the code and continue enhancing the project.

Previous Blogs:

· 5 min read
Namya LG

Yash Kandalkar, Radis Toubalidis and Palak Sharma are GSoC mentees for the year 2022.

Yash is working on building the GCBM Simulation Editor with the motive of simplifying the process of running the GCBM simulation and allowing users to configure the inputs supplied. Running a simulation broadly consists of - creating a new simulation, uploading inputs, running the simulation and downloading the output on completion. FLINT UI is the frontend interface, while the backend is powered by FLINT.Cloud APIs. For each of the above mentioned steps, there are API endpoints. In the initial phase, Yash migrated all the libraries used in the FLINT UI project to their Vue 3 compatible versions. On completion he started developing the UI components for creating a new simulation and uploading input files. Currently, the inputs are - classifiers, input database and disturbances (not mandatory). Classifiers and Disturbances are supplied as tiff files, the input database is a SQL database. The JSON associated with the tiff files are generated at the backend. Yash worked on making UI components for configuring parameters like Local Domain, Modules, Pools, etc. present in the generated JSON files. The next step is to complete the UI development and API integration for the further stages of the simulation.

Radis is working on the project MLOps for reproducible science.The goal of this project is to streamline the workflow of data scientists on the FLINT.Cloud project by leveraging the combined potential of Data version control (DVC) and Continuous Machine Learning (CML). He is working on integrating a CML Action for FLINT.Cloud that runs the whole simulation workflow. The action runs whenever a new pull request is raised to the FLINT.Cloud repository with specific labels (i.e. run-simulation). The action helps to report if a particular simulation was complete. After a simulation ends, a python script retrieves the log files created from the moja.cli tool and uploads them on git as an artifact. A python script included in the Compile Results repository generates the output database, compiled_gcbm_output.db, on which SQL queries are run to provide information on the simulation's output. Along with that, plots and visualisations can be created. These inferences and plots will be published as a comment to the pull request. Radis is also building a DVC Pipeline for GCBM.Belize that divides each step of the workflow. In this case, DVC not only provides a blueprint to organize the workflow but also offers the ability to determine the dependencies and outputs of each step of the workflow.

The DVC pipeline for GCBM.Belize consists of 12 stages. In each stage, the following information is to be defined :

  • Command that is going to be run in a particular stage

  • Working directory from which the command will run

  • Dependencies of a stage (i.e. the files that are affected from the command )

  • Outputs of the command which can be any file that is created but also DVC gives us the ability to define outputs as metrics files (json format) or plots files.On every stage of the pipeline DVC tracks the dependencies and outputs using md5 hashes (dvc.lock). There is also an option to setup remote storage (e.g. Google Drive, AWS, etc) and store the outputs of each stage there.

The main stages are :

  1. tiler → defines the spatial layers needed for the simulation

  2. recliner2gcbm → creates the input database

(3,4,5,6,7) → add_species_vol_to_bio , modify_root_parameters, modify_decay_parameters, modify_turnover_parameters, modify_spinup_parameters, apply preprocessing to the input_database to fit better for the Belize case.

  1. update_GCBM_configuration → updates the simulation configuration based on the contents of the /Standalone_GCBM/template

  2. run_gcbm → runs the simulation

  3. create_tiffs → generates the compiled spatial output

  4. compile_results → generates the output database, a more user-friendly format to show the output results

  5. post_processing → which creates the 3 figures that showcase the distribution of the four unique indicators throughout the simulation as well as with the different configurations (i.e. with the default parameters or the modified parameters. It also generates the metrics files which calculate the mean values of 3 different metrics of carbon stock divided in 3 periods (1 period = 50 years) for every type of indicator and every type of LifeZone.

Palak Sharma is working on the project Building UI Library for Moja Global with the motive of creating an intuitive, consistent, and easy-to-use interface that can help developers within the User-Interface working group and users to quickly accomplish their tasks. A centralized collection of components encompassing the color, branding of moja global, typography, spacing, buttons, modals and form which will help establish a unified and consistent design language to help contributors and users. A new repository has been created for the UI library. After creating prototypes of the UI library on Figma, Palak started working on the implementation. It was decided that pure CSS will be used for building the UI library. The existing codebase in the FLINT UI repository was migrated from Vue JS version 2 to version 3. She worked on adding the Storybook Setup in the official UI Library repository to demonstrate the components better and also to document the code for using the UI Library. To make it easy for new developers, the usage and functionalities of the UI library will be documented. Palak and other contributors have added fully customizable Dropdown, Alert, Button, Card, Datepicker, and Sponsors components successfully to the project and other components like Modal, Footer, Navbar, Toggle, Slider, and Accordion components are under review.

· 2 min read
Namya LG

Amarachi Iheanacho and Namya LG are GSoD interns for the year 2022.

Amarachi was offered the role of "Technical Writer 2". Her tasks mainly entail creating the Full Lands INtegration Tool (FLINT) handbook, credible case studies on both FLINT and the Generic Carbon Budget Model (GCBM), and simplifying the documentation for the "Understanding FLINT" section of the official moja global documentation. The FLINT Handbook will serve as a guide and provide extensive detail about the FLINT. In the initial weeks, Amarachi studied the GCBM and the FLINT and created a broad outline of the contents of the Handbook. She wrote a case study on how the GCBM can be used to report and assess the effects of anthropogenic activities on forests. Further, Amarachi worked on the chapters of the Handbook. Chapter 1 handles fundamental concepts like stocks, flows, states and transitions. This chapter also introduces the reader to organizations that significantly impact global decisions on the war against climate change. Chapter 2 discusses what FLINT is and, more importantly, the different modules FLINT uses to describe processes that drive carbon changes in a landscape. Chapter 3 discusses GCBM, the data required for the GCBM to simulate carbon flows, and, more importantly, how to conclude from the output that the GCBM gifts us. In the coming months, she will work on finishing the FLINT handbook, creating credible documentation for the understanding FLINT section of the moja global official documentation, and finally, case studies on climate change mitigation.

Namya was offered the role of "Technical Writer 1". The GCBM or (Generic Carbon Budget Model) is written in C++ and was not entirely documented. She started by creating a documentation website for GCBM based on Doxygen, explaining the different modules and functions of the GCBM. In order to obtain feedback for the moja global technical documentation from the users, Namya integrated a feedback funnel into the existing Sphinx website, and used Google Sheets as the backend. She has completed a case study on FLINT.Cloud and its significance in the ecosystem. She is currently revamping the documentation and building Sphinx documentation websites for the projects GCBM.Belize and GCBM.Colombia. Namya is also involved in community-building and coordinating the community meetings every week.

· 2 min read
Namya LG

Janvi Thakkar and Sanjay Singh Rajpoot are LFX mentees working on the project Cloud Native Measurement, reporting, and validation of carbon emissions. They are currently contributing to the FLINT.Cloud and FLINT.UI Projects.

FLINT UI provides a user-friendly interface to run simulations where Janvi has added the following components to the UI-Libary :

  • Card
  • Modal
  • Toast-alert
  • Box-alert
  • Animation effects of Accordion
  • Date picker (in progress)

Janvi is also contributing to developing the UI library. To further enhance the flexibility of deploying the FLINT.Cloud project, she is working on deploying the FLINT and GCBM examples on Kubernetes both on a local and production level. The Azure Kubernetes Service will be used at the production level.

Sanjay started his term working on the FLINT.Cloud. His first task was to implement the CI/CD pipeline for the FLINT and GCBM examples, which required the creation of a new container image on the Azure Container Registry, every time code was pushed to the master branch of the FLINT.Cloud repository. To simplify the production setup further, Sanjay worked in association with Harsh, his mentor to write and test Terraform scripts (Terraform is Infrastructure As A Service, i.e resources required for performing tasks are provisioned by means of writing scripts) that can be used to deploy FLINT.Cloud on Azure. The GCBM example provides REST APIs to run a simulation. Earlier it supported only a static configuration. In the previous LFX term, Padmaja worked on a boilerplate template to accommodate dynamic inputs. This work is being carried forward further by Sanjay, who is working on developing API endpoints and the user interface

· 4 min read
Sukriti Sood

Agriculture, Forestry, and Other Land Use (AFOLU) plays a central role for food security and sustainable development . Plants take up carbon dioxide from the atmosphere and nitrogen from the soil when they grow, redistributing it among multiple pools, including above and below-ground living biomass, dead residues, and soil organic matter.

Pool is a system which has the capacity to accumulate or release carbon.

Aboveground Biomass:- Above ground standing dry mass of leaves and dead matter from the tree or shrubs or live worms expressed as mass per unit area.

Belowground Biomass:- It corresponds to woody (axial roots) and non-woody (fine roots) tissues present in the tree root system.

Above and Below Ground Biomass
Above and Below Ground Biomass

The CO2 and other greenhouse gases released by plants include methane and nitrous oxide , as well as the decomposition of dead plants and soil organic matter. Anthropogenic activities (e.g., management of croplands, forests, grasslands, wetlands) and changes to land use/cover (e.g., conversion of forest to cropland, pasture, afforestation) alter these natural processes. The activities of AFOLU lead to both sources of CO2 (e.g., deforestation, peat land drainage) and sinks of CO2 (e.g., afforestation, management for soil, carbon sequestration), as well as nonCO2 emissions predominantly from agriculture (e.g., CH4 from livestock and rice cultivation, N2O from manure storage and agricultural soils and biomass burning).

Carbon sequestration refers to the process of capturing emissions of atmospheric carbon dioxide and storing them. It is one way of reducing carbon dioxide concentration in the atmosphere in order to slow global climate change.

Historical trends in AFOLU, 1990-2010: Decadal averages
Historical trends in AFOLU, 1990-2010: Decadal averages

ghg emissions by economic sector in 2019

The key greenhouse gases of concern are CO2, N2O and CH4. CO2 fluxes between the atmosphere and ecosystems are primarily controlled by uptake through plant photosynthesis and releases via respiration, decomposition and combustion of organic matter.

The main greenhouse gas emission sources/removals and processes in managed ecosystems.
The main greenhouse gas emission sources/removals and processes in managed ecosystems.

Emission and Removal Processes

Greenhouse gas fluxes in the AFOLU Sector can be estimated in two ways:

  • Finding net changes in C stocks over time (used for most CO2 fluxes)
  • Directly finding gas flux rates to and from the atmosphere (used for estimating non-CO2 emissions and some CO2 emissions and removals).

Below are the major ecosystem stocks and processes associated with emission and removal in the AFOLU Sector, grouped by components, i.e.,

  • Biomass
  • Dead Organic Matter
  • Soils
  • Livestock

Biomass

Plant biomass, including above- and below-ground components, is the main mechanism for removing CO2 from the atmosphere. The exchange of CO2 between the atmosphere and terrestrial ecosystems is largely controlled by photosynthesis and respiration.

Dead Organic Matter

The majority of biomass generated in living plant material ends up in dead organic matter (DOM) pools (dead wood, for instance). DOM sometimes decomposes rapidly, releasing carbon into the atmosphere. However, a substantial amount of carbon is retained for months, years, or even decades. Through the decomposition rate and input of fresh organic matter, land use and management affect C stocks of dead organic matter. The burning of dead organic matter results in the release of CO2, N2O, CH4, NOx, NMVOC, and CO.

Soils

As organic matter decomposes, it is transformed into soil organic matter. In soil, organic matter is composed of a variety of compounds that reside for varying periods. The majority of this material is biodegradable, and much of it can be easily decomposed by microorganisms, resulting in the return of carbon to the atmosphere. However, some of the soil organic carbon is transformed into difficult-to-decompose compounds (e.g., organic-mineral complexes) that are very slowly decomposed and can last for decades or generations in the soil.

Livestock

Animal production systems, particularly those with ruminant(cattle, sheep, goats, buffalo, deer, elk, giraffes and camels) animals, can be significant sources of greenhouse gas emissions. For example, enteric fermentation in the digestive systems of ruminants leads to production and emission of CH4. CH4 and N2O are formed from decomposing manures as a by-product of methanogenesis and nitrification/denitrification, respectively. NH3 and NOx are also lost by volatilization from manure management systems and soils, which results in indirect greenhouse gas emissions.

· 2 min read
Namya LG

Kateryna Derhaus and Ankita Sharma are May 2022 Outreachy interns.

The Generic Carbon budget model (GCBM) is built on top of the Full Lands Integration Tool (FLINT). It was developed by Canada to run simulations in the Canadian ecosystem. Adaptations of the GCBM include GCBM.Belize, GCBM.Colombia and GCBM.Chile. Kateryna Derhaus is working on developing a new simulation model for Carpathians. She has run a test simulation with low resolution spatial data and spatial data from Belize. On completion of the Carpathians simulation model, she will document the steps in jupyter notebooks. The Recliner2GCBM tool is used to create the GCBM input database. She is working on enhancing the recliner2GCBM functionality in Python to make the example more accessible to non-windows users.

Ankita started working on an analysis for Tropical Dry Forests in India and compared how the analysis can help to form a hypothesis about the soil type, and crops grown in the area. The analysis came with a dataset loading API that can be used to port to another type of forest and help make the analysis implementation more intuitive. To enhance the analysis on the result of the GCBM.Belize simulation, she has developed scripts to plot NEP (Net Ecosystem Production), NPP (Net primary productivity), NBP (Net Biome Productivity) and Rh (Relative Humidity). As FLINT.Cloud did not ship with an AppImage, Ankita helped create the AppImage script as well as AppImages for Ubuntu 22.04, 20.04, and 18.04 systems. The scripts have been deployed to the CI. In association with other mentees, Ankita is also working on the dynamic GCBM Pre-Processing API. This is a revision of existing API which will be more robust, and easy to understand or tweak based on requirements.

· 3 min read
Harsh Mishra

Moja global is excited to announce the selection of two Outreachy interns working to support our mission in developing open-source Monitoring, Reporting and Verifying (MRV) software for forestry, agriculture and other land use (AFOLU) sectors.

Outreachy provides open-source internships to underrepresented groups in the technology industry. Through Outreachy, we can provide a platform for our interns to learn about our open-source software and gain experience in the industry while making viable contributions to the open-source community.

Project

Moja global participated in the May 2022 Outreachy internships with the project Research data sources for carbon sequestration in forests. The project aims to develop a pilot project to monitor the effect of forest management practices around the world while supporting forest owners, stakeholders, and policymakers. The interns will use various forest management indicators and a representative sample of the ecosystem and climatic conditions to develop an open-source workflow for assessing ecological conditions in forests around the world.

They will also be developing a semi-automated, FLINT-based workflow to run a unique FLINT simulation of forest dynamics for each location. The interns will also be responsible for publishing their findings openly on our repositories, with editorial support from the moja global Technical Steering Committee.

Based on the work developed and the other contributions, we selected two interns: Kateryna Derhaus and Ankita Sharma.

Outreachy Intern #1: Kateryna Derhaus

Picture of Kateryna. Kateryna is the Outreachy 2021 Intern from moja global

Kateryna is a Computer Engineering major at Ankara University, Turkey. Her interest lies in data analytics, and she enjoys exploring new technologies and automating some of her daily routines. Her desire to contribute and impact the world she lives in led her to apply to Outreachy. She found the moja global project a perfect match for her interests, and by the end of the contribution period, she was sure about her decision. Her mission is to make a positive change, work on a great variety of existing projects and be a part of the welcoming community at moja global.

Outreachy Intern #2: Ankita Sharma

Picture of Ankita. Ankita is the Outreachy 2021 Intern from moja global

Ankita is currently pursuing a Bachelor of Technology in Electronics and Communication from the International Institute of Information Technology, Naya Raipur, India. She found an early-career interest in Computer Science and always wanted to see how real-life development works in an organization which led her to open-source development. She learned about Outreachy while searching for open source opportunities and discovered the moja global organization and found the project very interesting. After contributing during the contribution period, she is excited to work for the common goal with the moja global community!

We want to thank the Software Freedom Conservancy for running the Outreachy internships. Welcome, Kateryna and Ankita to the Outreachy Internships! Thanks for your interest, and we hope it will be a great learning experience for all of you!

How to get involved?

Moja global hosts mentorship programs for students and professionals to learn more about open-source software and get involved in the open-source community. We are looking for students and professionals to join us in our mentorship programs. If you are interested in learning more about open-source software, or if you are interested in getting involved in the open-source community, please join our Slack community.

To know more about the mentorship programs we participate in, have a look at our mentorship page.

· 4 min read
Harsh Mishra

Moja global is excited to announce the selection of two Google Season of Docs interns working to support our mission in developing open-source Monitoring, Reporting, and Verifying (MRV) software for forestry, agriculture, and other land use (AFOLU) sectors.

Google Season of Docs is an annual program by Google providing an opportunity for technical writers to contribute to open-source software. Moja global has been participating in Google Season of Docs (GSoD) for the past two years, and we are participating for the third time this year. This year's Google Season of Docs aims to build technical documentation, case studies, and testing existing documentation alongside preparing an all-new FLINT handbook and preparing credible docs on climate science.

GIF showing moja global and GSoD's logo side-by-side

About the project

Last year’s Google Season of Docs saw the development of a Documentation Working Group, led by our Google Season of Docs interns, which has led to a 400% increase in the community size due to the active engagement, thus providing an easy entry point for new contributions. Though we saw a rise in technical documentation, reference guides, and case studies, there is still much to do. We are currently focussing on more technical documentation regarding the capabilities of our central framework to provide clear examples of common FLINT use cases.

While the FLINT framework can describe any generic stock and flow model (including finances, water, or biodiversity), landscape and carbon process modeling is the most popular use case. In addition to technical documentation of our software, we will also be building the FLINT Analysis Handbook, which will serve as a gentle introduction for new users progressing through the FLINT training examples. These projects will explain the core ecosystem and analysis concepts taking place when running a FLINT model and how it exactly works!

Based on the application process, which revolved around submitting a proposal (covering their technical writing & open-source experience) and community interactions, we selected two mentees: Namya LG and Amarachi Iheanacho.

Namya LG

Picture of Namya. Namya is the GSoD 2022 intern from moja global

Namya LG is an open-source enthusiast and loves learning and experimenting. She is very passionate about documenting her developer journey and writes on Medium. Namya started contributing to moja global through the Winter Of Code program in 2021. She is inspired by moja global’s initiative to combat the climate crisis using technology and has contributed to the community website, FLINT Cloud, FLINT Reporting, and is currently exploring more in the moja global ecosystem.

Namya will be working on the Building technical documentation, case studies, and testing existing documentation project, where she will work on developing technical documentation for moja global users, building credible case studies to promote moja global’s FLINT further, and building a pipeline to test and validate existing documentation.

Amarachi Iheanacho

Picture of Amarachi. Amarachi is the GSoD 2022 intern from moja global

Amarachi Iheanacho is a software engineer and an adept technical writer. With over 2 years of experience in creating technical articles and end-user documentation, Amarachi has created technical content for organizations like Cloudinary, Appwrite, Devwares, and Hackernoon.

Amarachi will be working on the Building FLINT handbook and preparing credible docs on climate science project, where she will write more approachable FLINT development and calibration documentation. It will help our users and contributors better understand climate science, carbon models, and how FLINT fits amongst them.

How to get involved?​​

Moja global hosts mentorship programs all year round. You can find more details about the projects at moja global on our GitHub organization and the various mentorship programs we participate in on our initiatives page. These mentorship programs allow students and professionals to learn more about open-source software and get involved in the open-source community.

If you are interested in learning more about open-source software, or if you are interested in getting involved in the open-source community, please join our Slack community.

· 7 min read
Asmi Jafar

I started my open source journey as an Outreachy intern with moja global. I was a beginner in the ways of open source development before I started contributing to the moja global community. I was selected as an Outreachy intern with the moja global community and received an opportunity to learn and implement new technologies. I had never participated in any open-source program before, but Outreachy provided me with a platform to showcase my expertise and gain new skills.

I started contributing by fixing good first issues at moja global while learning more about various projects and ecosystems. Later, I contributed to the Community Website by adding multiple new features and bug fixes. One of my significant contributions was developing the teams' page, which displays all the moja global contributors on the Community Website. Lastly, I have finished all the tasks given to participants to showcase their skills during my Outreachy contribution period.

Over the past three months, I have worked with Harsh Mishra on implementing Continuous Integration and Delivery (CI/CD) pipelines across the moja global repositories and centralizing the Moja Global docker images on the GitHub Container Registry. Along with it, I worked with Anthony Kwaje on the FLINT Reporting Tool while improving and delivering Java-based microservices! This blog would be documenting my experience and my project along with the key goals and metrics achieved.

About the project

Moja Global is a non-profit, collaborative project that brings together a community of experts to develop open-source software to help users accurately and affordably estimate greenhouse gas emissions and removals from forestry, agriculture, and other land uses (AFOLU). The flagship software is FLINT, a second-generation tool aimed to facilitate the implementation and operation of land sector emissions estimation systems worldwide. FLINT provides a framework to progressively develop MRV-related systems, data, and capacities.

Moja global's FLINT Reporting tool provides business intelligence for analyzing and transforming FLINT output databases into helpful information and outputs. The goal of my project was to implement the CI/CD pipelines at Moja global and implement the framework for reproducible research.

The project focuses on the FLINT reporting tool, its maintenance, and assisting in making it more user-friendly. I was also involved in implementing the CI/CD pipelines for the reporting tool using GitHub Actions and making it deployment ready. A significant part of the project also targets centralizing and migrating the docker images across the community GitHub Container Repository.

FLINT Reporting Tool System and Purpose
FLINT Reporting Tool System and Purpose

Project outcomes

Understanding FLINT ecosystem

The FLINT is considered as the framework itself - it doesn't do much unless we attach modules to it and make it an implementation. FLINT implementations extend the FLINT framework, and their respective images extend the FLINT base image. In our case for the FLINT implementation image, we have used the SLEEK (Standard Land emissions and extractions of Kenya) implementation. The outputs are used as the FLINT application image for the Reporting Tool.

Describing how the FLINT Images Work
Describing how the FLINT Images Work

Centralizing the Docker images

Previously, the moja global images were published on the DockerHub, but it wasn’t maintained for a long time. No continuous integration workflows were implemented; Hence the images were not updated for the past couple of years. If a user wanted to use the images, they would need to build it locally, and the chances of a code change breaking something were relatively high.

This was noticed in the FLINT Cloud and the FLINT Reporting tool, where the images were not being updated with incremental code changes. To tackle this, workflows were developed to build and publish all the images using GitHub Actions to the GitHub Container Registry. Now, Moja Global has over 30 packages published on the GitHub Container Registry. It has increased the uniformity and accessibility of our images across the community.

Moja global GitHub Container Registry Packages
Moja global GitHub Container Registry Packages

Maintenance of the FLINT Reporting tool

I further worked on maintaining the FLINT Reporting tool and containerizing the client and various microservices. I also worked on implementing the CI/CD pipelines and workflows for over 31 microservices including the client interface, while publishing the images on the GitHub Container Registry. The build process for the microservices workflow took more than 4 minutes initially and was later optimized to be 18x faster by using Docker caching.

Reporting tool CI/CD workflow
Reporting tool CI/CD workflow

Automate FLINT Reporting tool setup

The functionality of the Reporting Tool is based on a Microservice-based architecture. It was inspired by the many benefits that the architecture provides; the primary motivation was the need to scale different parts of the system independent of each other. It comprises over 31 microservices, with Spring Webflux as the chosen framework to implement the microservices. The Reporting Tool’s user interface is implemented using Angular, which blends beautifully with the rest of the microservices.

The functionality of the Reporting Tool is based on a Microservice-based architecture. It was inspired by the many benefits that the architecture provides; the primary motivation was the need to scale different parts of the system independent of each other. It comprises over 31 microservices, with Spring Webflux as the chosen framework to implement the microservices. The Reporting Tool’s user interface is implemented using Angular, which blends beautifully with the rest of the microservices.

The Reporting Tool system hosts various setup scripts that have been designed for ease of environment setup. We have streamlined and automated the process by creating one superscript for all the scripts, making the process very feasible and developer-friendly.

The Reporting Tool’s Database hosts all the data tables needed by the Reporting Tool that are not already a part of the FLINT’s Flux Output Database. PostgreSQL has been used for the Database. We have also streamlined deploying each service on the Kubernetes cluster by updating and rectifying the Helm Charts. Let's check out a demonstration of the Reporting Tool!

Reporting Tool Microservices up and running!
Reporting Tool Microservices up and running!
Reporting Tool Client Interface!
Reporting Tool Client Interface

Project learnings

The Outreachy internship and my participation with the moja global were very fruitful, and I have learned many things during the process. It also increased my learning ability and efficiency and helped me understand how I can use my expertise to execute issues during the production stage of an application. I have also learned a great deal about communication, navigating open-source organizations, and finding areas to plug in your contributions.

The skills that I have gained while working on the project include:

  • Continuous integration and Continuous Delivery
  • GitHub Actions
  • Docker
  • Kubernetes, Helm Charts
  • Spring Boot
  • Angular

Acknowledgement

My experience as a beginner open-source developer and then as an intern with the moja global community was terrific. I learned a lot of things about the open-source ecosystem and developed my abilities to become a sound software engineer shortly.

I want to thank all the maintainers and mentors of the moja global community for helping me out during my internship. Special thanks to my mentors Harsh Mishra and Anthony Kwaje for helping me out throughout the process. Interacting with Harsh in 1:1 meetings has helped upscale my skills. And under his superintendence, I have learned about a significant deal of things as he has provided me with many good resources for learning and implementation.

It was a great experience working with Anthony and getting to know about the structure of the Project. He explained things so well with their execution. I would also like to thank my co-intern Simple Shell for his contributions and help.

Lastly, I want to extend my gratitude to the moja global community and will be mentoring for the upcoming Google Summer of Code 2022. I want to thank Andrew O'Reilly-Nugent and Harsh Mishra for believing in me and suggesting my profile being a mentor. I will cherish my experience as an intern with moja global life-long as I continue to learn and grow in the community.

· 3 min read
Harsh Mishra

Moja global is excited to announce that it is participating in Google Summer of Code 2022 as a mentoring organization. It will be the second time that Moja global would be participating in Google Summer of Code, and it will be the first time that Moja global is participating in Google Summer of Code as an individual organization. For the past two years, moja global hosted mentorship for over 17 students across various programs, towards a common idea: Supporting ambitious climate action by developing open-source software to help users accurately and affordably estimate greenhouse gas emissions and removals from forestry, agriculture and other land uses (AFOLU).

Moja global's participation in Google Summer of Code 2022

About Google Summer of Code

Google Summer of Code is an annual program by Google, which provides an opportunity to students and professionals who are looking to get started with open-source development. Quoting Google Open Source's blog on Expanding Google Summer of Code in 2022:

At its heart, GSoC is a mentorship program where people interested in learning more about open source are welcomed into our open source communities by excited mentors ready to help them learn and grow as developers. The goal is to have these new contributors stay involved in open source communities long after their Google Summer of Code program is over.

Moja global participated in Google Summer of Code 2020 under the Digital Impact Alliance where three students were mentored by moja global's mentors and contributors and completed the Google Summer of Code program. This year we are planning to make this a bigger participation by having more projects, more mentors and more students!

Projects in Google Summer of Code

This year we are proposing to have the following projects in Google Summer of Code:

As the projects have been announced, we expect potential GSoC participants to join the respective working groups, engage with the mentors and fellow contributors over Slack channels, and submit their project proposals once the application window opens.

How do I apply?

We recommend checking out the Google Summer of Code Contributor guide to getting started. We encourage the potential GSoC participants to join our Slack workspace and join our upcoming working group meetings.

The application window opens on April 4, 2022. However, we want to work with potential student developers before GSoC starts. All the project ideas have a small task associated with them which you can find under the First steps section. The tasks are as simple as setting the project, running a user story and sharing your findings. Implementing these steps are a requirement to apply, hence please provide a short summary of your findings in your GSoC project proposal.

For more updates, please sign-up for the Google Summer of Code mailing lists.

· 4 min read
Harsh Mishra

Moja global is excited to announce the selection of two LFX mentees working to support our mission in developing open-source Monitoring, Reporting and Verifying (MRV) software for forestry, agriculture and other land use (AFOLU) sectors.

LFX mentorship program is supported by the Linux Foundation to train, support and sponsor the next generation of open-source developers. With the help of LFX mentorship, moja global has built a strong, inclusive and vibrant community with over 8 mentees graduating since its inception. Through LFX, we are looking to further progress on our Cloud native measurement, reporting and validation of carbon emissions project that aims to develop a cloud deployment framework for rapid deployment of FLINT implementations.

Over the past three terms, we have worked on building the FLINT.Cloud and FLINT-UI, our cloud deployment framework and User-interface client respectively. The experimental implementations were a success and validated our workflow of offering an easy entry point for new users to evaluate the FLINT platform and provide a blueprint for new users to roll their own. In the Spring 2022 term, we aim to further progress on the implementation and roll out new features for our FLINT.Cloud and FLINT-UI platform.

Based on the application process, which revolved around submitting a resume, cover letter and past community interactions, we selected two mentees: Soham Shah and Padmaja Bhol.

Soham Shah

Picture of Soham. Soham is the LFX 2022 Spring mentee from moja global

Soham Shah is a Software Engineer, open-source contributor and Research Enthusiast based in India. He is a final year student at Adani Institute of Infrastructure Engineering, pursuing Information and Communication Technology (ICT) degree.

He is a JavaScript Engineer, exploring into the areas of full stack development, Design Systems, Web Performance and Frontend Tooling. Soham is an open-source enthusiast and has been an active contributor to moja global. He is currently co-leading UI Working Group at the moja global community.

Outside moja global, he is the core-collaborator at Chakra UI, a popular open-source component library, and has been involved with their documentation and triaging team. Being passionate about sharing learnings and insights about web development, he has delivered tech talks at various tech meetups like ReactJS Bangalore and JSMeetup, and an active member in these communities.

During the LFX Mentorship term, he is indeed excited to contribute towards FLINT-UI project to build useful tools, write quality code, get mentored and ship great features; and in turn, create a strong impact towards combating climate change via the power of code.

Padmaja Bhol

Picture of Padmaja. Padmaja is the LFX 2022 Spring mentee from moja global

Padmaja Bhol is currently a Ceramic undergrad at the National Institute of Technology, Rourkela, India. She is inspired by how open-source communities come together to build, test, and promote the software they love. She is interested in full-stack web development, cloud-native, and technical documentation.

She learnt about moja global through Hacktoberfest and has been an active contributor since then. Padmaja had previously mentored for moja global during Winter of Code where she helped fellow developers to make contributions to the organisation. She has always been fascinated by the wide array of technologies, moja global had to offer and it was through the organisation that she decided to step away from her comfort zone as a front-end developer to explore the world of cloud-native and backend development.

Now, she enjoys the variety in the learning curves that come with new challenges. Thanks to the vibrant community here, she was able to navigate the blockers by networking and collaborating with like-minded folks across the community, some of whom have gone of their way to help her out. Through LFX Mentorship, she is looking to contribute to projects that help fight climate change.

How to get involved?​

Moja global will be opening applications for LFX mentees next for Summer 2022. You can find more details about the project and the application process on the projects page. Moja global hosts mentorship programs for students and professionals to learn more about open-source software and get involved in the open-source community.

We are looking for students and professionals to join us in our mentorship programs. If you are interested in learning more about open-source software, or if you are interested in getting involved in the open-source community, please join our Slack community.

· 7 min read
Andrew O'Reilly-Nugent

Google Season of Docs is an annual program by Google, providing an opportunity for technical writers to contribute to open-source software. Moja global has been participating in Google Season of Docs (GSoD) for past two years. The goal of the GSoD '21 project was to develop a content strategy that makes our different documentation types easy to navigate, access and understand.

In addition to the core FLINT library, our community has developed a small ecosystem of interrelated tools and platforms. As our community has grown, so has our documentation, some of which remains siloed or inaccessible to end-users and developers who would like to work with us. The selected interns were Harsh Mishra and Sarthak Kundra.

Google Season of Docs + Moja global

Problem Statement

Right now, new users experience difficulty understanding how moja global projects can be used or are interrelated. Back in 2020, our GSoD efforts led to the development of a website to onboard new contributors, a ReadTheDocs environment for our technical documentation, and completed documentation for the moja global Reporting Tool. We were looking to extend these resources and by adding easy to follow examples of how the FLINT works and can be used with other tools to our documentation and community website.

The primary goals of the project were to:

  • Standardize documentation across all of our repositories and improve navigation between moja global projects
  • Promote user documentation on how to conduct and configure FLINT using the JSON configuration application.
  • Migrate our control flow and architecture diagrams to our contributor’s site making it accessible to a wide audience
  • Create a list of available FLINT modules for users to customise their land use change models.
  • Publish a tutorial on how to post-process the FLINT results using the moja global Visualisation and Reporting tools.

Project planning

moja global has very active mentorship pathways and there are always new proposals waiting for an opportunity. To develop our GSoD 2021 proposal, we discussed areas of interest with new mentors, some of whom were GSoD mentees in 2020. After the initial development, our proposal was presented to the Technical Steering committee for feedback and approval, before being published to Github.

The 2021 GSoD program took a different format to typical mentorship programs and allowed us to submit a budget that fit our project proposal (rather than offering pre-defined amounts). However, we still wanted to support contributions from new mentees and estimated mentorship stipends that were aligned with the more generous programs we participate in.

Our project had two clear workstreams, and enough funding to support two mentees over a five month period. The budget example provided in the GSoD template was very useful and indicated that small amounts for secondary contributions and swag would be acceptable - however we are still exploring a cost effective way to deliver these awards to our community.

We hired two excellent technical writers Harsh Bardhan and Sarthak Kundra, both of whom we recruited by sharing our project proposal across social media. Our mentors Sabita Rao, Sagar Utekar, Sneha Mishra and Andrew O’Reilly-Nugent were existing community members who volunteered to take part. Our project was also supported by subject matter experts Mohit Kumar, Shubham Karande and Mohammad Warid who make regular contributions to our community.

We scoped our project to be completed within a five month period. We began with a review of the existing documentation, spread across different platforms and repositories, and developed a strategy for consolidating this information.

Project outcome

Community Website

During Google Season of Docs, we migrated the entire moja global community website from ReactJS, Bootstrap to Docusaurus. During the course of this migration, we have adopted all the core features that were present in the community website previously and deployed it on Vercel, with a gracious sponsorship from the Vercel team. You can see the results at: https://community.moja.global/

Because Docusaurus was a significantly simpler platform, that renders Markdown and JSX documents, we were able to increase the number of contributions to the site and now have several project pages, with case studies, and an active blog. Through the community website, we led our first i18n internationalization initiative, by releasing some of our documentation in Spanish with the help of community contributors.

In addition to the lifetime pro access to Vercel under it’s open source software sponsorship grant, the community website was listed on algolia doc search which allows crawlers to easily land on the website and our website is currently in queue to be listed on Docusaurus’ project showcase page.

Moja global Community Website

Extended our Technical Documentation

Moja global also hosts more technical documentation on ReadTheDocs at https://docs.moja.global. As part of Google Season of Code, we have consolidated documentation from a number of Github repositories, wikis and other Google Docs into a single documentation repository.

We further established reStructuredText documentation for several projects, which are now hosted as project specific documentation on ReadTheDocs.

ProjectDocumentation Website
FLINT UIhttps://docs.moja.global/projects/flint-ui/en/latest/
GCBM Chile Data Preprocessinghttps://docs.moja.global/projects/GCBM-Chile-Data-Preprocessing-Tools/en/latest/
FLINT Reportinghttps://docs.moja.global/projects/flint-reporting/en/latest/

Lastly, we added a documentation style guide to facilitate and will be publishing a content strategy document to help steer the newly founded moja global Documentation Working Group.

One of the first actions of the Documentation Working Group was to define a standardised README. To further boost the contributions and give a high-level overview of the community and the project involved, we also established an organization README that is directly visible on the GitHub organization: https://github.com/moja-global.

Metrics

We set an ambitious goal of increasing community engagement with our documentation. Our website had 326 active visitors in the month of October and we had 195 documentation related pull requests during Google Season of Documentation, smashing our goals of 100 new visitors and 70 new pull requests.

We ranked the community website SEO benchmarks on seoptimer, a popular SEO optimization tool and received an A+ for performance and an A for Usability. Our weakest score was Social with a C, which we aim to improve in the future.

In the past six months our community size has increased 400% due to the active engagement of our Documentation Working Group which provides a fantastic entry point for new contributors. In fact, our Slack channel became so popular that we have exceeded the tiered limit and no longer have access to the full history of our #documentation channel, meaning that we cannot assess the increase in activity. However we gained at least 50 new contributors to our projects which is a sign of phenomenal growth.

Analysis

Our team worked well together. Having clear milestones and regular meetings made sure everyone was on the same page. Harsh and Sarthak worked independently, but having a large group of mentors meant that they were able to have any questions answered quickly.

One especially positive outcome was the increased engagement of our community. Many people want to contribute to our projects and find documentation an accessible entry point to make valuable new additions. We set up a Documentation Working Group to harness this energy and now lead fortnightly meetings for people to develop new connections and get to know our community.

Moja global GitHub organization

Conclusion

Google Season of Documentation 2021 was a resounding success. I’d like to thank Harsh and Sarthak for their amazing contributions and excellent attitudes throughout the project. It has been a pleasure working with such professional documentation experts.

We want to also thank Google for supporting our project and look forward to participating in Google Season of Docs in 2022. The new format of the program, submitting a proposal with monetary allocation to be distributed as we saw fit, provided additional flexibility and allowed us to structure the program in a way that maximised the value of this generous funding opportunity.

Through good documentation, we have seen a new energy in our community. We hope to build this momentum and continue producing a great open source experience for anyone that wants to participate. Only with your help can we solve this climate challenge.

· 4 min read
Harsh Mishra

Moja global is excited to announce the selection of three Outreachy interns working to support our mission in developing open-source Monitoring, Reporting and Verifying (MRV) software for forestry, agriculture and other land use (AFOLU) sectors.

Outreachy provides open-source internships to under-represented groups in the technology industry. Through Outreachy, we can provide a platform for our interns to learn about our open-source software and gain experience in the industry while making viable contributions to the open-source community.

Moja global participated in the December 2021 Outreachy internships with the project Climate change mitigation: entending models of forest carbon pools to new countries. The project aims for the following:

  • Development of FLINT module to account for the dynamics of carbon from forest living biomass into dead organic matter pools (DOM).
  • Implement continuous integration and deployment pipelines for FLINT Reporting and the other projects in the moja global ecosystem.
  • Developing and documenting a framework to ensure long-term reproducibility of Python-based data analysis on moja global datasets.

We received 9 community applications during the contribution phase, out of which 8 submitted their final applications. Most of them were able to complete their good first issues successfully and completed their first task. The task involved analyzing moja global datasets from our Land Sector datasets repo and using data analysis tools to prepare an exploratory report. We would like to thank all the contributors who worked on this project and we hope that they will be able to contribute to the future of moja global.

Based on the work developed and the other contributions, we selected three interns: David Guevara-Apaza, Simple Shell and Asmi Jafar.

Outreachy Intern #1: David Guevara-Apaza

Picture of David. David is the Outreachy 2021 Intern from moja global

David Guevara-Apaza is from Cusco, Peru and has recently graduated in Biology. He holds a passion for computational biology and AI in topics related to conservation, biodiversity and bioinformatics. His interest gave him the motivation to apply for Outreachy Internships. He hopes to use this opportunity to keep working on environmental initiatives using data analysis, modelling and technology as a potential tool to enrich projects and get interdisciplinary works to another level.

Outreachy Intern #2: Simple Shell

Picture of Simple Shell. Simple Shell is the Outreachy 2021 Intern from moja global

Simple Shell hails from Cameroon and is based in the city of Dschang. He loves every aspect of tech especially coding and data analysis. He has a profound interest in developing the world by contributing to projects to curb environmental and societal ills.

Outreachy Intern #3: Asmi Jafar

Picture of Asmi Jafar. Asmi is the Outreachy 2021 Intern from moja global

Asmi Jafar is a Computer Science graduate from Aligarh Muslim University, India. She is profoundly influenced by technology and the various ways she can use it to express art. She is quite interested in web development and research and is curious to learn and contribute to projects. Her interest in moja global came through knowing about its projects and future goals. She also loves reading and painting, and she quotes one of her favourite lines from a book titled: The Last Lecture:

The Brick walls are there for a reason, they are not there to keep us out. The brick walls are there to give us a chance to show how badly we want something.

We want to thank the Software Freedom Conservancy for running the Outreachy internships. Welcome, David, Asmi and Simple Shell to the Outreachy Internships! Thanks for your interest, and we hope it will be a great learning experience for all of you!

How to get involved?

Moja global hosts mentorship programs for students and professionals to learn more about open-source software and get involved in the open-source community. We are looking for students and professionals to join us in our mentorship programs. If you are interested in learning more about open-source software, or if you are interested in getting involved in the open-source community, please join our Slack community.

To know more about the mentorship programs we participate in, have a look at our mentorship page.