This morning I gave a talk at CMS Africa Summit, which took place in Cape Town this year. As this event is not focussed on a specific open-source CMS like a WordCamp is, I decided to make my talk topic more generally applicable than usual, and I looked at how we can become good open-source citizens in any project.
I usually only share my slides from these talks, but I thought in this case I would give some more of the talk content as a way to share it with more people. To kick it off, here are the slides before go through it in more detail:
What is open-source software?
Given the nature of CMS Africa Summit, there isn’t much need to go into loads of detail here, but this is a broad definition of what we’re talking about here:
Open-source software is software with source code that anyone can inspect, modify, and enhance.opensource.com
If you’re reading this blog, then there’s a pretty good chance you know this already, but to help explain the implications of the open-source model for folks who aren’t so familiar with the concept, here’s an analogy that I find useful:
Imagine that you have baked a delicious chocolate cake for your child’s birthday party. People come to the party and enjoy the cake – they compliment you on your work and some even take a piece home to share with their family. This is a great way of sharing something that you have created and it is certainly appreciated.
What if you went a step further though – what if you sent each parent at the party home with the recipe for the cake? Now, instead of just enjoying the cake that day, they can recreate it as many time as they like. Your friends could then make the same cake for their child’s party. They could even change some of the ingredients to make the cake more unique and suited to their own tastes. Perhaps one of them prefers vanilla over chocolate, or one of them is allergic to dairy and chooses to create a vegan version of your cake. Owning a copy of the recipe allows for everyone to modify the cake to their own tastes, or continue to recreate it exactly as you did.
They could even share their modified recipes with others, spreading it even further than you would have been able to on your own. They could let you know what changes they made and, if you like them, you could incorporate those into your original recipe to enhance it even further. You could even bake together if one of your friends is hosting a large party and needs more than one cake. This turns your personal cake recipe into an event where you can work together as friends.
Now that your recipe has more exposure and is being shared around, it can impact and be enjoyed by more people. None of this takes away from your recipe or the cake that you originally made. Your recipe is still intact and can be used by anyone, but now it has turned into something far-reaching and impactful that would never have happened if you had not sent the recipe home with the parents at your child’s party.
The way to quickly tell if software is indeed open-source is to check its license. Open-source software is marked as such by the use of an open-source licence such as the GPL, MIT, Apache, Creative Commons, or a host of others – each with their own take on making sure the software remains open and available.
What is an open-source citizen?
Quite simply, an open-source citizen is someone who uses, and often contributes to, an open-source platform. In my case, that platform is WordPress, although I have submitted minor contributions to other projects over the years. In the cake recipe analogy, the open-source citizen would be the people using the recipe to bake their own cakes.
How can you be a good open-source citizen?
This is the real question here, so I’ll dive in with some thoughts about how you can make more valuable contributions to any open-source project.
Respect the project
Open-source projects exist and grow because of the communities built around them. Because of this, all of your work in open-source will involve connections and relationships with other people, so no matter what you do, be polite and communicate clearly. In short, have respect for the people with which you are working.
More than that, though, open-source projects include code, logistics, processes, and guidelines that help contributors focus on their work. Respecting the project means honouring all of those established aspects of the project.
Are there defined coding standards within the project? Make sure you research them and stick to them.
Does the project have a published licence? Honour that licence and apply it to any packages you release (without trying to find loopholes).
Does the project have sponsors or supporters? Honour their contributions by contributing high quality work.
These are all simple ways that you can show respect to the project you’re working with as well as the people involved in it.
One of the basic tenets of open-source software is that community contributions are the only way that the project will grow. Without contributors volunteering their time and skills to develop the project further, it will stagnate and eventually die out. When other volunteers in the project are more experienced than you, it can sometimes feel like you don’t have much value to offer, but in open-source all contributions are considered valuable regardless of their size or impact.
It is not a requirement for all open-source project users to contribute of course, but it comes back to the cake recipe – it isn’t going to improve or reach more people if you don’t work on it and pass it on.
Contribution to open-source can take many forms and it’s up to you to work out where you can be most effective within the project. You can contribute code to the core software, localise it into other locales, organise local events to promote the project, support other users, write documentation, or a host of other things that will all depend on the needs of the individual project.
Open-source projects are very often run and managed by volunteers. That means that you won’t always receive the immediate response you’re hoping for and it might take some time for decisions to be made. As a contributor, this requires patience. You might feel that the feature you have contributed is the most important thing ever and you can’t understand why the project leads haven’t followed up yet, but don’t worry – be patient and wait for a response.
You won’t always have things your way in an open-source project – others won’t always like the changes you’ve made to the cake recipe – but when things don’t go the way you hope they will, take a step back and understand that you’re working with volunteers who are giving their time to make the project what it is. This comes back to respecting the people in the project – if you work alongside them with patience, then you will find your efforts rewarded and you will have a much more fruitful experience.
How would the recipe creator know they’ve made a mistake with their ingredients if you don’t tell them? Feedback is critical to any open-source process working correctly and is actually one of the easiest forms of contribution.
The thing about feedback, however, is that if supplied with the wrong intentions, it can hurt more than it helps. When giving back in an open-source project (and indeed in all areas of life), be polite, patient and respectful. Kind words go a lot further than criticisms, particularly when dealing with volunteers who have limited time.
It is better to be kind than it is to be right.My mother-in-law
Help others contribute
You know what’s better than one person contributing to open-source? Two people contributing, of course! If you have used the cake recipe and enjoyed the results, don’t just share it with others – help them bake their own cake and improve the recipe as they go.
Helping others to get involved in open-source can be as simple as sitting alongside them and showing them what to do, or even blogging about your own experience so others can learn from it. No matter how you do it, the key thing to remember is to be patient, appreciate the effort that new contributors are making regardless of the size, and look to guide them in the most effective path of contribution for their skill set.
Getting involved in open-source all boils down to one thing: Understand and respect the community that you are joining and you will thrive.
I’ll close with a short quote from Linus Torvalds, the creator and BDFL of Linux – the largest open-source software project in the world:
That’s what makes Linux so good: you put in something, and that effort multiplies. It’s a positive feedback cycle.Linus Torvalds