Introducing the GitHub Hardware Viewer

Git is an incredible tool. It’s a universally adopted method of tracking revisions, and supporting concurrent collaboration. But it’s designed around plaintext, human-readable files. This is fine for code, but binaries or other source files that aren’t truly human readable makes merges impossible.

At Opulo, we use Git and GitHub for managing our code, along with our hardware. In general it works well, but there’s a few constraints we have to work around to use it without losing work. You can see just how extensive these constraints are in the contributing page for the LumenPnP repo.

In the last few years, GitHub has made viewing and editing code from the browser very smooth. Navigating a codebase on GitHub is akin to cloning it and viewing it in an IDE (and by using their web editor, it's the exact same). But aside from an in-browser STL viewer, they don’t support hardware. KiCAD files show up as text, and FreeCAD files show up as downloadable binaries.

However, there are great tools for viewing these files in-browser! KiCanvas and are excellent web-based tools that let you view any KiCAD or mechanical CAD file using only a GitHub link. Conceivably, GitHub could take these web viewers and integrate them just as they have with their STL viewer, making hardware source easier for everyone to view and collaborate on.

In lieu of GitHub doing so, we’ve built the GitHub Hardware Viewer Chrome extension! This extension looks for ECAD or MCAD files in a repository, and generates a link to view them directly in-browser. The extension even supports different branches or specific commits, so comparing two designs between versions is incredibly easy.

github hardware viewer

As always, we’ve made the source open. Community member aaroneiche has even updated it to view the source directly in GitHub's UI instead of loading a new tab. We want to help usher in a wave of hardware collaboration tools that the software world has been enjoying for decades. Working on little things like making collaborating and viewing source easier is super important, but just a small piece of the puzzle. There's still a lot of tooling needed to facilitate an open source, git-based hardware design stack.

Give the tool a try and tell us what you think! What other tools would be helpful in making hardware collaboration easier? Let us know.