By now just about everyone knows about Dropbox, the simple file syncing/sharing and online backup solution. The software is available for several operating systems and is very fast and intuitive. It even has a good online interface so you can access your dropbox from anywhere.
But did you think about using it as a poor man’s CVS? It’s actually a really good solution for personal projects, or for a small group of people working on a project. I have fallen in love with the service for several reasons.
It’s free. Your free account will give you 2GB of storage to start, if you play their new user game or viral marking game then you can easily get 3GB on your free account, which is far more than you will ever use for source code. If you do end up needing more space, they offer pay subscriptions for 50GB and 100GB, costing $10/month and $20/month. Personally, I’m sticking with the free plan.
It’s fast. When I am actively working on a project my changes are uploaded and synced to my other computers in seconds with no performance impact on the computers. The system works by only sending the delta so it doesn’t upload an entire file every time it changes. It is even smart enough to sync over the network so it uses the least bandwidth.
It’s easy. I don’t have to worry about proper commits or forgetting to check something back in at 2am, when I save the file it is automatically synced up. Sure it’s not as advanced as a real repository, but it is just so simple. After all, do you really need branch and merge on your freelance project or web design?
It has versioning (kinda). Dropbox even has a versioning system, although it’s not designed for code. You miss out on nifty diff and blame tools. But on a small project you probably already know who to blame. Unfortunately they only keep versions and deleted files for 30 days unless you have a pay plan. I really wish they’d give that out for free.
Personally, I use dropbox as a personal VSS and backup for all of my projects. It is really nice to know that my work is backed up with some version info in one central location as well as distributed to all of my computers.
It’s an off-site backup. It is very important that you keep your hard work backed up. But just copying it to an external drive isn’t enough. You need to have an off-site backup in case something terrible happens. This is something else that dropbox does well.
The other option
If you don’t mind giving your code to anyone in the world who wants it, GitHub is still the free code repository of choice. You’ll learn to deal with the quirks of git after a while, though it does have a rather steep learning curve. However, if you want to keep your code private and want to have a lot of projects, GitHub will get pricey very quickly. Since I don’t want to release the code for my personal stuff, GitHub simply isn’t worth the cost for me. My personal projects are saved on dropbox, and my work projects are saved in the company’s VSS.
For big-project work in a multi-developer environment dropbox will certainly not replace your CVS/VSS/SVN/GIT code repository. Having tools like diffs, branches and merges integrated into the repository is absolutely required in a corporate environment. But for one man projects or freelance work where you can’t really justify the cost or the time for managing a real code repository, dropbox is a good choice.
Updated: Mar 17th, 2010
Great article, I love DropBox myself too :)
Quick question: Do you work on your solution files within the DropBox folder or do you copy (as a backup/check in) to your DropBox folder after working from a different local folder?
The reason I ask is that during the course of normal software development you will be saving minor changes to a whole array of files (minor like adding or removing whitespace) each time you run or compile your project that DropBox may get confused (does it?) and/or you end up with a rather huge history of files.
Personally, I do all of my work out of the DropBox folder, that way I can just work and forget about the syncs happening in the background. I’ve never had any issues, DropBox updates are just so fast, it syncs small files in a second or less after saving. Files that I have been editing do build of a large history fairly quickly. But since the free version only keeps this history for 30 days it isn’t a big deal to me.
If I had a subscription version of DropBox I might consider doing a check-in/check-out kind of system, but it probably wouldn’t be worth the effort (for me). It’s easy to spot a bunch of minor updates in a file’s history, because they usually happen over the course of a couple minutes.
The files with the most updates are also the files that you care the least about, objects, pdb’s, dll’s and executable files. I can see the history on these becoming huge but you will probably not find much use for the history of those files.
This system is one of the “just works” tools for me. I set it up and forget about it. I just wish they would give out permanent history with the free version. :)
After much soul-searching and far too much digging into SVN documentation, I finally decided to give Dropbox a try for a poor man’s repository. I’ve been using it previously for a while now to sync and move files to and from work, but using it as a repository seems to be great so far as well.
There are problems with SVN that just don’t seem to be gracefully solved as a Flash developer (primarily); specifically: handling the needed .fla binary files, some of which can grow to ~8-10MB in size depending on how much assets are in the library (all code is in separate source files); and also handling the additional external assets (XML files, images, etc) needed locally to recreate the server environment during building/debugging.
I’ve got my “repository” set up just like you would with a real repository — trunk/branches/tags folders within each /client/project/ folder — as well as a simple ‘history.txt’ file in the tags folder to track changes for each new ‘tag’ I add.
All on-going work is done in the trunk folder; all stable releases are frozen as duped copies in the tags folder, and tests etc are done as branches. Sure, there’s no merging, locking, or clearer history tools, but as a mostly-lone developer with very little overlap this is just fine.
The best part is that so long as I keep my structure tidy, I should have very little problem moving to SVN in the future shall the need arise. Right now it’s overkill by a large margin, so Dropbox is just perfect in the meantime.
Anyway, [ramble ramble ramble], thanks for the post.
Update! These days browsing for dev tools I found the Bitbucket.org hosted repository.
Check about it here : http://mmmattos.net/wordpress/?p=307
Recently I found some new alternatives on “free” repositories for source code as mentioned in a friend´s blog.
Indeed, some of them offer a free plan, others don´t.
Support for svn and git. Ticket tracking and more.
Check them out here: http://goo.gl/m4J5s
There are a few free Code repositories listed in this article which I’ve just written as well:
I never really thought of using Dropbox I must confess.
I wrote DropboxDiff, a Google Chrome extension which allows you to run a diff tool on your files in Dropbox.
Interesting! I didn’t know people was using Dropbox as a source code repository.