Skip to content

Code Improvement Areas

Thomas Mäder edited this page Nov 29, 2022 · 2 revisions

As in any piece of software, there are areas in the Theia source code where we didn't quite get the design right the first time. This document lists area where we think changing the design would make it simpler to evolve the code and deliver better quality. The idea is to maintain a top-3 to be fleshed out into epics for adopters/contributors to sign up for like we did for VS Code compatibility.

  1. Tasks The tasks system suffers form the fact that we do not distinguish between the text in a tasks.json file and the task configuration objects that we use internally. We start our task object hierarchy with TaskCustomization which is basically just the tasks.json schema expressed as a Typescript interface. I believe the code would become much easier to understand (and thus less buggy) if we clearly separated the two concepts. Task Customizations from json files are applied to the task objects defined by the system or plugins, but customizations and configuratitions are not the same. As a quick example: the values for taskGroup in tasks.json is build | test whereas in the API there are move values allowed. This leads to all kinds of gymnastics when converting types.
  2. Debugger Currently we have a DebugService and a PluginDebugService which entirely replaces it. The point of variability here should not be the debug service, but the debugger contributions. Here's an issue related to this: https://github.com/eclipse-theia/theia/issues/11121