Saltar al contenido principal

· 7 min de lectura
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 de lectura
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 de lectura
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 de lectura
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 de lectura
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.