SynSVN: Development Environments & Source Control
A common challenge in developing web-based software that requires active development after deployment is managing the codebase and tracking software versions and revisions. This is further compounded by the lack of a standard approach towards the use of development and testing environments and production environments.
As an almost-exclusive developer of web-based applications, we examined the field of available version control solutions and found that the open source Subversion (SVN) software package allows for high customizability and the writing of scripts to interface with its inner workings.
As a result of our research, we set out to build a tool to be used internally to streamline the creation and management of each of the separate development environments needed in place throughout the development of a web-based application. The resulting tool, which we called SynSVN, builds an interface layer over Subversion that allows for the full management of the several different code repositories needed and the creation of a live, production environment clear of all development code, which still maintains the ability to perform rollbacks quickly and easily.
Since we have found that this problem is rather common, we have decided to make available SynSVN as an open source solution. This means that all code the tool is built on is published and available publicly for consumption and modification by other developers. By making open source an internal solution like this, we find that it brings us significant value in the community by way of identifying bugs and adding more features to a tool we make use of day-to-day. We've determined the value added by the community far outweighs any value keeping such a tool proprietary may have brought and are happy to contribute to the developer community in such a way. We're actively releasing the aforementioned Canopy framework in a similar fashion.
We now are able to establish complete development and production code repositories for a given project (even if they span across multiple servers) while still maintaining all version control and ensuring no code changes are ever lost. Having a dedicated testing environment further ensures that bugs and errors rarely if ever meet a user in the production environment, as we thoroughly test all of our releases in the testing environment before moving them forward to production.
