The development tooling landscape is changing and moving towards cloud-based developer tooling. While this movement is what everybody is talking about, a clear vision of how cloud-based developer tooling will look is still missing. Converting the existing desktop-based IDEs into something that runs in the browser seems to be the wrong approach. At the same time all of the cloud-based approaches seem to be fully disconnected from the existing desktop-based IDEs. They require that developers “move over” into the cloud for doing their development. Often they have to leave existing tools behind while the new cloud-based tooling is missing important functionality that people use every day in their existing desktop IDEs. This project bridges the gap.
The fundamental architecture of the project consists out of three building blocks:
- the backbone is a distributed messaging architecture that doesn’t know anything about language tooling, but that is able to distribute messages in a highly distributed environment in real-time at low latency. This messaging works between server processes, between processes running in different cloud environments, and between client applications like browser-based front-ends.
- the fundamental concept on top of this distributed messaging architecture is the notion of repositories that can contain projects, resources, and metadata. By using the messaging system, repositories can keep projects/resources locally and sync projects/resources with other repositories running somewhere else.
- in addition to repositories and messages, services can connect to the messaging system, can sync data to their local storage mechanism (files, database, whatever), work on that data, and provide additional resources or metadata for the projects/resources.
As a first step, existing desktop IDEs can act as repositories. This allows additional cloud-based services and/or front-ends to be implemented that work on those projects/resources (like editing your project files using a browser-based editor).
As a second step, additional cloud-based services can provide additional features for those projects/resources, ranging from doing “compilation as a service” for error reporting, static analysis, providing smart content-assist, navigation, etc.
This allows developers to connect their existing, still locally stored projects/resources to be connected to the cloud and working on those projects/resources in the cloud at the same time. There is no need to “completely move over” with everything into the cloud. People can choose what and when to use cloud-based tooling while they continue to use their favorite local tools at the same time.
Relationship to Orion