
WebDev, HTML5, Modern Programming, Open Tools, Open Languages: Call it what you will, the wider world of programming has finally made its way into AV integration.
We can always count on our upstream vendors to offer (sometimes with, oh, let’s say “strong encouragement”) new products that depend on development tools, but they come with a host of implied requirements that are left to various teams. Version control is at the top of that list.
Like most AV control programmers, I was used to manual ad-hoc version control: file names with revision numbers and folders to separate projects. I considered our SharePoint and OneDrive integrated file system a sufficient step up from the “find the last person to work on it or his old laptop” strategy to last us for a while.
My first forays into C# put an end to that thought. Modern build and compile tools create and destroy many small files rapidly, a process that breaks OneDrive and allows OneDrive to break the build and corrupt data. We needed a solution designed for our purpose.
Git leaps out as an obvious option, as it is far and away the most popular version control system. It is robust, distributed, and open source, with help and add-on software readily available. Unfortunately, it comes with some built-in assumptions that conflict with our legacy file types and users:
After realizing that the second most popular version control solution, Subversion, has seen a lengthy downward trend in hosting and new adoption, we decided to accept the challenges and commit to Git as version control for all our code.
In a way, this mirrors the business logic driving the adoption of open languages. They don’t suit our current workflows and projects as well as our legacy tools, but are so far ahead in features and support we need to interoperate with the larger world that it is worth the effort of migration.
A step back, if you will, to discuss exactly what Git is. It is version control software, a category frequently misunderstood. At its most basic, a version control system tracks changes to files over time and allows users to retrieve the file set as it existed at any marked point in history. In Git, those markers are called “commits”. Though Git tracks changes in folders, it is more like a database than a file system, passing contents back and forth to a folder but keeping pristine copies in the repository.
Modern version control systems also facilitate collaboration with tools to reconcile changes made concurrently by different contributors. At American Sound, it is common for control programmers to write code that is dependent on DSP configuration files made by audio engineers. With careful use of Git repositories, we can capture the versions of all these files that make up a working system, incorporating the changes made by different people working on different computers. We can bring field changes into safe storage as a basis for the next revision, and we can deliver a known good set of files to our customers.
It has taken the better part of a year and significant effort in testing and rollout, but we are successfully using Git to manage our code. It is very gratifying to discover that our solution can gracefully expand to meet new demands for collaboration with other internal teams and our external clients. Our latest refinements provide version information for entire systems, sites, and clients, saving time and effort on every project.
If you are an integrator and haven’t yet adopted version control, you’re probably facing the same difficult choice we did: when and whether to put in the work to change workflows. We’ve found it more rewarding than we’d hoped and wish we’d started sooner. You may find the same. And if you're an organization that has control systems of your own that you're in charge of, and regularly have to maintain or collaborate on control development with your own integration partners, we'd recommend this path for you as well.
Pat Santucci
Director of Research and Development
patsantucci@asei.com
American Sound is an AV and IT systems integrator and software development partner of Appspace, Q-SYS, Utelogy, ServiceNow, Crestron, Cisco, and many more. For more information about our software development capabilities and open source tools, please visit our GitHub (https://github.com/American-Sound) or reach out to us at marketing@asei.com.