Why contribute to open-source software (OSS)?
At Stack Builders, we care deeply about giving back to the community through open-source software (OSS) contributions in different programming languages. As software developers, it’s great to improve our technical skills by making contributions, but I think it’s important to know what other benefits we could receive by doing so.
I have been working with Haskell on a daily basis and my confidence with it has been growing, so I thought: Maybe it’s time to give something back to the Haskell community? This led me to make a contribution to esqueleto, a SQL EDSL written in Haskell. Allow me to share that experience with you.
To sum it up, I wanted to add the between clause in the DSL and while doing so, one of the maintainers came back to me with the following:
I think we should support composite keys…
At first I thought, I guess composite keys should be something simple and easy to learn, right? Let’s have the following example:
SELECT * FROM users WHERE country_id = 1 AND permission_id = 1;
Quite simple, right? But did you know you could also do the following?
SELECT * FROM users WHERE (country_id, permission_id) = (1,1);
In my case, I didn’t know about that at all. The maintainer was really supportive from the start, and he took the teaching role. It turns out that this tuple-like syntax is available in MySQL, SQLite and PostgreSQL.
With that solved, I thought the contribution was good to go (yay!). But then another comment arose:
… I think fixing …
It turned out that, to complete the tuple-like syntax, there was another bug that needed to be fixed in order to finish the feature. With everything solved, including the bug fix, everything was ready and in place to be part of the library.
Great, more technical growth, anything else?
So far I have been just pointing out all the technical stuff, but that’s the result of applying several soft skills, and I would like to address the most important ones:
Effective communication is important not only when building software, but also in a daily basis. Being able to receive feedback, ask the correct questions, and be willing to collaborate constantly can help you to solve problems faster and more efficiently.
Having the willingness to learn must be on par with being flexible. Software is subject to change at any moment and with new things you didn’t know at first hand. Constantly learning and adapting to changes will help you to be successful in handling changes in your application.
During October 2019, Stack Builders was responsible for a total of 24 OSS contributions and some of them were accepted also for the Hacktoberfest event. Among these contributions, some of them are from libraries used world-wide including: Sequelize, Express, ValidatorJS.
This is how we show how much we care about giving back to the community. These contributions started with libraries or tools we use on a daily basis, but we didn’t stop there, we also did an effort to upgrade or mantain our own libraries including hapistrano and dotenv.
We hope that these upgrades would help you and other developers in their projects.
After this experience, I like to think that having a deep technical background will help you to be a great software developer but, why don’t you take a step forward and become a great software consultant?
Becoming a software consultant requires a set of soft skills aside from the technical background. By practicing some soft skills and applying them throughout the day, it would help you become more reliable not only in your work with clients, co-workers, etc. but also in the OSS community while helping people to learn new things, making code reviews in libraries you help maintaining and so on.
Here at Stack Builders, we like to push the boundaries of the software industry with proactive staff and agile methodologies. We think that mastering a set of soft skills aligned with the agile manifesto has helped us in doing so.
As a result, we would like to invite you to start pushing your boundaries and become a better professional.