The IT news world slowed down a lot last week due to the Thanksgiving holiday. However, the Internet does not accept a void and discussions in our frontend community were dominated by the decision to rewrite ESLint from scratch without using TypeScript.
1. Complete rewrite of ESLint
A few weeks ago we informed you about the first stable Rome release. Rome is intended to be an alternative to Babel, Prettier, Webpack, and several other developer tools. However, on its debut, it was just a faster alternative to ESLint. ESLint maintainers must have felt the breath of competition on their back because this week they announced that it will be rewritten from scratch.
The most controversial aspect of the whole initiative is the programming language. ESLint will not follow the trend of most new developer tools (such as Rome or Turbopack) and will not be written in Rust. However, when API stabilizes, the team wants to prepare Rust alternatives for some performance-critical modules.
If not Rust, then probably TypeScript? Well, no. The team decided to develop the tool using JavaScript enhanced with JSDoc. This architecture allows the automatic generation of types for plugin developers and provides basic code validation.
Reading the discussion on the architectural decisions, I felt as if I went back in time 4-5 years. The discussion about the superiority (or inferiority) of TypeScript over JavaScript has heated up again. It is worth remembering that the decision is transparent from the perspective of the ESLint customer. Even if I would never choose to create a library in JavaScript right now, I’m not going to force others to do the same.
Rewriting ESLint from scratch is also a chance to introduce new functionalities. From my perspective, the most interesting one is the ability to modify the AST tree structure to fix some formatting errors. Of course, there is a fair amount of risk associated with this functionality – ESLint will now be able to modify the behavior of our program. On the other hand, with the right configuration, modifying the AST tree can save us a lot of time fixing simple errors.
The second feature that caught my attention is making ESLint a programming language agnostic. This means that if all goes to plan, we will also be able to use ESLint with other programming languages like Java or C#.
At this point, it is not known when the ESLint rewrite initiative will begin. As we can learn from discussions on GitHub, there is still a lot of planning ahead. We can expect a series of RFCs detailing specific architectural decisions before the first commit hits the repository.
Sources
https://github.com/eslint/eslint/discussions/16557
2. React Native Core Contributor Summit 2022
React Native Core Contributor Summit, is a meeting that brings together all parties involved in the development of React Natvie. Due to the pandemic, for the past few years, the meeting could not taken place. This year it returned with redoubled force. On the occasion of the React Native EU conference, the main contributors to React Native and its most popular libraries together with people from Meta responsible for the project took part in a series of workshops. They tried to address the project’s biggest pain points. The topics discussed mainly concerned the new React Native architecture, and you can find a list of covered topics below.
- React Native Codegen & TypeScript Support
- React Native New Architecture Library Migration
- React Native Monorepo
- Metro Web and Ecosystem Alignment
- Metro Simplified Release Workflow
If you are interested in the details I refer you to the link you will find in the sources. The first effects of Core Contributor Summit 2022 are numerous RFCs and we can expect the first discussed features to hit React Native 0.71
Sources
https://reactnative.dev/blog/2022/11/22/react-native-core-contributor-summit-2022
3. Electron 22 and Electron Forge 6
Electron 22 was released past week. In addition to the standard dependency bump (Chromium 108, V8 10.8, and Node.js 16.17.1), this is the latest version that will support Windows 8. The most interesting release is not Electron 22 itself but Electron Forge 6 which accompanies this release.
Electron Forge is a tool that allows you to build applications, generate install files and sign them. Of course, similar tools have been available for a long time, but Electron Forge 6 is unique because the project has been taken under the wings of the core Electron team. As a result, the tool will receive a lot of developer time, and its documentation will be integrated with Electron one.
Sources:
https://www.electronjs.org/blog/electron-22-0
https://www.electronjs.org/blog/forge-v6-release
https://www.electronforge.io/core-concepts/why-electron-forge