A Harry Potter-inspired clock that tracks family members via Twitter. A quadcopter that transports items between African villages. A printer that turns sounds into text. All of these projects are real—and are possible thanks to Arduino, one of the world’s most popular electronics prototyping platforms. Started in Italy as an open source research project in 2005, the Arduino USB board was built to help design students with no previous experience in electronics or microcontroller programming create working prototypes. Today, it’s an open source hardware and software company that designs single-board microcontrollers and microcontroller kits for building digital devices. From hobbyists and students to designers and developers, the Arduino community is home to millions of makers around the world, with hundreds of thousands joining every month.
Like a turbo-charged DIY club, Arduino empowers hundreds of millions of users to create limitless projects. “We use GitHub as a community management system–kind of like a social network,” said CIO and Cloud Business Manager Luca Cipriani. GitHub provides an intuitive place for lively conversations and constructive feedback; it’s also where Arduino manages contributions. Since open source was an essential component from the beginning, the team rarely keeps an issue or repository closed.
Arduino has had this community mentality since day one. “Arduino wasn’t even a company,” Cipriani said. “It was a set of people that started an open source project together. At some point it became a company and we’re still working that way.” All internal employees have access to repositories, and “our policies are pretty open. We highly encourage everyone to take a look at what’s going on.”
Employees contribute outside of work, too. “It’s open source, so we support each other.” On the flip side, “we leverage quite a lot of community input to design the roadmap,” said Head of Open Source Alessandro Ranellucci. When they originally created the Arduino CLI, a command-line tool making it possible to program boards using any text editor and workflow, they immediately made it available to other companies. After a single day, the TensorFlow team folded it into their continuous integration pipeline for TensorFlow Lite. “That was incredible,” Ranellucci said. “Google was using our tools and it became a public collaboration.” The almost instant, collective power of open source allowed Arduino to connect with a revered brand and work together to improve the product.
I don’t know a single professional developer that doesn’t have a GitHub account.
Arduino wraps open source technologies in a neat, easy-to-use package that encourages the community to innovate and experiment. “Our main business is helping users understand complex technology and create products with it,” Ranellucci explained. To provide an optimal user experience, “GitHub has the best tools for conducting internal reviews.” From a technical perspective, “being able to simply read the code and see exactly what’s going on is incredible,” Ranellucci said. He can also easily compare commits and heavily relies on the search function, which allows him to quickly find what he needs amongst over 100 million global GitHub repositories and projects. “Every time I use search to look for a specific file, that’s saving hours for everyone.”
To connect tools and automate more of the Arduino workflow, Arduino turns to GitHub Actions. “For us, it’s a killer feature,” Cipriani said. Previously, they were using a similar tool, “but the maintenance was hard because we needed our own integration servers to make continuous updates, and it’s a security risk.” With GitHub Actions they were actually able to remove a number of servers, and can test both their software and hardware. With physically connected hardware running GitHub Actions on top of the hardware that’s being tested with USB ports, “that means we can reprogram our Arduino board, test the input/output of the hardware, and then send the results back to GitHub Actions. We can completely automate not just a continuous integration of the software but also of the hardware using solely online tools.” The best part? “We don’t have to maintain them. So it’s super efficient.”
Having an integration platform that tests both software and hardware “is something completely new in this field,” Cipriani said. He typically sees factories connecting chips to big servers, testing the hardware globally, uploading the test somewhere else, and then running a different test for the software. “It’s super annoying and expensive. For us, we just complete our GitHub workflows,” then turn to the community to discuss, build, and iterate. Because Arduino employees don’t have to waste time creating proprietary tools, they can focus their energy on Arduino. Which is good, because “the only thing we can’t buy as a company is time,” Cipriani said.
In the beginning, with the creation of the original Arduino IDE repository, “we saw hundreds of forks and didn’t really understand completely why,” Cipriani said. After a deeper look, they realized the application wasn’t modular: third-party board producers were being forced to fork Arduino’s source code to build their own version of the application independently, instead of contributing improvements back to the project. As soon as they released the update on GitHub correcting the issue, “those users started contributing back and opening a lot of requests.” Those contributors started helping Arduino with issues and being more productive, organically building Arduino’s staff. “We actually hired a lot of them or added them as contractors, and we’re still working together with many of them today.” Arduino now has 120 employees, and 90 percent of them use GitHub.
In addition to leveraging GitHub to build their company and community, Arduino recognizes it as the popular choice for developer appeal. “I don’t know a single professional developer that doesn’t have a GitHub account,” Cipriani said. As such an essential part of their work, GitHub is now a hiring requirement. “We put it in our job description. There are some exceptions, but if you don’t know GitHub well, we’re probably not going to hire you.”
Parts of Arduino’s public websites are also comprised of content created by users on GitHub. Originally, the team constantly updated the Arduino Reference page, but only had the bandwidth to translate into three languages. The page is now a public repository; they accept pull requests from external contributors and as soon as they merge, they automatically publish to the website. “That allowed us to publish our documentation in more than eight languages,” said Cipriani, including Korean, Japanese, and Arabic. Every time someone deploys a change, Arduino uses webhooks to automatically generate content and reproduce those edits in all the other languages’ repositories. By working directly with the open source community, “we can basically double our internal team.”
The only time Arduino closes its doors is in the first phase of product creation, which is conducted in a private GitHub organization so they can test and iterate. Here, they have 512 repositories. Once they’re ready, “we open it up to the community,” Cipriani said, and transfer it to their public GitHub organization, containing 154 open source repositories. They have an additional public organization, Arduino Libraries, as well as a repository for open source-contributed external applications that integrates with Arduino’s ecosystem. On top of that, there are 80 different repositories that are completely managed by the open source community.
Worldwide community support improves Arduino’s security by acting as a powerful line of defense; “just by being open source and publicly visible on GitHub, we have developers who directly contact us with bugs,” said Arduino’s Chief Information Security Officer Gianluca Varisco. Arduino also enforces two-factor authentication, with plans to force a GPG key to sign-off Git commits and emails in the next year. They round out the security arsenal with GitHub’s automated security updates, token scanning, and vulnerability alerts. “It’s super reliable. The stability is great.”
To automate deployment and track new software changes, Arduino employees use Git tags and GitHub releases. “Every time we release a new version of our software, there are employees who want to see the draft release, download the binaries, and test the application because they want to understand what’s going on in the company.” This constant feedback loop allows Arduino to continuously improve, and includes non-traditional users who aren’t quite as technology-savvy. “They’re still able to use the interface because it’s super simple.”
Arduino has always been bound by a mission to create and share solutions in the open, and for that, “the GitHub community is incomparable,” Ranellucci said. Unexpected partnerships, tighter security, and ultimately a better product are just a few of the powerful outcomes the open source community has delivered.
When Ariya Hidayat is not a VP of Engineering, he maintains PhantomJS, one of the most popular tools used by companies to write automated integration test for web applications.
Mario Ponce is a father, an immigrant, a builder, and a developer.
Start collaborating with your team on GitHub
Want to use GitHub on your own? Check out our plans for individuals