atm inclusion criteria for grammar orchard lists:
Grammars growing in the orchard must:
- be released under the MIT license (and possibly other licenses, at the user's option),
- have an accompanying test suite,
- have a continuous integration workflow configured on the repository,
- use C as the programming language of their external scanner (if any), and not C++,
- define the grammar in a JavaScript file (and not TypeScript or any other language),
- follow the Conventional Commits specification,
- follow SemVer: breaking changes must result in a major bump, new features in a minor bump, and bug fixes in a patch bump.
- contain CONTRIBUTING.md and GOVERNANCE.md files pointing to our common contributing instructions and governance files respectively
- use tree-sitter-$1-orchard as a Rust crate name on crates.io, where $1 is the name of the language parsed by the grammar
- do not track in Git the files generated by tree-sitter generate. Those files should instead be generated on the fly during the release process.
- Use main as default Git branch
thoughts based on having looked after a few grammars (e.g. tree-sitter-clojure and tree-sitter-janet-simple)
- currently using cc0
- corpus tests exist but i don't consider those sufficient. the extra tests are performed using separate repositories.
- i don't use ci partly because i don't want forge lock-in
- when i have an external scanner, it is written in c
- i have generated grammar.js files before, but currently don't -- so all of the grammar files are in javascript
- i am not familiar with the conventional commits spec and don't currently intend to learn about it
- i do not intend to follow semver in any meaningful way, more detail here and opinion from pulsar dev here
- not sure what the implications are of this, but i'm not sure i want to buy into more things where the content can change out from under me
- i presume it wouldn't be me that does this part - possible issue might be that the janet grammar is named
janet_simple
(uses an underscore) - until a solution that works for enough existing consumers (e.g. editors such as emacs) is presented, i don't plan to remove generated c files
- for historical reasons, the repositories all currently use
master
references