Open-source project
TerryCavanagh/VVVVVV avatar
TerryCavanagh/VVVVVV

Free to compile, not free to ship, and a README that is only credits

The source code to VVVVVV! http://thelettervsixtim.es/

8,059 stars607 forksActionScriptNOASSERTION

At a glance

What is it?
VVVVVV is Terry Cavanagh's 2010 platformer, and this repository is the source code release announced on his blog. The README hands you a folder for the desktop version, a commercial site that still sells the game, and LICENSE.md. It carries no build command, no toolchain version and no dependency list, so the credits file is the only real map of who did what.
Who is it for?
Take this repository when you want to read the complete source of a small commercial platformer, or build a personal copy for yourself, and you are willing to assemble the toolchain from tools/ and third_party/ without a written procedure. Leave it if you intend to hand a compiled game to anyone else, because the README says personal compilation is free while sending distribution to LICENSE.md, and a separate License exceptions.md sits at the root.
Can I use it commercially?
Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
Is it still maintained?
Yes. The repository last received commits 1 day ago.
What is it written in?
Mainly ActionScript, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on November 14, 2026, and from our analysis. They are not legal advice.

From daily snapshots

Star history

  • TerryCavanagh/VVVVVV8,059 ★ · +38
Star history
Repository2026-09-222026-11-14
TerryCavanagh/VVVVVV8k8.1k

38 Stars in the last 53 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

Compiling for yourself is free, shipping a build is not

The licence position is stated in three sentences and it has two halves. You are completely free to compile the game for your own personal use. If you are interested in distributing a compiled version, the README sends you to LICENSE.md for more information. And the game itself is still sold commercially at thelettervsixtim.es, with the README noting that buying it is a way to support the work.

So this is not the licence most people mean by open source, and the wording does not pretend otherwise. Personal use is unrestricted. Everything past that has conditions, and the conditions live in a document rather than in the README.

There are two licence files at the root, which is a detail worth pausing on: LICENSE.md and a file with a space in its name, License exceptions.md. Two files means there is a general grant and a set of carve-outs, and neither is reproduced on the landing page. If your use is anything other than a personal build, that is where the reading has to happen, and the README's only job is to make sure you know the files exist.

The README is a credits page and carries no build command

What the README contains is an announcement, a folder name, a shop link, one licence filename, a Discord channel and a credits list. That is the whole document.

There is no build command. There is no compiler name, no language version, no library list and no platform matrix. For a repository that has been public since a 2020 announcement, that is a real gap for anyone who did not follow the blog post at the time, and it is not a gap the file pretends to fill.

The one structural pointer is a sentence: the source code for the desktop version is in the desktop_version folder. So a newcomer knows which of the directories to open first and nothing else. The rest of the top level is visible from the file listing: mobile_version/, third_party/, tools/ and a .gitmodules.

The one place the README does give you something copyable is where discussion happens, and even that is a link rather than an instruction: updates mainly happen on what it calls the unofficial VVVVVV Discord, in the vvvvvv-code channel.

A .gitmodules sits next to third_party/ and tools/, and neither is explained

Three directories in the top level carry the practical weight, and the README says nothing about any of them.

tools/ is where build helpers would live, third_party/ is where vendored dependencies would live, and .gitmodules means at least one piece of that is not in this repository at all and has to be fetched separately. The README gives no submodule command, no pinned revision and no explanation of which project the submodule points at.

That combination is the practical obstacle to building this yourself. A clone of the repository is not a complete build tree: something is missing by design, and nothing on the landing page says what. The person who wrote the announcement post in 2020 almost certainly knew, and the reader arriving in 2026 does not.

The same is true of the .github/ directory, which is presumably workflows, and of the small assets at the root, a logo.gif and .gitattributes. Everything structural is discoverable by looking; nothing structural is explained by reading. For a code base released to be read as much as compiled, that is a defensible choice, and it is still a choice.

ActionScript is the recorded language, and the credits name two later ports

The repository records ActionScript as its primary language. The credits then describe a C++ port for the 2.0 update by Simon Roth, and an SDL2, PhysicsFS and Steamworks port for the 2.2 update by Ethan Lee.

Those four facts sit oddly together and the README offers no explanation. A 2010 indie game that became commercially sold, was later ported twice by named external developers, and whose recorded source language is the Flash-era one, tells you the tree has been through more than one architecture. Which of those architectures is in desktop_version/ is not stated.

The practical consequence is that anyone reading this code to learn from it should not assume they are looking at one coherent codebase. The credit list also names the porting layers specifically, which is a useful pointer for a reader trying to work out where platform code lives: PhysicsFS names a filesystem abstraction, SDL2 a platform layer, and Steamworks a commercial platform layer.

What the language field does say clearly is that the majority of the recorded code is ActionScript rather than C or C++, which is the single most useful thing the metadata tells a reader and the README never mentions.

Updates are discussed in a channel the project itself calls unofficial

There is no issue tracker guidance in the README, no contribution guide link, no code of conduct. There is one channel: the VVVVVV Discord, in the vvvvvv-code channel, and the word unofficial sits in quotation marks in the sentence that introduces it.

Quotation marks around unofficial is doing quiet work. It distinguishes the project's own announcement of where to talk from a claim that the project runs or endorses that space. For a reader it means there is no stated route from a bug report to a fix, and no stated route from a patch to a merge.

The release history is the other signal. Three tags: 2.4.4 on 2026-04-21, 2.4.3 on 2025-06-19 and 2.4.2 on 2024-08-21. That is a gap of roughly ten months then another ten, on a two-component version line for a game that shipped in 2010.

Read together with the Discord arrangement, the picture is a small project with a slow, deliberate release clock and a conversation channel rather than a public process. The last push to the default branch, master, was on 2026-10-23, six months after the newest tag, so the tip of master is not what anyone downloaded.

Two text files inside desktop_version/ are the canonical credits

The credits list is the most substantial part of the README and it is worth reading as a map rather than as a roll of honour.

Terry Cavanagh created the game. Magnus Pålsson wrote the music. FamilyJules did the metal soundtrack, which is a separate credit from the main score and easy to miss. Bennett Foddy is credited for room names, which is an unusual line item and tells you a level designer worked on naming rather than geometry. Misa Kai contributed additional code, Sam Kaplan and Pauli Kohberger did the beta testing, and Pauli Kohberger also made the ending picture.

The last two entries are pointers into the tree. Localisations are credited to the localisation teams with the path desktop_version/TRANSLATORS.txt, and further contributions are credited to many others with the path desktop_version/CONTRIBUTORS.txt.

Those two files are therefore the canonical record of who is in this project, and they live inside the version folder rather than at the root. Anyone taking this repository seriously, porting it, translating it or auditing it, will end up reading those files first, and the README hands you their paths in the two lines most people skip.

No licence identifier is recorded, so a scanner has nothing to match

LICENSE.md and License exceptions.md are both present at the root, and the README names LICENSE.md. What is not present anywhere is a machine readable licence identifier: the repository records none.

That gap only matters if something is reading the metadata rather than the files, and that is exactly what dependency scanners, allowlists and compliance inventories do. A tool that finds a LICENSE.md can show you a human to read it; a tool that finds no identifier has to fall back to an allowlist entry or an exception.

This is a small thing about a widely mirrored repository, and it is not a criticism of the licensing itself. The terms are written down, and the README is explicit about the personal-use boundary. It is a reminder that when a project is best read as source rather than consumed as a package, the package-shaped metadata tends not to get filled in.

The other metadata is ordinary: the default branch is master, the repository is not archived, and the homepage field is empty even though the README links the official site and the blog. Whatever is true about the commercial arrangement, it is not expressed in the fields a machine reads.

Editorial conclusion

Take this repository when you want to read the complete source of a small commercial platformer, or build a personal copy for yourself, and you are willing to assemble the toolchain from tools/ and third_party/ without a written procedure. Leave it if you intend to hand a compiled game to anyone else, because the README says personal compilation is free while sending distribution to LICENSE.md, and a separate License exceptions.md sits at the root. Verify three things. Read both licence files before you build anything you plan to share. Then work out what .gitmodules and third_party/ actually contain, because nothing in the README says and there is no submodule command to copy. And plan around the release clock rather than the commit clock: 2.4.4 was published on 2026-04-21 while the last push to master was on 2026-10-23, so anything you build from master sits past the newest tag.

Frequently asked questions

What is in the VVVVVV repository?

The source code to VVVVVV, the 2010 indie platformer by Terry Cavanagh with music by Magnus Pålsson, released as source with an announcement on Terry's blog. The desktop version's source is in the desktop_version folder, and the top level also carries mobile_version, third_party and tools directories, plus a .gitmodules file.

Can I compile and distribute VVVVVV myself?

The README says you are completely free to compile the game for your own personal use, and that if you are interested in distributing a compiled version you should see LICENSE.md for more information. A second file, License exceptions.md, sits at the repository root, and the game is still sold commercially at thelettervsixtim.es.

How do I build VVVVVV from source?

The README does not give a build command, a toolchain version or a dependency list. It points at the desktop_version folder for the desktop source, and the repository carries submodules alongside tools/ and third_party/, so a plain clone is not a complete build tree.

Where do VVVVVV updates get discussed?

Mainly on what the README calls the unofficial VVVVVV Discord, in the vvvvvv-code channel. The game itself remains commercially available at thelettervsixtim.es, and the source release was announced on Terry Cavanagh's blog.

Who worked on VVVVVV?

Terry Cavanagh created it, Magnus Pålsson wrote the music, FamilyJules the metal soundtrack and Bennett Foddy the room names. Simon Roth did the 2.0 C++ port, Ethan Lee the 2.2 SDL2, PhysicsFS and Steamworks port, and Misa Kai contributed additional code. Localisation credits are in desktop_version/TRANSLATORS.txt and other contributors in desktop_version/CONTRIBUTORS.txt.

Is VVVVVV still being updated?

It has been released on a slow clock: 2.4.2 on 2024-08-21, 2.4.3 on 2025-06-19 and 2.4.4 on 2026-04-21. The last push to the default branch, master, was on 2026-10-23, which is after the newest tag, so master carries work no release includes.

Official sources

  1. Issues
  2. README
  3. Releases
  4. TerryCavanagh/VVVVVV on GitHub
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/terrycavanagh-vvvvvv.svg)](https://hysenlabs.com/projects/terrycavanagh-vvvvvv)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/terrycavanagh-vvvvvv.svg)](https://hysenlabs.com/projects/terrycavanagh-vvvvvv)

Was this useful?