We designed VersionPress to be usable by everyone so that the users don’t really need to know, or worry about, the technology we use behind the scenes. However, the geeks amongst you will be delighted to know that we use Git, the world’s most wide-spread distributed version control system. This has many advantages which I’m going to briefly talk about.
Why Git is so important
Generally speaking, there are many ways to implement version control. For instance, WordPress chose MySQL tables to store historic revisions of posts and pages and Wikipedia did something very similar. DropBox, for example, probably uses some kind of file-system-based versioned storage of their own. We also considered a couple of options but decided to go with Git, despite some of the technical challenges this brings.
We strongly believe in our decision for a couple of reasons:
- Git is a very solid piece of software used by millions of developers around the world. It is dependable, actively developed, cross-platform etc.
- Git has many features built-in. You see, storing historic revisions somewhere is relatively easy. The hard part is to be able to diff those revisions, merge changes from several branches, support reverts (reverse merges) etc. Git has all this sorted and there is a much higher chance that they did that properly than we would be able to.
- Git is an “open format”. If you’re a Git user, you can work with our repository using the tools you like, or integrate with sites like GitHub and BitBucket easily. If we used some custom versioning storage, all this would be highly problematic, if possible at all. We want you to be in control of your data.
Is Git required on the server?
There is one challenge that choosing Git brings: how do we support a common LAMP hosting? We get this question a lot so I’d like to answer that.
In our current prototype, and this will probably be the truth also for our initial release, we count on Git being installed on the server. However, we know that the common hosting scenario is important and we will certainly support that as soon as we can. There is a way.
That way is based on implementing Git commands that we need for VersionPress in pure PHP. There are even projects that are trying to do this independently on us so in the best case scenario, we’ll just use some of those existing solutions. But even if we don’t find a suitable one, we’ll implement this on our own. The reason why we don’t promise common LAMP hosting support for v1 is that it is relatively a lot of work and we don’t want to promise what we’re not sure we can deliver.
To sum up…
Having Git behind the scenes is one of the most important design decisions of VersionPress, and one we strongly believe in. It means that you get proper version control, not some half-baked solution that can only do so much. We want VersionPress to be perfect :)