The future of Vale: Announcing the 3x10 funding campaign

A regex revamp, spaCy-powered NLP, and a much-improved onboarding experience.

Almost exactly two years ago, I announced the v1.0 release of Vale. And a lot has happened since then: I’ve made over 70 individual releases (including a second major version), launched a desktop application, and watched Vale’s community grow dramatically.

Vale has been downloaded over 200,000 times, and is actively helping writers across hundreds of projects — including linode/docs, spotify/backstage, cockroachdb/docs, Homebrew/brew, writethedocs/www, github/codeql, netlify/netlify-cms, gitlab-org/gitlab, and eclipse/che-docs.

🌟 If you’d like to learn more about how Vale is being used, Buildkite, Linode, Pronovix, Tag1, Drupalize.Me, and Umbraco have detailed how they incorporate it into their workflows.

Through all of this, I’ve been able to gain a much better understanding of both what Vale does well and where it could be improved. More specifically, I’ve identified three areas where I’d like to make significant improvements over the next 6 - 12 months:

All three of the ideas above will involve significant development, documentation and support time, and I’d love to be able to dedicate more time than I’m currently able to making them a reality. In order to do so, however, I’m going to first have to tackle perhaps the most difficult aspect of open-source software: funding.

My proposal is relatively simple: I’m going to try to find 40 companies, organizations, or individuals that are willing to invest an average of $250 into the future of Vale. The campaign will be run through Open Collective, and be split into 3 stages with well-defined deliverables (discussed in detail below).

More intuitive regex

Deliverables: An MIT-licensed globbing library in pure Go comparable to fast-glob in Node.js; full support for PCRE-flavored regular expressions in all of Vale’s extension points — specifically, the use of (?=re) (positive lookahead), (?!re) (negative lookahead), (?<=re) (positive lookbehind), and (?<!re) (negative lookbehind).

In my experience, the lack of support for common backtracking syntax (a product of using Go’s standard regexp package) has easily been one of the biggest hurdles for rule creators (both new and experienced). And it’s understandable: the syntax is widely supported by other programming languages and tools, and has a lot of utility in Vale’s particular domain.

My original opinion on the matter was that this perceived limitation could be overcome by introducing Vale-specific rule syntax that covered similar use cases. However, after reviewing multiple user interviews conducted by Chris Chinchilla and opening up a related RFC on GitHub, I’ve come to understand that supporting more expressive regex syntax is a must-have feature for many users.

The new regex support will be available in all of Vale’s extension points, as well as its CLI --glob option.

State-of-the-art, multilingual NLP

Deliverables: Drop-in support for using spaCy to power all NLP-related features, allowing Vale to leverage state-of-the-art accuracy across over 60 languages.

While regex is a big part of Vale’s functionality, it can only get you so far in terms of rule writing. This was something that I understood from the very beginning — Vale was the motivation behind my efforts to create jdkato/prose, now one of the most-starred natural language processing (NLP) libraries available for Go.

However, the needs of Vale have since outgrown the current capabilities of my own library (which is English-only and less mature than other options). The plan is to offer optional support for the MIT-licensed spaCy library through a new Model key:

This will allow Vale to leverage spaCy’s state-of-the-art accuracy across over 60 languages.

An improved UI

Deliverables: A slate of new CLI commands — vale new <arg> — designed to make project set-up more straightforward; an online rule editor that leverages the proposed NLP and regex enhancements.

The plan is to make significant improvements to both Vale’s CLI and its new online rule editor, with an emphasis on making Vale easier to get started with and use.

Command-line interface (CLI)

A prototype of Vale’s new CLI interface.

The first goal is to improve the onboarding experience through a new project set-up command:

$ vale new <project name>

This will automate the initial configuration process, including creating standardized .vale.ini files for common use cases and installing base styles.

Online rule editor

A screenshot of Vale’s new online rule editor.

The newly-released online rule editor was a big step forward in terms of making Vale easier use. This will become even more important as Vale’s rule creation-process becomes more powerful in terms of both NLP and regex.

Planned features include:

The 3x10 funding campaign

Even though Vale has come a long way in its first two years, I think the project has stayed true to its original principles:

However, as with many open-source projects, the ability for Vale to reach its full potential will likely depend on its users being willing to invest in its continued development.

The goal of the 3x10 funding campaign is to address this very issue: any funds raised will go directly toward allowing me to dedicate more time to addressing the three areas of improvement discussed above.

If you’d like to contribute, please see the Open Collective page for more information.

An open-source software developer with interests in natural language processing, data science, and collaborative writing. More @ https://github.com/jdkato.