Written by Charis Chau on 06/23/2020
What is an open source project? To answer this, let us start with a burger! Imagine an open source project is a burger selling in a restaurant. Every day, the chef makes thousands of burgers that have the same quality by following the same recipe from the restaurant. One day, customer A comes to the burger place to try the burger, and he/she loves it! Therefore, customer A decides to ask the chef whether he/she can get the recipe. Here, if the restaurant is open source, they will be happy to share the recipe to customer A, vice versa.
After customer A gets the receipt, he/she decide to make the burger at home by him/herself! However, customer A is a meat lover and does not like onion that much, so he/she decide to change the recipe by taking out the onion and add more beef in the burger! At this point, customer A gets a new burger base on the same recipe from the restaurant. Now, if the restaurant is an open source restaurant, customer A can go to the chef and say ‘Hey! Your burger is great, but I’ve added more beef for people who like to eat meat and take out the onion for people who do not eat onion! You can add to your menu!’.
The role of the chef now becomes the committer. The chef will evaluate whether the modifications are valuable or not, and then decide whether to add to the restaurant menu. Either way, by sharing the changes of the new recipe, customer A has just become a contributor!
Open Source Project
So, why? Why customer A wants to be a contributor? Why contributing to open source is worth it? More importantly, how can we contribute to an open source project? In this article, we are going to answer these questions and drop a few guidelines to those looking to contribute to our CUBRID project and community!
(Thanks for the burrito example in the article 'The Definitive Guide to Contributing to Open Source by Mr. Piotr Gaczkowski)
Contributors who contribute to open source projects can generally be classified as organizational contributors who are corporations whole and individual contributors who we will focus on today in this article. For organizational contributors, reasons of contributing to open source projects can be varied from ‘it’s an effective way to collaborate with other company/projects with mutual interest’ to ‘want to understand the technology they are using’; etc., the specific rationale might vary for different organizations but it usually can be summarised to one simple fact that contributing in open source benefits their business.
Then how about individual contributors? What is the motivation to them? According to the study of ETH Zurich ‘Carrots and Rainbows: Motivation and Social Practice in Open Source Software Development’, there are three main types of motivations driving individual to contribute to open source project:
1. Extrinsic Motivation
Back in the 1940s and 1950s, researches have shown that motivation is fuelled mainly by the prospect of an external reward or incentive. For example, money is a classic extrinsic motivator, so is winning awards, getting grades, or obtaining certification, eventually increasing your competence in the labor market.
For contributors to open source projects, contributing to open source not only means the software you are using is getting improved but also means that your existing skills of, for example, coding, user interface design, graphic design, writing can also be improved.
And, according to the paper of Lerner and Tirole ‘Some Simple Economics of Open Source’, individual contributors, mostly developers are motived by career concerns when developing open source software. It means that by publishing software that was free for all to inspect, they could signal their talent to potential employers and thus increase their value in the labor market. Notably, it has become almost an expectation in some industry segments for job applicants to have public GitHub code repositories, which are effectively part of their resume.
2. Intrinsic Motivation
Fun and enjoyment is a classic intrinsic motivator, which means that contributors are contributing because they are actually enjoying it! In addition, peer reputation and recognition are also sources of intrinsic motives; by contributing to open source projects, contributors can share and learn from people who have the same interest, get mentorship, or even form a lifelong friendship!
3. Internalised Extrinsic Motivation
Participating in an open source project not always starting from because you want to get peer recognition, or you want to have a better career path. Sometimes, you are just developing something that you want for yourself, and in the process, you create something valuable to others, that is what we call ‘scratch your own itch.’ In this case, the initial motivation comes from a selfish need, but it evolves into more of an internalized desire to contribute! For example, Linus Torvalds wrote Git because Linux needed an appropriate distributed version control system.
In summary, why contributing to a free open source project? You probably not only can increase your competence in the labor market and getting a higher salary in the future; but also gain recognition from the community and achieve your intrinsic satisfaction!
How to Contribute?
Contributing to open source is like walking up to a group of strangers at a party. Before start, you might want to do a screening and get used to the environment.
Almost all open source projects used a version control system, which is a tool that helps with merging new code into the project (the main ‘repository’). Usually, the collaboration is centered around a website such as GitHub that hosts the central repository. For CUBRID project, you can find information at our GitHub website at https://github.com/CUBRID
After you are comfortable with the GitHub system, try to search for the relevant projects you are interested about! There are 34 repos in CUBRID RDBMS Organisation waiting for you to explore! Once you have found the project you are interested in, Star and Fork the project!
Now you’ve found a project you like, and you’re ready to make a contribution. There are all sorts of ways to get involved with an open source project, it all depends on how you are comfortable with! For developers, they can contribute on the code by doing the following:
· 1. Post Questions, Ideas, and Bug Reports
One of the benefits of joining a community is that you can find people and information through forums. Some people might find that is embarrassed to ask questions, however, everyone, even the experts, takes a journey from not-knowing to knowing. Posting questions, ideas on forums not only can get the answer directly from different sources by worldwide experts; but also have a chance to gain more information around the topic/questions. Furthermore, by asking questions, posting ideas in an open communication way, you are actually benefiting people who come after you with the same question!
In CUBRID, we appreciate you to post questions, ideas, or bug reports at our forum channel: https://www.reddit.com/r/CUBRID/.
· 2. Find Open Issues/ Existing Issues to Tackle
Another way to contribute is by playing with the existing issues. Once you found the project you want to work on, explore its JIRA issue tracking system where you can find all the open issues you can work on. Find the issue you have an interest in and start work on it with confidence! For CUBRID, there are several projects that you can browse issues and report an issue.
- CUBRID: http://jira.cubrid.org/projects/CBRD
- CUBRID APIs: http://jira.cubrid.org/projects/APIS
- CUBRID Tools: http://jira.cubrid.org/projects/TOOLS
3. Contribute Fixes and new Features
If you like the project or think it is useful for you, try to request fixes and new features, or you can sign the contributor agreements that give the project rights to the contributed code and start to add them by yourself.
If none of the above is the way you want to contribute, don't worry! You can also:
o Automate project set up
o Improve tooling and testing
o Review code on other people’s submissions
In CUBRID, your opinion matters to us. If you have any other good ideas about contributing to our community, please feel free to leave them in our comment box!
Contribution does not necessarily mean coding!
Contributing to open sources project is not only about coding! In fact, it is often that other important parts of open source projects are often neglected. Other than contributing to coding, you can also help:
o Enhance Communication
Enhancing communication is not only beneficial to you and me but also great for the whole community! More importantly, it does not take up much of your time. Asking, answering, or discussing questions about the project on the open forum, or help moderate the discussion boards on conversation channels.
o Improve the Public Knowledge Base
Improving the public knowledge base is an effective way to contribute to open source projects beyond code. Knowledge is especially useful when it came from someone who is relatively new to the project and who can still remember their beginner’s mind. Improving the knowledge base by writing tutorials or producing blog posts on what you have learned is highly recommended! Read the documentation and if you feel something is missing or you found minor errors such as missing links or typos, raise an issue or submit edits to the official documentation! Our CUBRID documentation is right here: https://www.cubrid.org/manuals
Another way to improve the public knowledge base is through translation. Some people might find that it could be challenging to contribute to open source when your primary language is not English; in fact, that is totally the opposite! Knowing another language could be a very valuable asset. The translation is an extremely valuable contribution that can spread software to a wider user base. Helping an open source project with translation is an incredibly helpful way to contribute because more people in the world can use your favourite open source project. If you are fluent in more than one language, translation is a great way to contribute!
Besides, you can also,
o Attend conference and workshops when they offer
o Offer Mentorship
o Design graphics
o Event planning (conference…)
o Put together a style guide to help the project have a consistent visual design
o Help community members find the right conferences and submit proposals for speaking
Starting from explaining the concept of open source projects, why would people want to contribute to how to contribute practically, I hope this article can give you some general ideas about how to start contributing on CUBRID or other open source projects. In the world of open source, users and developers are the ones who shape the direction. We, CUBRID, appreciate your contribution!
1. Contributing to an open source project: How to get started: https://medium.com/mindsdb/contributing-to-an-open-source-project-how-to-get-started-6ba812301738
2. The Definitive Guide to Contributing to Open Source: https://www.freecodecamp.org/news/the-definitive-guide-to-contributing-to-open-source-900d5f9f2282/
3. Why do we contribute to open source software?: https://opensource.com/article/19/11/why-contribute-open-source-software
4. Carrots and Rainbows: Motivation and Social Practice in Open Source Software Development: https://www.jstor.org/stable/41703471?seq=1
5. Some Simple Economics of Open Source: https://onlinelibrary.wiley.com/doi/abs/10.1111/1467-6451.00174
6. How to Contribute to Open Source: https://opensource.guide/how-to-contribute/
7. 8 non-code ways to contribute to open source: https://opensource.com/life/16/1/8-ways-contribute-open-source-without-writing-code
8. Open Source in the Enterprise, Andy Oram& Zaheda Bhorat