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!
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.
Sample Programs in Every Language
Welcome to the Sample Programs in Every Language repository! What began as a simple 100 Days of Code challenge has expanded into a fun project. Within this repository, you'll find a growing collection of sample programs in just about every programming language to date.
To get up to speed quickly, check out the contributing doc. Otherwise here are some helpful links:
- Wiki: a set of dynamic tables that track every language and snippet in the repo
- Projects: a list of projects currently accepting code snippets
- Discord: an invite to our community discord
- Code of Conduct: a copy of the Contributor Convenant
- License: a copy of the MIT license document
- News: a series of articles about what's happening in the repo
- Template: a template repo, so you can create your own collection
Sample Programs in…
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?
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.
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.
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.