I have been encouraging colleagues to contribute to open source for some time, but there’s always a lot of friction. And the friction not only exists in open source; sometimes it is even harder for developers to contribute to internal projects.
In my experience those friction points fall into these categories
Friction point 1: I'm not the owner
While working on internal tools and libraries shared across organisations, I often get Slack messages or comments like::
- You can improve X, this way.
- Ohh good point, could you raise a PR on that repo, please?
- No worries, I will create a ticket on your board and wait.
- Ok, :sadcat:
Sometimes people get blocked by those changes, but still prefer to wait before trying to help with some changes. After digging into why this happens, one of the reasons is the "I'm not the owner"
And this could mean many things:
- I'm not the owner -> I'm not entitled to make any changes.
- I'm not the owner -> I have no idea how this works.
- I'm not the owner -> this is not my task.
- You are the owner, I expect you to do this work.
So what does ownership mean? All above assumptions can be true, so it is important to be clear on this.
So I try to reply with:
- I'm the owner -> but you can raise a PR, and I will take a look at that.
- I'm the owner -> we can kick off something together, or provide some directions.
- I'm the owner -> but this is not our main priority.
- I'm the owner -> but we are both users of/involved in X.
I truly believe every library or service should have one, and only one, owner team in the organisation. My favourite description of ownership is:
"The owner team should be the team having the holistic view on that project, having the last word on what gets in or not, and taking care of the general maintenance, and in many cases the ones on call if something goes wrong and needs quick attention"
Friction point 2: I don't have time for it
Some years ago I remember having a timesheet with: Code, Test, Review and Deploy
Sure, because those are the only tasks, right? If I would need to break down my daily tasks, they would look more like: Read/Learn, Code, Debug, Get into the Rabbit hole, Code, Test, Review, Go back 10 steps, Deploy
I think this is still alive in many orgs, where we have the conception that only writing code in "My repo" is part of my work. So many people only contribute privately and in "my personal time", we need to declare when changes are needed outside our repos and make contributions part of our daily work.
After all we and our employer are benefiting from those contributions
Friction point 3: It is too hard
Contributing can often leave us with a single feeling: This is too hard. From figuring out how to set up the project and finding where to start, to understanding contribution directives and getting useful feedback. All of this can make contributing feel far more difficult than working in our own projects.
To deal with this friction, awareness is key here. Encouraging people to contribute saying "it's easy, just push a PR" can end up with a frustrated contributor who rarely wants to come back. So personally I try to support people contributing together, and changing the "it's easy" to "it is challenging, but pay off" and "I'm able to help on that".
On the other side creating a good path for contributors it also helps a lot, I love when projects provide progressive introduction to setup the project, being concise on the best way to raise things and whenever is possible also share how the reviewing process work so they know what to expect before hand.
In conclusion
After sorting the friction point contribution brings a lot of benefits, for both maintainers and contributors.
Breaking our own bubble makes us learn and be challenged in many different ways improving our knowledge.
For maintainers it is most of the time better to get a feature to review rather that a feature request.
Having people who are used to contributing internally and externally helps companies break down silos, reuse more software, and create a culture where people are eager to unblock themselves.
So... Let's go out there and contribute, help other to contribute and explicitly enable contribution!!
Top comments (0)