• Share this article:

Theia Adopter Story: The new Arduino IDE 2.0

Tuesday, April 12, 2022 - 08:17 by John Kellerman

The new Arduino IDE 2.0 is based on Eclipse Theia. It is a great example of how the flexibility and adaptability of Theia enables building a modern tool with a truly great user experience. In this article, we will take a closer look at the new Arduino IDE and its relationship to the Theia ecosystem.

Arduino is wildly popular. Everybody has heard about it and people love their microcontrollers and open-source software. There is no need for a lengthy introduction of Arduino, so let’s keep it short and crisp: Arduino provides devices and software for developing projects that interact with the physical world. This means that you can write software running on dedicated devices connected to various things such as sensors, servos or displays.

What makes Arduino so special in this field is the relentless focus on simplicity for developer use cases. While you have really powerful devices and libraries in your hands, you can still deploy your first project literally within five minutes. This developer experience makes Arduino extremely popular, as it has opened the “makers world” to new target groups.

One very essential piece of the simplicity for developers is the tools that Arduino provides, to wit the Arduino IDE. Using the IDE, you can develop projects, access existing templates, and run and debug your software on Arduino controllers. Before Theia was even invented, the Arduino IDE was already a great example of innovative UX in the development tools world.

However, nothing in computer science lasts forever, and the Arduino IDE team came to the same conclusion as many others did. The future of tools and IDEs is web-based. Consequently, the Arduino IDE 2.0 project started in 2019, based on Eclipse Theia. The Arduino IDE 2.0 brings two core innovations into the game: First, the new IDE is based on web technology and second, with Eclipse Theia, Arduino adapts a framework to build its IDE and tools. Before we take a closer look at the Arduino IDE 2.0, let’s go into detail about these two changes.

The new Arduino IDE as a web-based Tool

The current Arduino IDE is a desktop application based on Java Swing and AWT. Today, this is no longer a modern choice for applications or tools. While this technology stack has evolved over the last 20 years, it is clear that almost every application nowadays, including tools, is built on a web-based stack. This trend has several effects, all of which are intertwined with each other. With switching to a web-based stack, projects like Arduino gain several advantages, foremost the following three:

  1. Rendering in a browser engine: Nowadays most applications are implemented with UIs running in the browser. The evolution of UI frameworks and rendering capabilities has lapped the desktop several times by now. Since achieving a modern and slick developer UX is key for the Arduino ecosystem, switching to a browser-based UI is more than reasonable for the creators of the Arduino IDE. Using Electron, the Arduino IDE 2.0 can provide a web-based UI, but still be deployed as a desktop application.
  2. Sustainability: Being on a standard technology stack makes a project more sustainable. This especially applies to projects with long lifecycles, such as the Arduino IDE. Standard technologies, such as HTML or Node, with large user bases usually get more maintenance. It also becomes easier over the years to find developers with web technology knowledge compared to Swing and AWT.
  3. Ready for the future: Most innovation is currently driven in the area of web-based technologies. This applies to business applications and to tools. Being on a web-based technology stack opens interesting opportunities for future evolutions of the Arduino IDE 2.0.

Source: Pixabay

Arduino IDE 2.0 based on Eclipse Theia

The adoption of Eclipse Theia as a base framework for the new Arduino IDE 2.0 is a paradigm shift for Aduino. It is worth mentioning that the current Arduino IDE 1.0 is not based on a common IDE framework, including the Eclipse platform. This actually allowed Arduino to significantly deviate from the classic look and feel and the standard UX of tools and IDEs over the last decades. While it probably required more development resources compared to using a platform, it also significantly contributed to the core unique selling point of Arduino: simplicity.

When switching to a web-based stack, Arduino decided to adopt Eclipse Theia as a platform. This shows that Theia has clearly evolved compared to the Eclipse desktop platform. Not only is the default workbench of Theia slimmer and “simpler” compared to Eclipse desktop; Theia as a platform is also more flexible and customizable. This enabled the Arduino engineers to fulfill their vision of a modern UX and look and feel for the new generation of the Arduino IDE, while still building on top of a shared tool platform.

Adopting Theia does significantly reduce the initial effort for the development of a tool like the new Arduino IDE. It enables features that Arduino developers have requested over the years including more advanced source code editing, source code navigation and live debugging, just to name a few.

Using Theia as an innovating platform, you can even “consume” new features, concepts and platform evolutions over time. Theia is based on actively evolving standard technologies wherever it makes sense. For example, it uses the language server protocol (LSP) and the debug adapter protocol for enabling textual language support. As another example, Theia reuses the Monaco code editor. Furthermore, many technologies integrate well with Theia; for example, EMF.cloud or Eclipse GLSP. For these reasons, the Arduino IDE 2.0 will not only benefit from the developments inside of the Theia ecosystem, but also beyond that.

But enough about the platform. Let’s take a closer look at the new Arduino IDE 2.0, which is a great showcase for Theia as a platform!

Meet the new Arduino IDE 2.0!

When starting the new Arduino IDE 2.0, you will immediately notice that the team has kept their strong focus on simplicity. The new IDE comes with a very slim and straightforward user interface. Furthermore, the improvements to the predecessor IDE are also immediately noticeable. A full description of the features and advantages of the new Arduino IDE 2.0 would go beyond the scope of this article, so let’s highlight some example features.

The Arduino IDE 2.0 has carried over its prominent toolbar (see screenshot below), which provides quick access to the most important actions. The toolbar is actually a custom implementation. Theia is very flexible in terms of customizing the UI, even when it comes to common workbench elements, so adding a custom toolbar is straightforward (in contrast to other web-based IDEs like VS Code). It is worth mentioning that Theia in the meantime also optionally provides a generic toolbar out-of-the-box (see here).

Another prominent feature of the Arduino IDE is the tidy and slim user interface. To keep it simple,it only shows a minimum of options and views. Theia allows you to remove unwanted things from the workbench, so it gives full control to its platform adopters.

However, simplicity does not mean lack of advanced features. Thanks to the language server protocol and the Monaco code editor embedded into Theia, the new Arduino IDE provides all the advanced code editing capabilities you would expect from a modern IDE. This also applies to the general UI, which benefits from being browser based. As you can see in the screenshot above, you can apply theming or zoom the UI as any other browser application.

Again, a full description of the capabilities of the new Arduino IDE 2.0 goes beyond the scope of this article. Please see here for more details and a downloadable version! Please also note that the Arduino IDE 2.0 is fully open source. Therefore, you can browse the code, learn from it or even contribute to it. See this repo for the sources of the Arduino IDE 2.0.

Arduino and the Eclipse Theia ecosystem

As you can see, Eclipse Theia helped Arduino to create a modern successor of their tool offering. However, it is worth mentioning that Arduino does not only benefit from Eclipse Theia, but also the Theia ecosystem benefits from Arduino. They have been strong contributors since the inception of the Arduino IDE 2.0 project. Arduino does not only contribute bug fixes, they also provide detailed feedback to the community from the viewpoint of an industrial adopter project and share their findings with the community. They also contribute strategic features, such as recently the internationalization support in Theia.

Arduino and Eclipse Theia is a mutual success story. Arduino demonstrates the core strength of Theia, which is to efficiently build custom tools, without being restricted in terms of UI and UX. Cases like this, especially when adopters provide valuable feedback and contributions, significantly push the boundaries of a platform such as Theia!

We hope you enjoyed this adopter story. Get in contact with us if you are interested in exploring how adopting Theia or other Eclipse Cloud DevTools technologies can benefit your development tool strategies.