This is an attempt to track the progress of the JSON Schema Language Tools project. The points are more-or-less arbitrary effort estimates in the form of (effort-put-in/effort-estimated). Points will be updated weekly. Effort estimates are not fixed and may go up or down weekly to reflect what we learned.
The following sections are milestones and roughly in order of priority.
The goal is to get something stable enough to release and get early adopters using it, providing feedback, finding bugs, and hopefully contributing as soon as possible.
- (180/180) Stable architecture
- (9/9) Testing strategy
- (21/21) Feature test coverage
- (2/7) Documentation
- (14/16) No known bugs
- (15/15) Workspace management
- (7/7) Revalidate schema when schema changes
- (7/7) Revalidate workspace when schema is saved
- (1/1) Revalidate workspace when configuration changes
- (24/24) Schema AST
- (7/7) JSON-compatible AST
- (1/1) Schema resource identification
- (1/1) Dialect identification
- (3/3) Support for references
- (12/12) Identify nodes as schemas and properties as keywords
- (7/8) Code completion
- (3/3) $schema
- (2/3) keyword
- (7/7) Hover
- (7/7) Keyword documentation hover
- (28/35) Diagnostics
- (14/14) Schema validation
- (7/7) Reference validation
- (7/14) Deprecated keywords
- (6/6) Configuration
- (2/2) Default dialect
- (4/4) Schema file patterns
Linting can be used for everything from identifying common mistakes to enforcing code style.
- (0/??) Schema AST
- (0/??) Support for whitespace rules
- (0/1) Diagnostics for linting errors
- (0/??) Configurable rules
- (0/??) Plugin support for third-party rules
- (0/??) Auto-fix linting errors
- (0/??) TODO: Identify a minimum set of rules
- (0/??) Workspace management
- (0/??) Optimize workspace refresh
- (2/??) Code completion
- (2/2) if/then/else
- (0/??) TODO: Identify missing completions
- (2/2) Jump to def
- (0/??) Workspace symbols
- (4/4) Find references
- (0/??) Code actions
- (0/??) Refactoring support
- (0/??) TODO: Identify refactorings
- (0/??) Upgrade/downgrade schemas
- (0/??) Refactoring support
- (0/??) Get added to the list of language servers on https://microsoft.github.io/language-server-protocol/implementors/servers/
- (0/??) Get added to the list of language servers on langserver.org
- (0/??) VSCode: Add to marketplace
- (0/??) Neovim: Add to lsp-config and Mason
- (0/??) Release automation
- (0/??) Marketing
- (0/??) Blog post
- (0/??) Video demo
- (0/??) Present at conferences
- (0/??) Telemetry???
The functionality of validating the schemas in a workspace that the language server provides would also be valuable as CLI tool. It could even be used for automation.
- (0/??) Workspace diagnostics
- (0/??) Configuration
- (0/??) Fix lint errors
- (0/??) GitHub action
This is what Microsoft's JSON Language Server is designed for. Ideally, we could leave this functionality to them, but they don't seem to have any desire to fix/update their JSON Schema support and we'll need to implement functionality to fill the gap.
- (0/??) TODO
There are ways that a JSON document can be valid against a schema, but have things that are probably mistakes. This functionality would use the schema to identify probable mistakes in the JSON document.
- (0/??) TODO
Adding support for JetBrains means we can support IDEs for many different languages.
- (0/??) TODO
Adding support for Visual Studio means we can support users of the .NET family of languages.
- (0/??) TODO
This would allow us to support IDEs for languages that are built on Eclipse.
- (0/??) TODO
Support the Emacs users
- (0/??) TODO
This would allow the language server to be used in the browser.
- (0/??) TODO
This would allow the language server to be used in the browser.
- (0/??) TODO