Developing with Version Control using Dropbox?

At this point I will suppose that everybody knows what Dropbox is; otherwise I would suggest visiting its Wikipedia page to read more.

What is a version control? This does not make the purpose of the article either, but I will provide a brief introduction of what a version control can do:

    • tracks changes of your files
    • manages conflicts made by multiple changes of the same file by multiple developers
    • supports branching and merging (branching happens when you want to experiment (or work on a new feature) without affecting the main set of files)

Bryan Bradow, programmer at MicroStrategy, a leading worldwide provider of enterprise software platforms, wrote a really interesting blog post attesting the power of Dropbox as a version control system with the title “Developing with Version Control Using Dropbox”. Bryan argues this with the following statements:

  1. Dropbox is a little more subtle that regular Version Control Systems as Subversion or Git
  2. You don’t have to do anything as far as check in/ check out
  3. Never think about back-ups and any modification is synced and versioned

All of the above arguments I stand against in the following sections as they do not provide any reason for which Dropbox is to be used as a Version Control System.
I find it a little bit intriguing that a programmer can recommend Dropbox as a Version Control. Also many students confuse Dropbox to a version control system and frequently use it for individual university projects. Not once I have heard when starting a group programming assignment “Ok guys, I’ll start by sharing the Dropbox folder.”.

1. “A little more subtle that regular Version Control Systems as Subversion or Git”

By a little more subtle, Bryan probably refers to the inability of Dropbox to support merging or branching.

In the case of a small individual project these might not be needed, but under no circumstances these tools could miss when a bigger project is developed with multiple developers. The power of systems like Git and Subversion stands in their ability to branch projects and merge branches them at any given time. This way each individual developer can work on its particular part of code, without worrying about the work the others are doing.

Therefore, a system that does not support these two powerful tools cannot be considered as reliable for a programming project with multiple developers.

2. “You don’t have to do anything as far as check in/ check out”

Yes, I agree with this statement. You never have to check in or check out, but you can never save the state where you are to return to a past state of all your files project.

Let’s say you just finished the first part of your project. A reasonable choice would be to save the state of your project until that point and commit all changes in a version control system with a message probably saying “Part 1 completed and working”. This way you could always come back to this stage of the project if something goes wrong along the way.

If you were to use Dropbox, you would probably have to save the date and time when you finished “Part 1”. You would have all the versions of the files that you modified and you’d probably have to revert manually all the files in the project back to the last version close to the date and time when you finished. That really does not sound like a reasonable way of action. Dropbox is great when you have a number of documents/ photos/ presentations that need to be in sync on all your devices and that should be it.

In conclusion, the check in/ check out when this does not help you if you need to go back to a previous state in the way version control system would. It just saves your current progress.

3. “Never think about back-ups and any modification is synced and versioned”

Sound like a great plan, but what happens if you forget Dropbox turned off or something else happened? There can be days until you realize that your system did not back anything up.

Many times we have problems with the internet connection, either is the weak signal from the router or the small upload speed. Sometimes I tend to close the programs that stay connected and exchange information online every minute such as Dropbox, uTorrent, Google Drive, etc. . Not once I turned off Dropbox and then realized after a couple of days is not in sync, when I was trying to access a Dropbox folder from a remote computer.
Another plausible case is that your Dropbox application gives you an error and you have to turn it off. You could very easily forget to turn it on again and so the sync of your files would be done.

Do not try to make your life easily and “never think about back-ups”, something can always go wrong and it is better to realize it earlier than later. When you are using a Version Control System, every time that you commit something and push it to your repository you receive a confirmation that everything worked well and your files are save, this not being the case for Dropbox.

Conclusion

Using a Dropbox is definitely not a substitute for a version control system as I presented in the upper sections. Many programmers tend to use dropbox in addition to version control to keep their repositories up to date on all of their computers (home or work stations), but definitely not as a substitute for it. I definitely hope that in the future novice programmers will be taught earlier that there is no substitute to version control and stop using Dropbox as one sooner.