Why Contribute Code to the Open-Source Community?
Not everyone sees the benefits of contributing code to the open realm. That’s what Jesse Gorzinski explores in this post, as this practice is great for both the language and the contributor!
By Jesse Gorzinski04/22/2017
However, not everyone sees the benefits of contributing code to the open realm. That’s what I’d like to focus on today, as this practice is great for both the language and the contributor!
Benefits to the LanguageFirst, programming languages themselves gain incredible value from open-source contributions. Surely, Java* would not have grown its popularity without help from thousands of open-source packages, and the same holds true for a multitude of other languages. The reasons are obvious. For one, a language is more enticing to a company or programmer if there’s a suite of packages already available to accomplish important tasks. After all, why implement a file or socket protocol if someone else has done it for you?
What’s more, a large amount of open-source code means a thriving community for that language. This boosts the language’s momentum. With a large community, there are people to answer questions, examples to guide and inspire, a variety of tools, interesting discussion, new projects, new enhancements, good press, etc. Some call it “buzz.”
As software engineers, we should want to keep this phenomenon going. As IBM i folk, we should want to make sure that all IBM i languages can be beneficiaries of this greatness. I’ll come back to this thought in a few minutes…
Benefits to the ContributorLet’s not forget how open source contribution can benefit the donor. Yes, giving away code is a fulfilling experience. Beyond that, though, it is a path to self-improvement. After all, when a person’s creation is out on public display, there’s an inherent desire for it to be as refined as possible. As such, these contributions tend to be polished and thought through several times (an enrichment exercise for the author). When code is submitted, it is reviewed by the project maintainers. The maintainers may suggest improvements in code style or documentation. Once committed to production, issues may be found or requests for enhancement may be submitted. Users may even send in changes. Working through the software development cycle in a community setting will enhance your programming skills.
And let’s not forget the notoriety! Contributing to public projects is a way to establish yourself as an expert in a certain language or topic area. Some use it to build their resume or reputation. It demonstrates commitment, skill, volunteerism and initiative.
Can I?Yes, you can! Often, people doubt whether they can contribute productively to an open-source project. They may fear a lack of time or skills, or perhaps are simply nervous. There’s no need for this uncertainty.
First off, it doesn’t require a huge time commitment. Many projects are happy to receive code regardless of how long it took to write. A two-line improvement is valued! Maybe there’s an open issue that will only take you 20 minutes to fix. Of course, if you’d like to commit 10 hours per week to a larger piece of function, you can do that, too. You choose how much time to invest.
If you’re just learning a new language, framework or methodology, don’t worry—you can still help! As mentioned earlier, the process will help you learn. In fact, many people learn most effectively with a hands-on approach! It’s a great way to help yourself while helping others.
Also worth noting, there are more ways to help out than writing and contributing production code. For instance, many projects have automated tests that could use a boost. Even more could use assistance with documentation, evaluation, publicity, or organization. Some projects just want people to help brainstorm ideas. Regardless of your skill level, you can be a productive member of an open source team!
Finding a ProjectIf you’re looking for an IBM i-specific project, there is a community-managed open source aggregation wiki with a list of repositories worth checking out. There are more than 70 projects listed there, and any one of them could use your input.
Of course, a project doesn’t have to be specific to IBM i for your contributions to benefit our platform. As you know, many languages (including Ruby, PHP, Node.JS, Java, Python, and Perl) run on IBM i. As such, contributions in these languages will provide value to our OS. And, there’s a near-infinite list of things to choose from. For example, if you were to submit improvements to xlsxwriter (one of my favorite Python packages), you will help the greater software engineering community as well as anyone running Python on IBM i.
As you likely know, PASE has been chosen as the primary vehicle for delivering open source software on the platform. Much of the open source software in existence has been created with UNIX-like environments in mind. Since PASE stems from AIX, a UNIX derivative, it has adapted the platform well for delivering externally-developed open source technology in a much more feasible time frame than could have been done in ILE.
However, ILE code can (and should be) open-sourced as well. After all, don’t we want ILE languages (RPG, CL, C/C++, etc) to benefit from open source in the ways I mentioned earlier? One project in particular that I want to mention is OSSILE. This project is owned by IBM Power Champion Liam Allan. The OSSILE project has a wide scope, including a number of tools and utilities useful for IBM i. It has been amazing to see people stepping up to contribute to this project, and I give a “tip of the hat” to all its contributors! If you contribute to OSSILE, you are helping ILE languages in an invaluable way: You are adding value to IBM i for the greater community, while also providing real, working, tangible examples of ILE programming languages. If someone were looking to learn RPG, for instance, he/she could start by learning and adding to the code in OSSILE. If you’re looking for a way to “give back” to the IBM i community (a desire I’ve heard numerous times on my travels), this is a great opportunity!
Lastly, you don’t need to find an existing project. If you’ve created something of value, you can put it in the open-source domain. For instance, Rainer Ross has posted some cool examples on his GitHub account, showing off how to do SMS, web services and web sockets from Node.JS. I particularly like this project, where he shows how to use a data queue and Node.JS to send SMS messages from an RPG application. Thanks, Rainer!
How Do I Get Started?What if you don’t have any idea where to start? Naturally, there are plenty of resources available on the web. Here is a link to one of my favorites, focused on GitHub-hosted repositories. If you’re having trouble piecing together things, you have the best resource of all: a community. The IBM i open-source community is full of great people who would be happy to help out! On the right-hand side of this blog are links to some of the places our community hangs out. Come see us on Ryver, Slack, Twitter or LinkedIn and ask away!
If you’re fortunate enough to be attending COMMON next month, you should definitely check out the wide array of open-source sessions! There’s one session in particular you should attend if you are interested today’s topic. Kevin Adler is presenting a session titled “Contributing to Open Source on IBM i.” In this session, he’ll cover all the basics, including basics like forking a project and submitting a pull request.
Hopefully by now, I’ve convinced you to explore the idea of writing open-source code. There are many opportunities to do so, and it will bring reward to both you and the IBM i platform. Happy open sourcing!
Jesse Gorzinski is the business architect of open source technologies.More →