Recently, we’ve made the decision to switch version control systems here at RemObjects. In the past, we’ve been using a commercial system (i won’t name any names) that has been working very well for us but – very unfortunately – has been much neglected by it’s developers, with no major changes or improvements to the product in years, and even bug-fixes few and far between.
So we started looking around for alternatives, and of course Subversion was considered a good candidate – it’s free, it’s stable and well maintained, and it’s being successfully used by many many software teams all around the globe, from major open source projects to corporate users.
The downside was that all available SVN clients were, well, let’s just say pretty minimalistic, and did not really provide the necessary oomph we needed for our day-to-day work. Version control is an important part of the development cycle, and i’ve found that if your version control system is not a joy and easy to use, you wont use it properly. Yet, almost all version control systems i’ve ever come across seem to be designed to fight the developer every step of the way (and the main reason we got stuck with the current system was that it was about the only one that did not do that, but instead was actually fun to work with).
So, what to do? Simple – we decided that if we want to make the switch to SVN, there were a couple things we had to do. Firstly, we needed to create a tool that allowed us to automatically migrate our existing repository to the new system, without losing history, labels, or branching (done). Secondly, and a much bigger challenge, we decided to write our own front-end client, in order to give us with the best possible day-to-day experience in using SVN, but also to expose convenient ways to do those tasks we need that do not come as naturally in SVN as they should – such as for example the system we use for promotions.
The result (or at least our current state of it, as this will be a work in progress and see continued evolution over the next months) is what you see below: RemObjects Floss:
At this stage, Floss is an internal project, and we’re developing it for internal use only. There is a big difference in effort in creating a tool vs. shipping a product, so for now, we’re concentrating on getting something finished that we can use ourselves, when making the official VCS switch in January. But this is not to say that we won’t reconsider making Floss available, in the future (and until then, you can always try to ask nicely for private beta access ;).
Let me know what you think, and what features you are missing in your SVN client…