How to start your open source journey with UNICEF?
Tags: opensource, github, webdev
Published: 2021-07-22 16:31:58

If you are looking for ways to start your open source journey and would like to use your technical skills to contribute towards achieving sustainable development, here’s an article you might find useful.

All you need to contribute to UNICEF’s open source projects are working knowledge of Git, GitHub, web development, and enough determination to make that first pull request! The feeling of fulfillment you will receive when the first PR gets merged will keep you motivated to continue learning and contributing.

## 💻 What are Digital Public Goods? 

In alignment with the UN Secretary-General’s 2020 [Roadmap for Digital Cooperation](https://www.un.org/en/content/digital-cooperation-roadmap/), Digital Public Goods (DPGs) are defined as _“open source software, open data, open AI models, open standards, and open content that adhere to privacy and other applicable best practices, do no harm and are of high relevance for attaining the UN’s 2030 Sustainable Development Goals (SDGs)”._

Many types of digital technologies, data, and content – from open data to apps, visualization tools to educational curricula – could accelerate the achievement of the SDGs. However, it is only if they are **freely and openly available, with minimal restrictions on how they can be distributed, adapted, and reused** that we can think of them as “digital public goods”.

## 🏢 What is the Digital Public Goods Alliance? 

UNICEF along with the Governments of Norway and Sierra Leone, and the India-based think tank iSPIRT have jointly established the [Digital Public Goods Alliance (DPGA)](https://digitalpublicgoods.net/who-we-are/), a multi-stakeholder initiative to accelerate the attainment of the SDGs in low- and middle-income countries by facilitating the discovery, development, use of, and investment in digital public goods. The DPGA is an effort to convene a network of partners from different sectors that will contribute to the identification, support, scale-up, and use of software, data, and algorithms that can advance humanity. 
 
## 👩‍💻 How can you contribute?

There are a few projects of the DPGA that you can contribute to, but instead of jumping straight into the code base, I would recommend the following approach to best understand the goals of the DPGA and make meaningful contributions.

### [Nominate a DPG](https://github.com/unicef/publicgoods-candidates/issues/66)

This process involves identifying open source solutions that 
contribute to an equitable world and adhere to the [DPG Standard](https://github.com/DPGAlliance/DPGStandard/blob/master/standard.md). The [unicef/publicgoods-candidates](https://github.com/unicef/publicgoods-candidates) repository is used to manage the process of adding nominees for consideration as Digital Global Public Goods. 

While you can easily make a contribution through the [submission form](https://digitalpublicgoods.net/public-goods/), I would strongly suggest opening a pull request, making sure it passes the CI build, and getting it merged. The instructions for nominating DPGs through both methods are mentioned very clearly in the [contribution guidelines](https://github.com/unicef/publicgoods-candidates/blob/master/CONTRIBUTING.md). 

Go ahead and make that first contribution!

### [Validate DPG submissions](https://github.com/unicef/publicgoods-candidates/issues/178)

You can participate by reviewing open source projects against the [Digital Public Goods Standard](https://digitalpublicgoods.net/standard/) with the ultimate goal of determining if a project qualifies as a DPG. 

This community sourcing exercise will give you the opportunity to delve into some of the largest up-and-coming open source projects, understand their licenses and documentation, and how they’re designing for best practices, standards, privacy, and more. 

By participating, you’ll get a better understanding of open 
projects that are making a difference in the world, particularly those that are advancing practical solutions to help achieve the SDGs. You will also join a growing number of innovators working on Technology for Development (T4D). 

### Solve issues in the various repositories

The next step is to take a look at the various issues listed on UNICEF’s GitHub repositories. When you find an issue that interests you, drop a comment asking to be assigned to it. If you don’t understand the issue entirely, ask for help through comments. Below is a list of the various UNICEF repositories 
you can contribute to:

  * https://github.com/unicef/publicgoods-candidates
  * https://github.com/unicef/publicgoods-scripts
  * https://github.com/unicef/publicgoods-wordpress
  * https://github.com/lacabra/submission-digitalpublicgoods
  * https://github.com/lacabra/validate-digitalpublicgoods

Before diving into the solutions, I would strongly recommend you to go through the documentation thoroughly and set up the project on your local machine. Then, move to the `Issues` tab on any repository, find an issue with the tag `good first issue` and try solving it. If you don’t find any issues that interest you, you can create a new one! You just need to take a look at the code and try to identify bugs or make suggestions to improve the content, design, documentation, etc. 

The large codebase might appear intimidating at first, but it is not as hard as it appears. I was a beginner too when I started contributing, and I understand that it takes some effort to navigate through it all, but the satisfaction of seeing your changes merged into the repository, ultimately contributing towards the good of the public, is absolutely worth the effort.

## 📝 Conclusion

Open source represents an opportunity to fundamentally alter power balances in international development. UNICEF aims to harness that power through the cooperation of its many contributors, and this is your chance to be one! Being an open source contributor was one of the best learning experiences for me, and I encourage everyone to give it a try. 

I hope this blog helped you in some way. If you have any other questions related to the process, feel free to drop a comment below. 

Best of luck and happy coding! 😃