Free and Open Source Software.... Again!

Open source developers don't have trust issues - they just believe in transparency !



Table Of Content:

Intro

I'm tired of seeing that the majority of Africans still don't get it, and probably never will, that free and open source software represents the optimal path forward for our continent. One of my brightest students asked me to talk about free and open source software, and gave me 2 hours to do so. For him, for Africa, for the future, here I am...

IT's been almost 20 years I see myself as a free software advocate, therefore my perspectives are inherently biased. Hopefully, the bias is not huge. Let's cue the music please!

Free software:

The Free software movement, as defined by the Free Software Foundation, is a social/political movement about freedom, ethics, and user rights/freedoms. Richard Stallman created the movement in 1983 and the 4 essential user freedoms are:

  • Freedom to run the program for any purpose
  • Freedom to study how the program works and change it
  • Freedom to redistribute copies to help others
  • Freedom to distribute modified versions to benefit the community

Open source software:

The term "open source" was coined to rebrand free software with a business-friendly focus. It emphasizes practical benefits like better quality, reliability, and development methodology rather than ethical considerations. Bruce Perens created the Open Source Initiative in 1998 and Open source criteria include:

  • Source code must be available
  • Free redistribution
  • Derived works allowed
  • No discrimination against groups or fields of use
  • License must not restrict other software

If we read these two definitions calmly, we can see that there is a very important nuance that should be made here: the user freedom and independence is at the center of everything for a free software advocate. This is not necessarily the case for an open source advocate.


Why contribute:

Here are compelling reasons why African people should fully embrace Free and Open Source software :

Learning:

Free and Open Source Software often attract talented developers. When your code get reviewed by maintainers at companies around the globe, you receive mentorship that money can't buy. You'll encounter diverse codebases, architectural patterns, problem-solving approaches that you might never see in your day job. Free and Open Source Software forces you to read and understand existing code, which dramatically improves your development skills.

Economic opportunities:

Open source contributions can help you land jobs or consulting opportunities. There are many companies worldwide are actively seeking talents. Open source provides the perfect showcase of your abilities. Open source software is often the most accessible option for people with limited budgets. There are a lot of startups across the Black Continent that rely on free and open source solutions to build their digital infrastructure.

We often talk about RedHat, but there are many other companies like: Suse, Gitlab, Docker, NextCloud, companies that demonstrate various and successful approaches built on free and open source foundations.

In a nutshell, those companies will offer subscriptions and services for a guaranteed support, security updates, patches, custom implementations, customizations, optimizations, trainings, certifications, consulting, ...

I would like to do a special mention for 2 companies: Entr'Ouvert and Logilab. They offer implementations, customizations, trainings, and consulting services exclusively with free software, you can see it here and there. They have a deep expertise in the free software industry and this expertise became a valuable service to their clients. Also, I have very good friends over there, shoutout o/

Breaking geographic barriers:

Thanks to Free and Open Source Software, your code quality matters more than your location or background. African developers can showcase their skills on the same platforms as Silicon Valley engineers. Free and Open Source is our opportunity for challenging stereotypes and demonstrating our technical talent to the world.

Gaming:

Linux was once held back by its compatibility with PC games, but thanks to Valve and SteamOS, those days are in the past. Better gaming performance, better battery life, better power management, are another reasons to use Linux.

Community:

The open source community represents humanity at its best, a global network where people freely exchange expertise and genuinely celebrate one another's wins. When you realize your contribution has solved someone's problem or saved them hours of work, that feeling is pure gold. Belonging to a community, building social connections is essential to our wellbeing, it is as important as food, water and shelter.

Digital sovereignty:

Digital sovereignty encompasses control over critical digital infrastructure like internet networks, data centers, communication systems and mobile/web platforms. Digital sovereignty is the ability to regulate how our data is collected, stored, and processed within our jurisdiction.

What happens when a country's government systems, banking infrastructure, or communication networks depend entirely on software and services controlled by foreign companies. This is where free and open source software becomes crucial for digital sovereignty.

When you use non free and non open source software:

The others are moving:

Public money, public code an initiative advocating that software developed with public funds should be made freely available under a free and open-source license.

Pôle open source et communs numériques, Initiative to support government administrations in using free and open source software, assist their efforts to publish and share source code, and create connections with the open source ecosystem.

The German federal state has decided to move from Microsoft Windows and Microsoft Office to Linux and LibreOffice (and other free and open source software) on the 30,000 PCs used in the local government.

EU OS, a proof-of-concept for an Operating System for a typical organization inside the European Union public sector.

To move away from dependence on US software solutions and acquire genuine digital sovereignty, the City of Lyon has embarked on a major transformation of its digital tools.

At this point, I don't even know what else should I say to convince you...

Denmark is transitioning away from Microsoft products in a key ministry due to a strategy focused on digital sovereignty and reducing reliance on foreign, particularly US-based, tech giants. This involves replacing Windows and Office 365 with open-source alternatives like Linux and LibreOffice.

The Schleswig-Holstein state government is shifting completely to free and open source software, aiming to achieve what officials call "digital sovereignty" and to reduce reliance on U.S.-based tech giants [...] This isn’t just about software. It's about control over sensitive data.

You're already consuming:

If you've ever used Google, Facebook, WhatsApp, Microsoft or watched a Netflix movie today, you've been relying on free and open source software without even knowing it. These tech giants don't reinvent the wheel, they build their services on top of thousands of open source projects. None of those things would exist without free and open source software.


Skepticism:

skeptical

Technological proficiency is important, but correctly managing the cultural shift required to embrace free and open source software is also very important. There are a number of complex reasons why mass adoption of free and open software has not yet taken place in Africa.

Cultural resistance and habits:

Users are used to the interfaces and workflows of proprietary software. Change naturally generates resistance, especially when the benefits are not immediately perceptible to the end-user.

Institutional inertia:

Public and private organizations are often prisoners of their past technological choices. Migrating complex systems requires massive investment in training, data migration and process adaptation. This vendor lock-in is particularly strong in public administration.

Perception of complexity and support:

In my humble opinion, this perception no longer corresponds to current reality. Yet, many still consider free and open source software to be more technical and less user-friendly.

Lobbying and political influence:

Large technology companies exert considerable influence and pressure on political decisions and public procurement, hindering the adoption of alternative solutions.

Economic reasons:

Business models built around proprietary software generate huge revenues. Companies like Microsoft, Adobe or Oracle have built entire ecosystems that create mutual financial dependency. To change would represent considerable transition costs and a loss of revenue for many players.

To go even deeper on this subject:

Here is a really interesting study, intitled Adoption Barriers of Open-Source Software: A Systematic Review and led by Dmitrij Petrov & Nikolaus Obwegeser. A study that tried to find all the significant barriers that hinder the wider adoption of Free and Open source software. Have been found 19 high-level factors that challenge or inhibit the adoption of FLOSS in various contexts. Long story short....




How to contribute:

There are so many ways to contribute to free and open source software. There are so many articles, so many guides and tutorials. The choice is yours.

If you really want me to answer the question, this is more or less how it should be done (on top of my head).

0. Contribution types:

There are several ways you can contribute to free and open source projects.

Bug fixes involve addressing opened issues, improving error handling, and resolving technical problems that users have encountered. Feature contributions include adding new functionality, enhancing user experience and interface design, and optimizing performance to make applications run more efficiently.

Documentation improvements focus on enhancing readability, adding helpful examples and tutorials, providing translations for broader accessibility, and fixing typos or grammatical errors.

The last contribution type I would like to talk about is funding. Funding through donating or direct sponsoring can provide crucial financial support to help free and open source projects continue their development.

1. Tips:

Before diving into contributions, it's essential to read the CONTRIBUTING.md file or any other available documentation to understand the project's specific guidelines and processes.

Starting small with simple fixes like correcting typos or improving documentation can be incredibly valuable and help you get familiar with the contribution workflow.

Remember to be patient during the review process, as reviews are conducted by human beings who need time to thoroughly examine your work. Don't hesitate to ask questions when you're stuck, and feel free to ask even more questions to clarify requirements or processes.

It's also important to focus on making one logical change per Pull Request to keep your contributions clear and manageable for reviewers.

2. Discover & explore:

Begin your open source journey by finding a project that you actively use or genuinely care about, as this personal connection will help sustain your motivation. Take time to thoroughly read the project's documentation and contributing guidelines to understand how the community operates and what standards they maintain. Browse through the project's issues section, paying special attention to those tagged with "good first issue" or "beginner" labels, as these are specifically designed to help newcomers get started with meaningful contributions.

3. Setup your environment:

Getting started with development requires setting up your workspace properly. First, fork the repository to create your own copy of the project. Next, clone this forked repository to your local machine where you can make changes and test your work.

Take time to set up the development environment according to the project's instructions, which may involve installing specific dependencies or configuring tools. Run any available unit tests to ensure everything is working correctly in your setup, as this confirms your environment is properly configured. Finally, create a new branch for your work to keep your changes organized and separate from the main codebase.

4. Make your contribution:

When working on your contribution, it's crucial to follow the project's established coding style and conventions to maintain consistency across the codebase. Focus on writing your code, fixing bugs, or adding features while keeping the project's standards and best practices in mind. Remember to update documentation whenever your changes affect how users or developers interact with the project. Additionally, add or update tests to cover your changes, ensuring that new functionality works as expected and that bug fixes prevent regression.

5. Test & prepare

Before submitting your work, thoroughly test your changes by running tests locally to catch any issues early in the process. Carefully review your changes to ensure they meet the project's quality standards and actually solve the intended problem.

Write clear, descriptive commit messages that explain what your changes do and why they were necessary, as this helps maintainers understand your contribution. Double-check your work against the contributing guide to make sure you've followed all the project's requirements and conventions.

6. Submit your work

Once your contribution is ready, push your branch to your forked repository to make it available for review. Create a Pull Request from your branch to the original project's main branch, providing a clear pathway for your changes to be reviewed and potentially merged.

Fill out the PR template with detailed information about what your changes do, why they're needed, and how they've been tested. If your contribution addresses specific issues, link those related issues in your PR description to provide context and help maintainers track the resolution of reported problems.

7. Collaborate & refine

After submitting your Pull Request, actively engage with the review process by responding promptly and thoughtfully to code review feedback from maintainers and other contributors. Make any requested changes to address concerns or suggestions, treating each piece of feedback as an opportunity to improve your contribution and learn from experienced developers.

Throughout this process, engage in discussions respectfully and professionally, remembering that constructive feedback is meant to help improve the project rather than criticize your work personally. Pay attention to any failing CI checks and address them promptly, as these automated tests help ensure your changes don't break existing functionality.

8. Merge & celebrate:

Your contribution gets merged into the main project, congratulations 🎉. This marks a significant achievement in your open source journey. You're now officially a project contributor, joining a community of developers who have helped shape and improve the software. Most importantly, your code now helps users worldwide, potentially solving problems, adding useful features, or improving the experience for countless people who rely on the project.

Here is an article discussing, among other things, the tasks that are needed to be taken care of for different sizes of the open source project. We see that the bigger the project, the more ways there are to contribute.

Success stories:

After searching very extensively everywhere on the internet, I found no current organizations in Africa, that even remotely resembles the Free Software Foundation.

If you find interesting (and recent) informations about free and open source software initiaves/organizations in Africa, if you are in one way or another, linked to an active Linux User Group in Africa, please, if you know any African initiative/organization that promotes free and open source software in Africa, please let me know. I'll be glad to update the article.


More on the topic:

We could easily spend days on this topic! Since we only have two hours, here are some excellent resources to continue your journey into this fascinating subject.

In french:

In english:

Let's be optimistic:

By the way...:

In the next few weeks, I will publish findings regarding the Syndromic Surveillance System I'm currently working on. Expect a detailed writeup showing exactly how free and open source software is driving a positive change to the West Africa's public health infrastructure. Stay tuned...


Thanks for sharing!