Are you looking to build a custom C/C++ tool using modern technologies? Do you have an existing Eclipse CDT-based toolchain and are looking for a migration path to the cloud? Then read on. In this article, we will share our experience with building custom and domain-specific C/C++ tools based on web technologies and running them either on the desktop or in the cloud. We will introduce an example tool called CDT.cloud Blueprint that combines best-in-class open-source C/C++ tool technologies and provides a starting point for your own domain-specific tool.
Eclipse CDT has a long track record of providing world class C/C++ tooling. Even more important, it has served as a platform for the implementation of many product- and domain-specific tools, especially in the embedded area. These custom products based on CDT made it as easy for users to work with specific hardware and devices. Thus, these tools came with pre-configured toolchains, e.g. with specific compilers and configurators, editing support for particular C/C++ dialects, as well as dedicated user interfaces guiding the users through an end-to-end workflow, from creating and building projects to deploying them onto specific targets.
In recent years, there have been a lot of discussions, suggestions and prototypes about a potential successor of Eclipse CDT based on web technologies. Already in 2017, the former project lead Dough Schaefer suggested Eclipse Two, an IDE based on web technologies and running in Electron. In the same year, the Eclipse Theia project was born, a platform for building web- and cloud based tools. So a couple of years later, has CDT actually moved to the web, too? Is there something such as CDT.cloud and can you build C/C++ domain specific tools based on it?
The answer is yes and no. In a nutshell, there is not something like Eclipse CDT based on web technologies per se, meaning there is not a single platform such as CDT used to be. HOWEVER, the building blocks are actually available, and if you put them together the right way, you can build powerful, domain-specific C/C++ tooling based on web technologies. Some are provided within the Eclipse ecosystem, some others you will find in other open-source ecosystems.
We at EclipseSource provide consulting and implementation services for building tools, including web-based tools and C/C++ tools. We are part of a large number of projects where domain-specific C/C++ tools are being migrated to modern (web) technology stacks and prepared for the cloud. Therefore, we would like to share an overview, best practises and most importantly a technology selection on what it takes to provide feature-rich custom C/C++ tools in the cloud.
This article is the kick-off for a small series in which we will discuss a blueprint tool for C/C++ tooling based on web technologies. “Blueprint” in this context means that it can be used as a basis for developing your own domain-specific tool. We will also dive into the details around language support, compilation, debugging, deployment, etc. Even better, we will not only provide the articles, we will also create an example tool based on Theia called CDT.cloud Blueprint. It is a tool integrating the most common C/C++ tooling technologies. We gathered this selection from our customer projects as well as from a survey that was conducted among embedded vendors in the special interest group of the Eclipse Cloud Development Working group.
CDT.cloud Blueprint is not meant as a product distribution as CDT used to be, but as a starting point for building your own custom C/C++ tool. However, you can of course try it out. Also, it is of course open source, so you can look at all the details on how it is implemented and adapt it to your requirements.
The screenshot below shows CDT.cloud in action. As you can see, it supports many features, such as auto-completion, syntax highlighting, debugging, a memory view and much more. It is actually quite surprising how powerful web-based C/C++ tooling can be if you put together the right building blocks.
We will dive into the details of these features in follow up articles. This includes technical details on the available features, but also architectural concerns such as desktop vs. cloud-based deployment (CDT.cloud can be used for both).
Follow us on Twitter, if you would like to be notified about the next parts of this series.
You can find more information about CDT.cloud Blueprint here including the sources. Please feel free to try it, adopt it and most importantly: provide feedback. Maybe you are aware of another great solution which we can integrate? Maybe you want to contribute something? For example Ericsson contributed the Memory and Tracing Views and several vendors also contributed to the GDB DAP adapter.
If you are interested in implementing your own custom C/C++ tool based on web technologies, EclipseSource provides consulting and implementations services for tools and C/C++ tools in particular. Get in contact with us to discuss your project requirements or to develop a migration path for your existing CDT-based tool.
Finally, we gave a talk at EclipseCon about CDT.cloud Blueprint, check it out.