Lately, I’ve seen - and heard - a number of my fellow indie developers who assert that they just don’t need version control for their projects, for a variety of reasons.
This of course is completely false. Yet merely explaining why this is false would do nothing to help said indies understand why I assert this view of version control is incorrect, because in speaking with and reading posts from these developers, it appears there are a number of misconceptions surrounding version control in this community.
The objective of this post is threefold:
- To remove the misconceptions about version control.
- To explain why version controlling your project is beneficial and preferable to some shoehorned archival process, and
- Finally, to give some information about free/inexpensive ways to implement a version control system for your project.
Misconceptions of Version Control
Misconception: “A control system will not help me archive my project. Dropbox works just fine.”
Reality: False! Dropbox provides a shared space for storage and collaboration, yes. What Dropbox lacks is the ability to create branches, revert to previous changesets, log work, or document comments about a changeset - all useful things whether working solo or in a team.
The people who advance this argument are typically graphic artists, though some programmers have also advanced the fallacy. Often, the reason cited is complexity: “a version control system is overly complex compared to simply putting a file in a folder.” This is false; in most version control systems, it’s easier - you keep the change where you left it, right click the folder, and select an option to perform a commit to the repository in question, and write a small comment about what you did, for posterity!
Even if a practitioner of a different discipline has a different setup - for instance, an artist commits a UV texture from their sole commit folder, and a programmer pulls it down into a full asset structure - it matters not! The artist sees what they need to. The programmer sees what they need to.
Misconception: “Version control systems are only for programmers.”
Reality: False! Version control systems exist not only to store assets and information about the things that changed, they exist to provide a backup point. What if Joe the Artist’s best friend comes over to his house, downloads some malicious software that erases Joe’s hard disk? Not much of a problem if Joe has committed his work to a remote repository; he would have to re-setup his computer, and checkout his little branch of the project.
Joe the Artist has been saved by an archival system intended to support an entire team, not merely a programmer’s tool. I would like to add, at this point, that just because a programmer uses something does not mean that it’s simply not a tool for artists as well.
EDIT (@imaginaryhuman’s concerns) - Modern version control systems have a generally user-friendly front end (TortoiseGit and TortoiseSVN are two such front ends I have direct experience with) that insulates the user from really technical stuff and lets you easily perform the basic tasks (commit, checkout, etc.) It’s incredibly easy, many consider it intuitive, and the installers typically don’t ask you difficult/technical questions. You do not have to be a programmer to use these well enough to do your job.
Misconception: “Version control systems are difficult.”
Reality: If you’re a project manager charged with keeping track of various branches - kind of like what a AAA studio would encounter - then, perhaps. For us indies, with our limited scopes, this is not usually the case at all! In fact, shell extensions like TortoiseSVN, and TortoiseGIT (both favorites of mine, for their easy shell integration and cost of $FREE USD) have been or are constantly being refined to be more user-friendly as they progress!
Speaking as a version control user, I prefer Git for various reasons, but using Git via TortoiseGIT is probably one of the easier ways to start using version control. The fact that free remote hosting options, like GitHub, exist only helps ease the barriers to entry. BitBucket also has an excellent, and private, free package as well!
Is Git perfect? No, but I can nitpick any bit of infrastructure. However, it gives you the crucial archival abilities defined above, most notably the ability to recover from catastrophic conditions with a minimum of pain. I don’t care how much you love DropBox, it can’t do all that for you. Sorry.
Misconception: “Version control takes control away from me.”
Reality: Completely False! Version control gives you freedom to experiment more readily, because you can move between existing commits, or salvage file state from an earlier commit. If you’ve been working on a super-duper awesome 256x256 sprite, but you decide that the one you made a week ago looks better? Just, go back to that commit, and use last week’s version instead.
Some of this may come from the name, which honestly, I have a problem with. It should something along the lines of, “Project Snapshot System”, I feel, because that’s what modern version control systems are. All you’re doing when you commit is taking a snapshot of some file substructure, and pushing it somewhere else for safekeeping. For those who have been led to believe that version control is some robot that controls what puts out versions of your software? It’s not, that’s your job! All version control does is keep track of the snapshots for you.
So, why is Version Control good?
To reiterate - version control is far more than a structured way of storing your project.
Version control allows you store your project, possibly remotely, stores sets of file changes with records of when they occured, and usually some forms of comments about said changes. This allows your project to be robustly stored in the event of some catastrophic circumstances that would cause partial or complete loss of project.
Version control allows you to create branches, for those hopefully rare times you are forced to work on something in parallel with someone else. For that matter, when collisions occur, version control provides tools to resolve these collisions. This is particularly important in teams, as sooner or later two people will touch the same file, in contradictory ways. If you could not resolve collisions, it would lead to re-do work, which can be significantly expensive to your project.
Finally, modern version control systems provide refined GUI/OS-shell integrated interfaces for performing operations on the repository. Often, it is possible to stage a commit with two clicks on a folder, and some small amount of typing for the comment about your commit. Updating your repository is often even more trivial than that, usually a right click and a left click (and some waiting for the small file download from the repository.)
If you don’t believe these are useful, please see the misconceptions section above. Most of the reasons I’ve encountered from my fellow developers are addressed up there.
Ok, sounds good. I bet getting set up is tough, right?
Version Control Tutorials By Asvarduil
With Subversion, one of the slightly older systems out there, it can require a little bit of thought (you can read for yourself a few ways here. It used to be worse, when I was in college, but fortunately some better packages like VisualSVN have been introduced.)
Fortunately, I would like to expound upon the ease of getting started with TortoiseGIT. You don’t need specialized server and client software; it’s all inclusive, because every end user is a copy of the database, making it extra robust against catastrophic data-loss. What’s more TortoiseGIT makes performing standard operations a breeze.
Conclusion
If you are using DropBox as your archiving option, and you have read to this point, and you see the merits I am speaking of, do yourself a favor and stop using a file sharing site for version control. It is not. I have provided two sets of simple options that can be implemented in about as much time as it takes you to make a couple of sandwiches, that are user-friendly, efficient for managing, and will protect you from getting smacked full-on in the face by Murphy’s Law (for the most part.)
I hope this ‘short’ post has helped you to better understand the options that are out there for archiving your project, why they aren’t just for one discipline or another, and how to efficiently implement them in your own project.
Final thought - DropBox is for file-sharing. I recommend using it for just that. It is not a file control system!