What makes a good open-source citizen and contributor?

arunima.kumar
Autodesk
458 Views
11 min 12 sec read

I had a chance to listen in on a conversation about open source between Aliza Carpio, Tech Evangelist, and Patrick Luehne, Sr software engineer. Both are at Autodesk and they explored what it means to make a good contribution to open source and how to be a good open-source citizen. A few things stood out to me.

 

  • There are many ways to contribute. Small fixes in documentation or even reporting a bug will get you started.
  • Respect for community members and having empathy for maintainers and other contributors are key values in a global open-source community. Everyone is a volunteer and patience with and appreciation of others’ time and contributions are necessary for a healthy community.
  • Communication between contributors and maintainers are mostly asynchronous which means that offering lots of good details in communication helps maintainers understand fully what you are trying to do or need from them  
  • At Autodesk, culture and values align well to how the open-source community works

 

Watch the recording below of the conversation with Aliza and Patrick. You can also read the transcript below instead. Don’t forget to let Aliza and Patrick know your thoughts in the comments below.

Today we're going to be chatting about what it means to be a good open-source citizen, which is tied to how we make good contributions to open source. Before we jump in Patrick, can you share a little bit about yourself? What is your role at Autodesk and why are you so passionate about open source?

 

Sure. My name is Patrick. I work as a GitHub administrator at Autodesk, so my role is to provide services around Git and GitHub—consulting, support, building custom tools—that's my day job. In addition, I'm also part of the open-source approval committee at Autodesk where requests for open-sourcing projects made at Autodesk land and are then evaluated from a business strategy point of view and eventually approved so the larger open-source community can benefit from some of the things we are building in-house at Autodesk.

 

Patrick, thank you for sharing that. Let's start with the first question. Do you remember your first contribution to open source? What made you go for it?

 

My first contribution is from my time at university. I was a teaching assistant for a course where we had students build a prototype of something. And we decided this framework that we built might be useful for others as well and that students might want to contribute to what we provided as a skeleton solution to them. We decided to publish this under an open-source license, and I think that might count as my first actual open-source contribution.

 

Later on, I started learning more about the open-source community and I got more involved. I started to submit smaller things, so I didn't just jump into the cold water from the beginning and submit larger things. I found a typo here and there and I thought maybe I could fix it, or I found a little bug and I investigated it and spent some time troubleshooting it and found a fix for it. I thought maybe this fix could be useful for others, and so the ball started rolling and I started getting involved in the open-source community.

 

What you just shared around contributing first during university, a lot of us that do contribute to open source started then. Just like you kind of doing smaller contributions, I remember mine being about cleaning up some documentation and even fixing a comment that wasn't referring to the right thing, so I totally get where you are coming from in terms of that journey.

 

Now, when I speak to folks about open source, I'm asked about how you get started. I always begin with the guidance of asking one of two questions, what interests you or what problems are you trying to solve. And from here, you can search for open-source solutions to match that. Now let me turn to you. What three tips do you have for someone who wants to contribute but does not know where to start or even how to start?

 

I think the easiest thing is that you might be using open-source software everyday already. Many tools on basically all major platforms these days have open source built into them.

 

By identifying those tools and then thinking about what is a feature that I'm missing or a bug that I have been encountering, you already have a good start. Just check out where the source is, and probably it's going to be on GitHub.com. There are also some other hosting services where source code could be located and then you might think of contributing an issue or a bug report or a feature request. That is an easy way to get started.

 

If you're very technically versed, you might even start looking into the bug that you encountered and investigate it and even just share the results of your investigation if you didn’t fix the bug, or if you have the bug fixed, obviously that will be well received by the maintainers in most cases.

 

 

Patrick these are really great tips, and I have a follow-up question for you. I'm also asked what contribution really means. From your experience of what you've learned along the way, could you share for us what does it mean to contribute to open source?

 

That's a very good question and I think it's always essential to remember that you are working in a community of mostly volunteers so you can't expect others to be paid for the work in open source. They might just be doing this in their free time. Free time might be available today but not tomorrow. So always keep in mind that others are volunteers as well, and they would like to be treated just the same as you would like to be in a situation where you are volunteering your time.

 

I think this is very essential to contributing to open source, because you have this community of people who are basically just contributing free time and you need to always keep that in mind.

 

I love that you provide that perspective, because I think a lot of people who start in open source or even those that are in it sometimes forget that everyone is a volunteer. And this is about community, so we many times do this outside of our work. Now a follow up question is that as a contributor I would love to learn from you how do you make good contributions, meaning, what does a good contribution look like in open source.

 

I think there are two aspects to this question. The first one is more about communication. You need to be very clear and efficient about communication. I have already mentioned that you can't expect others to be around 24/7. They might be in a different time zone, they might be busy at work, they might be on vacation, they might be sick. You just don't know how much time others have available, when they will be able to respond, how quickly, and how much time they will be able to devote to your collaboration, so I think it is essential to be very good at communicating.

 

You need to take all this into consideration and prepare all your contributions in a way that others can follow up efficiently on whatever you wrote. Basically, provide upfront all the information that they will need. Once they have the time, they can look at everything and they can just get started. Avoid situations where you have back and forth discussions because those will suck time.

 

It's just a matter of fact that if you are live in different time zones and are available at different times, you will not have a synchronous means of communication, so try to put as much information upfront. Of course, always be polite and patient. If you make sure that your communication is great, the other members of the open-source community will thank you for that, and it will just be more fun for everyone involved. I think fun is really key to working in an open-source environment because it's basically people volunteering their time, so they want to make the most out of it. They want to enjoy the work they're doing for open-source projects.

 

I love that you mentioned this whole thing around communication and respect. I think many times the folks that are part of this community are all volunteers. We are a global community, so all time zones are part of this community and it is async. I do want to reflect on the fact that good communication, respect, and patience are all critical, and you make these great points. Now that we have talked about what a good contribution to open source looks like, let's talk about what it means to be a good open source citizen. I would like to get your thoughts around that.

 

I mean being a good open-source citizen, as I said, means that you are great at communication and you are easy to work with. I think that's very important. We touched upon these soft skills that you need; obviously, being a good open-source citizen also means that you pay attention to the technical side of things.

 

It might be easier if you are reporting a bug or filing a feature request, where you just provide context. That's always very important. Explain why you need something, for example, or how something broke. Explain what you would expect to happen instead. Be very clear about your expectations and always provide a lot of context for the others involved to understand what you're trying to do. I think this is very important from a technical standpoint.

 

And then, if you plan to go deeper into open source and want to contribute larger things like features, there are even more things to keep in mind. For example, it's very important to have reproduction steps if you submit a bug report. If you are a technically versed person, and you know how to do this, then it's something that would be expected of you.

 

And if you're contributing a new feature, then also explain clearly what you are trying to solve, because it might not be obvious to other people involved in the process. They see the code, but they might not see the intention behind it, so make that explicit.

 

I would add that being a good open-source citizen is to also ask others upfront if your ideas actually match their ideas. One thing that I have seen a lot of times in open-source repositories is that people started to work on something big and they sank a lot of time into a new cool feature just to find out that the maintainers actually did not want that feature, or they might even have worked on something similar already. So you basically have duplicate work that was completely unnecessary. They might have better ideas or they might think that a feature might be implemented differently in a better way, so it's always good to double-check what you're doing and reach out to others before you embark on a huge journey without knowing where it leads.

 

I think all this is important in being a good open-source citizen. As I see it, there are two components—the social nature of communicating in a community of volunteers and the technical side, which is also very important.

 

I really appreciate all the things that you mentioned, and it comes back to some of the things you said earlier around respect and communication and also thinking about when we communicate, we are also aligning our perspectives. and I love that. I know you and I are both at Autodesk. At Autodesk, our culture code, our values are so important to how we work. How do you see open source relating to Autodesk’s culture and values?

 

I think both aren't that different because at Autodesk what we try to foster internally is an inner-source mindset, as we call it. And inner source, basically, is just the open-source mindset that developed in the open-source community brought back into the enterprise, where even though the source code might not be open to everyone, the processes are basically the same.

 

I think that Autodesk has a culture code that is built around inner source with that mentality, and actually, it is pretty similar to the open-source mentality that you would see with projects on GitHub.com, for example.

 

Thank you, I am so aligned with you. New engineers or new contributors that are thinking about should I or shouldn't I, I would say, you should consider contributing or just checking out open source in general. It's an inclusive community where all ideas are welcome.

 

But again, it takes looking into the projects, communicating well, aligning with the maintainers, that sort of thing. For me, looking at our values, being pragmatic is another one. I would say we need to be pragmatic as we contribute and as we participate in open source.

 

But I really appreciate everything that you have said, and it has been a wonderful chat with you. I appreciate this time connecting with you and learning from you, so thank you for your time and your wisdom.

 

Yeah, thanks as well.

 

 

About the Authors:

  • Arunima Kumar is Communications Manager at Autodesk who works with engineers across the globe to highlight their open source stories.
  • Patrick Luehne is Software Engineer at Autodesk and is a contributor to Autodesk's Open Source Champion community.
  • Aliza Carpio is Tech Evangelist and is a contributor to Autodesk's Open Source Champion.
Contributors
2 Comments