ESLint is a well-known open source project. Initially, it was started by Nicholas C. Zakas in June 2013. It is a tool for identifying and reporting on problematic patterns found in ECMAScript/JavaScript code. Traditionally, code execution was needed for finding errors or syntax errors. ESLint prevents this by supporting static analysis. It supports both style checking and traditional linting of code. The code analysis is performed based on rules, which are configurable and customizable. This enables developers to write their own analysis rules which work alongside the default ESLint rules. Using ESLint, it is possible to automatically fix problematic code.

ESLint is supported by several companies, individuals and organizations. Donations enable the maintenance and development of ESLint. The team consists of a Technical Steering Committee, Reviewers and Committers. The open source community is welcome to suggest changes, bug fixes and contributions.

The entire project is written in JavaScript, it requires Node.JS and it works on Windows, Mac and Linux. ESLint is used by several companies and organizations, some which can be found at

The next posts will contain an in-depth analysis of the ESLint architecture.

The vision behind ESLint’s success

Understanding the product vision of ESLint is a good starting point for our architectural analysis. The vision of a product has an impact on design decisions. We cover the vision in six sections. First, the intended achievements of ESLint (section 1) and a description of the end-user mental model (section 2). Other key points of ESLint’s vision are the key capabilities and properties of the system (section 3), the stakeholders (section 4) and the current and future context (section 5). We end the product vision with a detailed roadmap, containing the future focus of ESLint, in section 6.

Behind the ESLint Architecture

Following our last post, we will discuss the architecture of ESLint. Architectural views, styles and design patterns will be discussed. Also, deployment and non-functional properties will be covered. This post gives an overview of the architecture of ESLint.

ESLint’s variability management

In this last post, we will assess and analyze one of the features that ESLint takes pride in and differentiates itself with compared to competitors, namely the large variability in the system realized through configurations. We will go into what is variable, what benefits this has and how this complex configuration can be managed by users in a sane manner. Lastly, we will look at how this is implemented and finish off with an assessment done by ourselves.