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:

  • Stage 1 — More intuitive regex: Full support for PCRE-flavored regular expressions, including lookarounds and backreferences.
  • Stage 2 — State-of-the-art, multilingual NLP: 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.
  • Stage 3 — An improved UI: A slate of new CLI commands and completion of the online rule editor.

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:

  • Support for AsciiDoc, reStructuredText, HTML, and DITA content.
  • More View: options, including the ability to explore readability algorithms.
  • Support for all of spaCy’s 60+ languages.
  • The ability to save and share sessions.
  • And more …

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:

  • It’s free, open source, and actively maintained: Over the course of two years, I’ve averaged an issue resolution time of 1 day while also responding to emails and Slack messages (see #testhedocs at Write the Docs) in a timely manner.
  • The core application is entirely offline and local — meaning your content is never sent to a remote server, stored, or otherwise inspected.
  • The project has improved significantly in many areas while also maintaining a high degree of backwards compatibility (styles created on day 1 still work, without modification, 2 years later).

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.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store