As a member of the freeCodeCamp community, I’m always looking for new ways to encourage early stage developers and help them get to grips with the many challenges facing them in their nascent careers.
One such challenge is overcoming the first Pull Request hurdle so they can begin to contribute to open source projects.
In the past I have maintained small hobby projects and encouraged new inexperienced developers to join in with their pull requests, but this can be difficult because it still requires domain knowledge in specific languages or frameworks.
Nomic is a game in which the main move, initially, is to propose rules that govern the game. Essentially, the game evolves as more rules are added, amended or revoked.
Nomic can be played in person as a regular table-top game, but with a little tweaking it can also be an excellent game to play asynchronously, online.
As an online game, it requires a platform that can handle collaboration, frequently changing files, and a system for tracking votes and approving changes. In all of these aspects, Github excels!
How to Play Nomic via Github
The game requires a little bit of set up if you intend to invite people to play it remotely. Some initial rules that govern the early stages of the game make sense, but keep the number of these low, as you want to let the game evolve naturally. In my version, we track the rules in a RULES.md.
The most crucial part, given the fact it is a Github repo inviting first time contributors, is the CONTRIBUTING.md.
This document should assume your players have not completed a pull request before, and walk them through the entire process.
If this sounds like too much work, you can steal mine (and please submit your own PRs to it, if you feel it can be improved): CONTRIBUTING.md.
From there, encourage your players to submit their proposed rules via pull requests, and decide as a group how you want to communicate your votes (comments, reactions etc).
As Nomic games develop, various scoring mechanisms, currencies, resources and other variables can become relevant. Github provides a wiki feature that is perfect for recording these. See the example here: Wiki.
One amendment I made to the original concept of Nomic was to introduce the idea of Universal Constants.
Normally in Nomic every rule can be changed by vote.
Given the potential for anonymous trolls to infiltrate otherwise harmless games online, I felt it necessary to not only include a code of conduct, but to also make it entirely immutable. Setting a code of conduct as a Universal Constant in your online games of Nomic can increase the potential to find excellent, like-minded players and reduce potential abuse vectors inherent in online platforms.
Come Join Us!
I would love to have more early stage developers play the game with us, since it offers an extremely low friction opportunity to open pull requests and become familiar with the workflows that will become the bread and butter of your careers.
We also welcome experienced open source contributors that just like the sound of playing Nomic via Github. It’s a lot of fun!
Visit https://github.com/JacksonBates/fcc-git-nomic to vote on the current rule proposals and start proposing rules of your own! The game is still young, so you have a real opportunity to influence the path it will take.