/arcade-constitution

Arcade. What is it? Why is it? Where is it going? Let's find out.

MIT LicenseMIT

𝒯𝒽𝑒 π’œπ“‡π’Έπ’Άπ’Ήπ‘’ π’žπ‘œπ“ƒπ“ˆπ“‰π’Ύπ“‰π“Šπ“‰π’Ύπ‘œπ“ƒ

Arcade is a game where you get prizes for building, documenting, and shipping projects.

The spirit of Arcade is for you to build stuff in a hacker mindset. Start a project, push it to an MVP as fast as possible, publish it, then iterate quickly. We have rules and standards for review, but the ultimate thing those rules are trying to get at is "are you doing real work on personal projects in a hacker mindset".

This is the first draft of a living document defines "what counts" for the Hack Club Arcade. It should be a short and sweet reference for Arcade players and reviewers alike. Comments, pull requests, and questions are welcome.

The Essential Phases

Arcade has three essential phases:

  1. Build projects and log your hours with /arcade
  2. Document progress in a git-based versioning system
  3. Ship a shareable version in #scrapbook when it's ready

After you ship, you'll get a ticket for every hour that passes review. Spend these tickets with /shop

What counts as a "Project"?

A project is a self-directed creative effort toward an output that other people can meaningfully experience.

Fine Print
  • leetcode or similar challenges do not count
  • Homework or work done for a job/commission are not self-directed and therefore don't count
  • Projects started (but not finished) before Arcade are okay, but only the work done during Arcade can be logged
  • Tutorial projects that are 1:1 copies of the tutorial do not count. If you're doing a tutorial, you need to "make it your own" in some way

What counts as "Documenting progress"?

The journey of each project must be shared in a public git repository, with at least one update committed per hour logged.

Fine Print
  • Every update needs a link to the git commit for that hour
  • For code or other text-based content, put the actual code in the repo. For everything else, images or videos are fineβ€”in the repo though!
  • Any git-based system is allowed, but GitHub is preferred. Many of our review automations are built around GitHub, so other systems may be more annoying for you to use.
  • When submitting a single session scrapbook, you are required to include 2 mini-scraps throughout the session to help our reviewers clearly understand your progress. It is a progress update (not necessarily a git-commit) showing your progress through this part of the session. This could be screenshots of art or CAD or product of your code, or git commits, multiple times throughout your session and sent in the thread.

What counts as "Shipped"?

A shipped project must be shared in a way that other people can experience to the greatest possible extent.

Fine Print
  • Your repo needs a README
  • Ships must be shared in the Hack Club Slack with a post in #scrapbook. They also need a screenshot or video or URL to experience the thing
  • There must be a component of the ship that can be experienced by people in Slack
  • For digital but non-code projects, a fileβ€”and, for some online tools, a linkβ€”of the "most native" type for the project must be included. STL and .blend for Blender, PNG and project link for Figma, Gerber file and CAD file for PCBs, STEP export and STL for CAD (with a link for OnShape projects), PNG for and source file (PSD, XCF, etc) for digital art…

Some examples of "native" websites diffferent types of projects are below. Keep in mind, this isn't an exhaustive list, but a big part of "shipping" a project is getting others to experience it & this is a good way to do that.

Python Projects

In particular we find python projects are often the hardest to ship. A couple approaches you can take:

  • If you have a package, you can publish it to PyPi
  • If you make a game or executable, you can publish it with pygame or pyinstaller
  • If all else fails, you can publish it to GitHub and include a requirements.txt file & a poetry.lock file & cut a release

Many python projects end up being just a script.py file in a repo, which isn't a real project because it may only work on your machine. Keep in mind that the goal is to make your project accessible to others & everyone has different versions of python and different dependencies installed.

The Essential Vibes

The gray areas of "what counts" are ultimately resolved with a vibe check. Here are some vibey questions we may ask ourselves when assessing whether something counts for Arcade:

  • How technical is this project?
  • Is this person pushing themselves?
  • Does this project feel wholesome?
  • Is this a highly self-directed project?
  • Is this a good story?
  • Am I amazed?

These are not criteria or requirements, they are just vibes. But when a project is in a gray zone, these vibes guide our decisions.

Other Rules

  • This is a living, changing document. Rules have changed and will continue changing. For practical reasons we have to enforce whatever the latest rules are, even for hours that were submitted before the change.
  • You can't bank more than 25 hours at a time, because of arcane technical reasons, but also because you should be shipping and iterating on a loop tighter than 25 hours
  • If you use an AI tool to generate code, explain broadly which tool and how you used it at the top of the file. Using AI is fine but we are going to make a judgment call on how much we consider it to be "your work". Undeclared AI is considered plagiarism, so please be honest
  • If we think you have knowingly submitted something fradulent, we will either give you negative hours or just ban you outright
  • Nothing that breaks the law or facilitates breaking of laws, please

Happy Hacking!

Build stuff, get stuff, repeat. All summer. (ends August 31st)