As of today, we’re a week into hacktoberfest, and I’m wondering: how is it going for you? Have you completed your four pull requests yet? If not, may I interest you in a project that is open to pull requests from anyone who has programming experience. Don’t believe me? Keep reading!
Table of Contents
What Is the Sample Programs Repository?
In early 2018, I was in the middle of a transition between industry and academy, and I was looking for a way to take advantage of the free time. Back then, I was interested in learning programming languages, so I decided to leverage 100 days of code to write one hello world program in a new language every day.
During that journey, I started writing articles to describe the programs I had written. It was a great way to get exposure to various programming languages, so I kept doing it for awhile.
Of course, after several dozen languages, I decided I had enough of surveying the landscape. As a result, I figured it was time to expand the collection to include other types of programs. For example, the first two programs I added were reverse a string and game of life. Together with hello world, the Sample Programs repository was born.
Today, the Sample Programs repository features an overwhelming 162 programming languages and 604 code snippets. Of course, these numbers are always growing, so the collection could feature many more code snippets by the time you read this. Also, remember how I mentioned the collection featured three types of programs? Well, now it features over 40.
In short, the Sample Programs repository is a collection of code snippets in as many programming languages as possible. Why not come share you knowledge with us?
Who Is Eligible to Support the Sample Programs Repository?
At its core, the Sample Programs repository has always been a place for learning. As a result, anyone should able to make a contribution regardless of size of impact.
As a result, I think the best way to approach the Sample Programs repository is to use it as a tool for learning a new language. For example, Julia is a relatively new programming language that has a lot of support from its community. However, it lacks support in the Sample Programs community with currently only 7 of the possible 40 code snippets completed.
Another thing that is cool about the Sample Programs repository is that it’s not all code snippets. We also have built-in testing for as many of our code snippets as possible. Unfortunately, this feature was added more recently, so it’s not totally fleshed out. As a result, if you’re interested in working on testing, there’s more information on that in the next section.
Like testing, we also support documentation. For example, if you check out the Python README, you’ll see a list of programs in the repo. Anything marked with a green checkmark has documentation. As a result, if you’re interested in supporting our documentation efforts, there’s more information on that in the next section.
Beyond that, I generally encourage anyone who’s willing to support a project like this long term to check it out. Or at the very least, check out our Discord and get to know some folks who are writing code for the Sample Programs repo.
What Kind of Work Can One Accomplish During Hacktoberfest?
Previously, I talked a bit about the major facets of the Sample Programs repository that folks might find interesting. That said, the vast majority of work that goes into the repo during Hacktoberfest is code snippets. Then, throughout the year, we spend a lot of our time getting ready for the next Hacktoberfest. However, why limit yourself? Here’s a list of the types of things you can help us with this Hacktoberfest:
- Contribute code snippets to less popular programming languages (e.g., Julia, Clojure, etc.)
- Write tests in Python for currently untested projects (e.g., maximum array rotation, etc.)
- Write tests in YML for currently untested languages (e.g., quack, etc.)
- Write documentation for the copious amounts of undocumented code snippets (PLEASE)
- Develop a prettier Jekyll website for the documentation
- Assist in various automation tools for the repository
If any of these things interest you, feel free to reach out. Alternatively, you can head straight over to the Sample Programs repository and read the contributing doc for more specific details.
In general, however, we are going to try to resist new projects as we’re already quite behind on testing and documentation. If you have any ideas for new projects outside of the 40 existing projects, we ask that you write documentation and testing for them before we’ll accept any code snippets. In other words, you’re welcome to contribute to the popular languages as long as you’re willing to define new projects fully.
How Do I Support the Sample Programs Community?
If Hacktoberfest isn’t your thing, but you’d still be interested in helping out the community, there are several ways to do that. First, the Sample Programs repo is maintained by The Renegade Coder organization—or rather myself. In other words, any of the ways you can currently support The Renegade Coder will also support the Sample Programs repository. For example, here are just a few ways you can help out:
Also, if you’re interested in keeping up with what’s going on in the various Sample Programs repositories, I maintain a series about exactly that. Check it out to learn more about the history of the project.
Likewise, I’m not the only one who continues to maintain this repository. As always, there are many, many folks that deserve thanks. However, none deserve more thanks than @auroq who was responsible for getting the testing off the ground for the Sample Programs repo. Feel free to give them a shoutout!
While I’m here, I should mention that I recently made a template repo, so folks could make their own Sample Programs repo. Maybe this Hacktoberfest, forget the Sample Programs repo. Make your own! I’d love to see how folks make use of that template.
With that said, that’s all I have to say about this year’s Hacktoberfest. If it’s your first time, I hope you get a chance to find a community that supports you.
What courses do you think CS students need? I'll take a stab at it with three courses that I'd love to teach.
If you're learning a new programming language, sometimes it's helpful to compare its syntax to something you already know.