April 2026 • 6 min read
Mishael Kirira
When I first heard about Fedora, I thought it was simply a Linux distribution for developers. I had used Linux for quite a few years now,I tweaked systems, installed custom Android ROMs, and enjoyed understanding how software works under the hood.
But contributing to Fedora showed me something different.
Fedora is not just an OS, It is a community, an infrastructure, and a collection of services maintained by people all around the world. My journey into this community began when I started exploring the Fedora Badges system and the services behind it like Tahrir and Tinystage
What is the Fedora Project?
The Fedora Project is an open-source community sponsored by Red Hat that builds Fedora Linux and maintains many services used by contributors. Beyond the OS, there are web applications, APIs, identity systems, messaging systems, and tools that keep the community running.
One of those tools is Tahrir part of a web service that is used to show and display Fedora Badges that are earned by contributors.
I became curious about how this system works and how I could help improve it.
My First Real Challenge
To work on Tahrir locally, I had to set up TinyStage Which is a development environment that simulates several Fedora infrastructure services using virtual machines.
During the initial setup, I went through several frustrating but educational scenarios:
- VirtualBox constantly freezing during VM creation,
- Switching from VirtualBox to QEMU/KVM
- Then struggling to understand how libvirt works with Vagrant
- Fixing state mismatches between Vagrant and libvirt domains,
- Recreating VMs multiple times after failed provisioning
- Understanding how services like IPA, authentication, and badges depend on each other
- Getting to Debug badge provisioning and why Tahrir was not reflecting expected data
and alot more,
This process was a headache but it taught me more about Linux virtualization and system debugging than any tutorial ever could.
I came to my realization that Fedora contribution is not just about writing code. as easy as it sounds, but It was and has been all about understanding systems and how this systems get to work together. The Distributed systems
Changing Strategy when things just didn't work
At some point, the virtualization issues just became too much. Now you have to understand that in this outreachy contribution phase we do have mentors and they are guardians towards getting to contribute to the project of choice,so fedora Mentors, were of great help to me, but there is a rule that they kept on imposing, dont concentrate too much on the setup process otherwise, you are going to miss the chance to contribute so I really had to make things work in time and they were right
Between VirtualBox freezing, switching to QEMU/KVM, struggling with libvirt state issues, and repeatedly reprovisioning TinyStage VMs, I realized I was spending more time fighting my environment than contributing to Fedora. two weeks had gone by still having not making a meaniful contribution
And time was not on my side. The Outreachy contribution window was closing on April 15. So I made a difficult but important decision. I stopped trying to run TinyStage inside virtual machines.
Instead, I backed up my work and installed Fedora directly on my machine as my main operating system. This removed the entire virtualization layer that had been causing me problems.This decision changed everything.
Without the overhead of KVM, libvirt, and nested virtualization issues, I was finally able to focus on what actually mattered: understanding Tahrir, badge provisioning, and making real contributions.
This was an important lesson for me. Sometimes, being a good engineer is not about forcing a setup to work. It is about recognizing when to change approach so you can move forward.
(CORS Issue) Getting stuck AGAAIINN
After finally getting the backend badges services running, I tried to run the Tahrir frontend on my localhost.But nothing showed up.The backend was working. The services were reachable. Yet the browser refused to load the data.
That’s when I encountered CORS errors for the first time in a real infrastructure setup. I had to understand:
- Why the browser blocks requests across domains
- How TinyStage services run on different hosts and ports
- How frontend and backend communication is configured
- Why Tahrir could not fetch badge data even though the backend was healthy and running
Solving this required reading logs,asking for help in fedora matrix contribution channels, inspecting network requests in the browser and understanding how Fedora services expect to be accessed.
and to be honest i would say that it was a milestone i had covered there, being a newbie in open-source contributions and fedora. I was no longer just setting up tools, I was debugging real web infrastructure. and that really was very beautiful and impactful as a student,as an upcoming engineer
*Understanding Tahrir and Badge Provisioning
*
So i started Working with Tahrir and it helped me understand,
- How badges are stored and displayed
- How Fedora accounts integrate with the badges system
- How badge provisioning happens behind the scenes
- Why multiple Fedora services must work together correctly for Tahrir to function
The Fedora Action
While struggling through setups, debugging Vagrant errors, CORS issues, and interacting with the community, I saw Fedora’s values in action, first is that the community as a whole were there for me, willing to help out when i got stuck The other thing is that resources in fedora, are in plenty, everything is easily accessed and well documented and this really helped me in navigating towards solving issues that i had to face and finally, i could not have done this without the encouragement of my mentors and friends i had met online, at fedora, they were really encouraging and i felt so much support out of them which made the whole experience an experience, just beautiful
What I’ve Learned So Far
Through working on Tahrir, TinyStage, badge provisioning, and frontend/backend debugging. I have learned more about
Debugging Linux, Vagrant, QEMU/KVM, and libvirt issues so far i would proudly say that
I have quite an understanding of how distributed services interact
I have learnt how to go about Diagnosing CORS and web communication problems
Reading documentation deeply, is a skill you gather before rushing out there to ask questions and disturb someone's peace😂 just kidding
Finally there is this patience thing, becoming patient even when things fail repeatedly will teach you a lot I would not have learnt all this if it weren't for me failing again and again
These are lessons I could never get from tutorials.
Advice to Future Outreachy Applicants
Those interested in Fedora or any open-source out there
Don’t fear to start, don't fear to try and don't fear to fail, we are all growing and learning, you don't have to be an expert in order to contribute, I am not, i'm improving though, i just got the opportunity and just moved forward with just dreams and hopes, effort and my little experience i have in open-source stuff😂 .
Take time to understand the documentation of a project, you will need it the knowledge when it comes to contribution
Learn how frontend and backend communicate (CORS will surprise you)
Document every issue you face it helps you and future contributors
Conclusion
For me, Outreachy is not the beginning. It is the next step in a journey that Fedora has already started for me. Get into open source , its the future
"Genius, billionaire, playboy, philanthropist." — Tony stark✌️
Top comments (0)