The software behind conveyor belts, robotics, and machinery (known as
"Industrial Automation") was stuck in the Dark Ages. When controls engineers needed to change code,
they typically edited project files without version control, attempting to manually track the versions via
filename. This procedure is prone to error, data loss, and lack of visibility.
That all changed when Copia came around. Copia offers a record-keeping system to these
engineers in the PLC (Programmable Logic Controller) space. It does this by packaging
Git with additional vendor extensions and hosting it on a platform similar to Github.
It therefore allows for a system of record for managing industrial automation code.
This project's goal was to implement a visual merge conflict editor. Because
the code being written in the Industrial Automation space is largely visual programming, merge conflicts are
also visual, and graph-based instead of text-based.
Interestingly, graph-based merge conflicts are quite complex to visualize. There are three sources of truth
in a merge conflict: source, base, and target. Showing them all while still maintaining usability was a real
design challenge.
Close collaboration, therefore, between me and our designer, Sinan Goral, was key to this
project. Many divergent special cases developed, since certain blocks in a project might be password-protected
and could not be displayed, but they still needed to be logically mergeable. Those blocks may also have failed
to load due to a number of other vendor-specific issues, which also needed to be explained to the user.
The end result was a sophisticated but still user-friendly
diffing and merging tool
for use in a vertical badly needing a transformative product.
Based on the customer feedback, I am proud to say we improved people's lives and workflows on this one!