My Take on the Art of Contributing (10th PR edition)

I joined OpenMRS on May 21st 2025, and as I write this on August 11th, it’s been almost three months.

In that time, I’ve learned a lot, made my fair share of mistakes, and contributed to the community. So far, I’ve had 10 + 1 PRs merged — I say “10 + 1” instead of just 11 because one of those PRs was my attempt to fix broken E2E tests in the template app. I couldn’t quite get it across the finish line, but thanks to the generous help of @dennis, it was completed — and I learned a ton from the process.

Of course, there have also been several PRs that didn’t quite make the cut and had to be closed — not every attempt is a success, but each one taught me something valuable.


Enough about me — the main reason I’m writing this post is to share the most important lesson I’ve learned during this journey. I’ve been very active in the O3 frontend troubleshooting calls, which have been an amazing space for learning, sharing my work, and exchanging ideas with the community.


I want to share something that, to me, is at the core of any contribution — not just in OpenMRS, but in life itself. I might sound a little philosophical here, but just bear with me…

Contribution can take many forms:

  • If you’re ill and visit a doctor, they contribute to your recovery through their medical knowledge.
  • A mother cooking a nourishing meal is contributing to your health.
  • A friend who teaches you important concepts right before an exam is contributing to your success (:joy:).
  • Even when you go through a tough time, you can contribute to your own well-being by learning from your mistakes and moving forward.

As you can see, every part of life involves contribution — either from ourselves or from the kindness of others. So for me, contributing to OpenMRS is no different.


The “I Need to Contribute Here” Moment

I don’t know about you, but to me, life is a constant movement of uncertainty. You never really know what kind of problem might appear tomorrow — it often comes suddenly, without warning.

One of the most valuable lessons I’ve learned comes from my favorite philosopher, Bruce Lee: “Be water, my friend.” Water is the most flexible substance. It has no rigid shape — whatever it encounters, it adapts to. Pour it into a cup, it becomes the cup. Crash it against rocks, it flows around them. Unlike solid bricks that are so rigid they break when faced with a new shape, water learns the shape instantly and keeps moving forward.

In life, I try to apply the same principle. When a problem arises, I either use the knowledge I already have to neutralize it, or I quickly learn whatever I’m missing and apply the solution without hesitation.

Here’s the golden rule of the game: the longer you postpone acting on a problem, the more space you give emotions to take over — and once emotions set in, solving it becomes far more difficult.


Applying “Be Water” to Open Source Contribution

I always start by using the project. For me (and I’m emphasizing ME here), I naturally notice areas where something could be better — or maybe I stumble upon a bug. When that happens, I don’t hesitate. I treat it like a real problem in my life, because I’m actively using the project. My instinct is simple: either I already know how to fix it, or I’ll learn what’s needed and implement the solution.

Here’s the best part — when you work on a single issue, you usually don’t need to understand the entire codebase. In fact, I’d say at least 50% of the codebase is irrelevant to your task (and honestly, 50% is probably an underestimate). There’s a common myth that you need to know everything about a project before contributing. Nope.

Take my experience with the Google Gemini CLI — it’s a super complex project. My PR? It simply added a small comedic string to the loading sequence. It didn’t involve the API calls to the LLM, the architecture, or the internals — just a small change that made people smile during their request process.

You can check it out here: PR #5666.

If you want a simpler analogy — imagine giving a car to a car washer. Their job is just to wash it. They don’t need to know about the combustion engine or the incredible engineering under the hood.

Each contribution depends on the awareness of the individual. Recognizing this is crucial — otherwise, you risk overwhelming yourself.


Wrapping Up

That’s it — I just wanted to share my thoughts.

I’m also thrilled that @jwnasambu has taken the initiative to organize meet-ups for newcomers like me, making our journey a bit easier. I participated in one today and learned so much from @chintu and @jonathan — huge thanks to both of you!

Sorry if I got a bit philosophical there — and perhaps this will be my last post in that style — but I truly believe it captures the ultimate starting guide, not only for open source contribution, but for life itself.

I just love to share little things I know and thanks for including me as the openmrs guide.

Thank you, OpenMRS, for being a meaningful part of my life.

A Little Extra for You…

Ever dive into a large codebase and get stuck in a tangle of errors? You’re not alone. If that’s ever happened (and it happens to all of us), check out this great read:

How learning to read and write tests helped me overcome fear of large code-bases

5 Likes

@backloguy, this is a good read. It’s detailed read but worth the time & it’s encouraging to the new contributors.

3 Likes

Thank you @backloguy This is beautiful!! Looking forward to seeing you grow within the community.

1 Like