There are three stages we track as we add support for new languages. These are:
- Parser - This is the first stage of any new language. In this stage, a parser is created so that the new language's code can be parsed into a Lossless Semantic Tree (LST). Once that happens, a simple recipe can be run on it to produce a style-preserving diff. These recipes will start to appear in the Moderne UI. Please note, though, that these recipes will still be written in Java regardless of what language is being added.
- Recipe catalog - In this stage, the goal is to build useful recipes specific to the language being added. These could include things such as migrations, CVE patches, static application security tests (SAST), or even language-specific build tools. Work on this stage can happen at the same time as the subsequent stage (native developer experience).
- Native developer experience - In this stage, the goal is to make it so recipes can be developed in the same language they're being run on (e.g., a TypeScript recipe would be written in TypeScript rather than in Java). This means that the open-source community for this language can more easily participate in recipe development rather than having to learn Java. Work on this stage can happen at the same time as the previous stage (recipe catalog).
Below you can find a table of languages, which stages are currently done, and which stages are left to do. Please note that this is a tentative timeline. Anything below is subject to change.