April 15, 2015

Version Control and Its Role in Continuous Delivery

Version Control
Continuous Delivery

I recently had the honor of participating in the Version Control episode of #c9d9, the Continuous Delivery (CD) 'Continuous Discussion' series hosted by Electric Cloud. Along with panelists from Macy's, GoMidjets, Sonatype and Electric Cloud, we asked four questions about version control and CD: 

  1. Who should use/what should be in version control?
  2. How does version control affect your CD pipeline?
  3. How will version control evolve?
  4. What are your version control horror stories?

While all the panelists recognized the importance of version control—given all the evidence linking it to high-performing companies—there was a lot of debate on whether there should be a single source of truth which stores all content related to a product release, or if libraries and compiled executable should be kept in a different system such as Nexus.

A point that both Anders Wallgren (CTO at Electric Cloud) and I brought up at different times was that it’s important to decide what processes to follow and then choose the tools to support those processes, instead of the other way around. Personally, I believe that not storing binaries in version control was the result of limitations of version control systems – not a rejection of the concept (nor process) of versioning everything in a single source of truth.

Performance and complexity of CD pipelines were the two areas where the version control system has the most significant impact on the overall successes (or failures) of CD initiatives. This kicked off the next topic of the evolution of version control.

Version control is no longer something that only developers depend on. Developers, testers and operations staff all use version control in their roles. Downtime, slow performance, support issues all impact the bottom line. Additionally, as other teams in the organization adopt version control, the consequences of choosing a version control system that doesn’t fit the needs of multiple personas will only worsen. Version control is already being used by designers, musicians and engineers working on multitudes of file and data types. Supporting users no involved in software development is no longer an “if” but a “when” scenario for most organizations. For example, designers at sporting goods giant Adidas use Perforce for version control of their shoe lines. You can learn more about the impact Perforce has had on the organization from the presentation they devliered at Perforce MERGE 2014

Last but not least, we discussed version control horror stories. Forgetting to check in code, not testing backups, and integrations allowing users to do silly things. Remember folks. Friends don’t let friends code without version control.