2 min Devops

All the gain, none of the pain of monorepos with Jetbrains’ Workspaces

All the gain, none of the pain of monorepos with Jetbrains’ Workspaces

JetBrains has finally implemented a long-awaited feature in its IntelliJ IDEA IDE, an environment primarily used for Java and Kotlin development. The feature’s name is Multi-Project Workspaces and, as the name implies, allows users to manage multiple projects from different repositories together.

The feature comes 13 years after users first put the request at Jetbrains’ doorstep. Although the plugin is currently only available for IntelliJ IDEA, JetBrains plans to extend it to other IDEs such as PyCharm and Android Studio. In its own explanation, JetBrains clarifies that a Workspace does not replace projects or software products but acts as a desktop for managing projects. The company calls it a ‘container,’ and a little further on in the documentation, a ‘collection.’

Multi-Project Workspace is available as a plugin and, according to Jetbrains, offers the benefits of a monorepo without the drawbacks. Workspaces allow developers to reference multiple projects within a single environment while maintaining their independence, unlike traditional monorepos, which can suffer performance and coordination issues due to their all-in-one structure. When one project in a monorepo is broken, the entire monorepo is broken. Such issues are avoided with this approach.

Work in progress

The proviso is that the plugin is still a work in progress. Current limitations include the need for new run configurations for each imported project and the lack of support for renaming projects. Also, there is currently no synchronization of settings between projects and Workspaces. JetBrains plans to eventually turn Workspaces into a core feature in all its IDEs. The company promises improvements such as seamless debugging in projects and integration with version control systems.

The plugin is already receiving positive feedback from developers, although, according to Devclass, many are eager for it to become available in other JetBrains IDEs. JetBrains says it is aware of that demand but wants to eliminate the functionality’s teething problems before implementing it on a larger scale.

Also read: JetBrains brings 2024.2 updates to all IDEs