Hardware Git clients
We live at the dawn of a golden age of hardware development. The tools being built are powerful, fast, and focused on saving money and time but not necessarily with an intuitive user interface. Git has a reputation for being clunky and severe, but everyone participating in the tool-building ecosystem has taken Git a long way from its command line only roots. Hats off to all of these projects that push the boundaries of what Git can be.
Git providers are doing more than just providing managed hosting of Git servers. It is a fantastic business advantage to have someone else maintain the servers. If you don’t have the need or requirement to host Git on-site or with internally managed servers, you can save a lot of money by working with a trusted team to keep your designs safe. Most services are available for a low monthly cost that is a fraction of an hour’s labor for an IT professional.
In addition to creating downward pressure on operation expenses, each Git service provider has contributed features and user experience changes, some of which have become synonymous with Git. Each of these organizations put their own spin and add additional tools and features. Here are the best Git clients for hardware engineers.
Anyone familiar with Git, knows about GitHub. 84% of the Fortune 100 use GitHub Enterprise, and it has over 73 million users. GitHub was creating so much value that it was acquired by Microsoft in 2018 for $7.5 billion. It has introduced many features over the years, but with the amount of competition, many of the other tool-builders are catching up.
GitHub has numerous tools for your repo in its marketplace. Many organizations use third-party integrations for (CI/CD) and other important DevOps processes.
GitHub is a wonderful tool if you’re looking for an easy experience for writing software or firmware, but if you want to see your schematics or their changes, you’ll have to generate your own tools. This is what an Altium schematic file looks like when you view it raw, which is the only way to detect what the file differences are between versions.
Gitea is a free and open source Git hosting platform with many of the same features as GitHub Enterprise Edition. Its main purpose is to be your “painless self-hosted Git service”. Gitea is easy to install, but there are many hosting services like Digital Ocean and Linode that have pre-configured turn-key servers that can start up your own Git platform. Gitea can be hosted in the cloud, or on-premises to give you control and mutability. You can either freely change the Gitea code and keep your changes local to your organization, or you can participate in the Gitea project and submit your code changes to pull requests in their open repo.
AllSpice Hub is based on a fork of Gitea, so you get all the power and functionality of Gitea, but with the hardware specific features that let you see schematic changes instead of binary blobs. AllSpice has team members who write code and submit it to the project, giving back to the open source community.
Although often confused with GitHub, GitLab takes a different approach. GitLab features both an open-source community edition that lets you host and modify your server as you see fit and an Enterprise Edition. The enterprise solution can be self-hosted or fully managed.
GitLab’s specialty is for CI/CD and has numerous built-in and turn-key services for testing, packaging and releasing your files. Because they are built-in, they aren’t relying on external services that you have to update and maintain. Because they’re native, you don’t have to cobble together your own brittle integrations from scratch.
GitLab lets you automate procedures like automatically stage, test, and release kubernetes. The platform also allows you to scale your projects and deploy more resources as the project grows.
It also focuses on stability and has a preference for a multi-step release process, with branches feeding into one another from pre-production, to testing, to production release servers.
GitLab is an excellent platform for software teams. There are many integrations that are helpful for firmware development. Using a test driven design (TDD) integration platform can test your C/C++ or machine code without even needing production hardware.
There are no hardware integrations, however, and GitLab suffers from the same problem of all the other software-centric platforms. You can’t see the schematic and layout design files without rolling your own solution.
GitKraken doesn’t offer hosting for your Git projects, but it does offer one of the slickest interfaces for a Git client. You can use GitKraken to connect to a Git host and use their tool to view and manage your commit history. The visual interface makes it a lot easier to see how commits and branches are connected in the repo. While other tools like TortoiseGit, SourceTree, and Git Cola offer up similar functionality, they don’t have the fresh UI of GitKraken.
The free tool is available for single users, and there is a paid tier for teams and enterprises.
As cool as this tool looks, there’s no hardware integration features so schematics and PCB layouts will be text-only. You can use GitKraken in combination with AllSpice’s diff tool to generate visual diffs locally on your machine.
Gogs is another self-hosted Git platform. Gitea is a fork of Gogs, so both platforms have a lot of similarities. Gogs offers some interesting features like native support for Jupyter Notebook and PDF rendering.
Gogs is focused on software revision control and doesn’t have any features specifically for a hardware workflow. Reviewing schematic and PCB diffs will be via binary blob and not with a visual schematic or view of the layout.
Bitbucket is Atlassian’s solution to hosted Git. Because Atlassian also produces Jira, it features tight issue tracking and product management integration into their Git tool. Most of the rest of the solutions listed here have 3rd party integrations to issue tracking tools and can use Jira. It may be that your team needs the tighter integration of a native tool.
Bitbucket offers fully managed hosting, along with a self-hosted “Data Center” edition. The tool also offers Bitbucket pipeline for automating building, test, and deployment.
Because Bitbucket is software-centric, there are no hardware tools, so schematic and layout files only have a binary blob for review.
Sourceforge is one of the oldest revision control tools and has hosted many famous projects. One of the huge downsides of Sourceforge is its business model uses advertising, and any given repo might have five or more advertisements, cluttering and distracting from the development process. The other downside is that they don’t support closed-source repositories. If you’re working on an open-source hardware project, you might want to consider Sourceforge, but if your project is proprietary, you would need to consider a different platform.
AWS CodeCommit / Elastic Beanstalk
Amazon has their own managed Git platform with AWS CodeCommit. It offers up many of the features of GitHub, but with a tight integration with Amazon Web Services (AWS). With the addition of Amazon’s Elastic Beanstalk, the code can be set up to automatically create, build, and run many of Amazon’s services. This can save a lot of time for companies that are working on a product that is running on AWS.
Neither of the solutions offer any hardware-centric tools, and run into the same problems with reviewing schematic and PCB layout diffs as many of the solutions here.
AllSpice is the only tool on this list that is focused specifically on Git for hardware development. Unlike most software development, the source files are edited visually in electronic computer-aided drawing (ECAD) programs. Schematics are edited as boxes, triangles, and other shapes being manually connected with wires. PCB designs are a literal 1:1 drawing of the physical features of the PCB. Even if these values are stored in a text file, the files are designed with a visual process.
We solve this problem by creating tools for hardware revision control. When you push your changes to the server, the hub converts the binary files into an intermediate json file that anyone can access and script. The json file is then converted into visual SVG files everyone can read. The schematics and PCB layout SVG files are generated with color-coded changes. The visual diff is easy for people of all skill levels to read, with red for deletion, green for new, and yellow for parts, nets, and silkscreen that have been changed.
It’s easy to tell which capacitor has been deleted and which has been changed. You can also see that U115 pin 27 has been moved to the other side of the resistor, R108.
You can even click on components, traces, and nets to see the available metadata. Here you can see that the value changed from 220uF capacitor to a 470uF cap and that the part number was populated.
Adding to the visual diff, AllSpice has implemented a snippet tool that allows you to natively highlight sections of the designs and post them into a comment or review without needing to use an external image editing tool. Gone are the days of reviewing PDFs full of screenshots.
Allspice has also released a free, standalone diff tool to generate the visual schematics and layouts from the files and include the color highlighted diff. Our platform is built on top of Gitea, so it has a robust backend with a familiar user interface, very similar to GitHub.
While the previous 20 years have given us many great Git hosting platforms, most of them focus solely on software projects. It’s possible to use a vanilla software platform to manage your hardware revision control, but what all of these tools lack is the ability to view and see changes to schematics and PCB layouts. Despite many of these companies focusing on CI/CD, the existing integrations are for building and deploying software. Most of these orgs don’t have CI/CD for hardware on their roadmap.
AllSpice automatically creates visual schematics and layouts that are human readable, offering hardware specific functionality that you can’t get on other platforms. Although the other tools may offer features and ease of use with committing file changes in general, they don’t help hardware projects when it comes time for design reviews.