Brush up CONTRIBUTING.md

This commit is contained in:
Aleksey Kladov 2018-01-28 00:34:16 +03:00
parent a4880ca03e
commit ffe545cc37

View file

@ -1,32 +1,39 @@
The project is in its early stages: contributions are welcome and The project is in its early stages: contributions are welcome and
would be **very** helpful, but the project is not *yet* optimized for would be **very** helpful, but the project is not *yet* optimized for
contributors. Moreover, it is doubly experimental, so there's no contribution. Moreover, it is doubly experimental, so there's no
guarantee that any work here would reach production. That said, here guarantee that any work here would reach production. That said, here
are some arias where contributions would be **especially** welcome: are some areas where contributions would be **especially** welcome:
* Designing internal data structures: RFC only outlines the * Designing internal data structures: RFC only outlines the
constraints, it's an open question how to satisfy them in the constraints, it's an open question how to satisfy them in the
optimal way. See `ARCHITECTURE.md` for current design questions. optimal way. See `ARCHITECTURE.md` for current design questions.
* Porting libsyntax parser to libsyntax2: currently libsyntax2 parses * Porting libsyntax parser to libsyntax2: currently libsyntax2 parses
only a tiny subset of Rust. This should be fixed by porting parsing only a tiny subset of Rust. This should be fixed by porting parsing
functions from libsyntax one by one. functions from libsyntax one by one. Take a look at the
[libsyntax parser](https://github.com/rust-lang/rust/blob/6b99adeb11313197f409b4f7c4083c2ceca8a4fe/src/libsyntax/parse/parser.rs)
for "what to port" and at the
[Kotlin parser](https://github.com/JetBrains/kotlin/blob/4d951de616b20feca92f3e9cc9679b2de9e65195/compiler/frontend/src/org/jetbrains/kotlin/parsing/KotlinParsing.java)
for "how to port".
* Writing validators: by design, libsyntax2 is very lax about the * Writing validators: by design, libsyntax2 is very lax about the
input. For example, the lexer happily accepts unclosed strings. The input. For example, the lexer happily accepts unclosed strings. The
idea is that there should be a higher level visitor, which walks the idea is that there should be a higher level visitor, which walks the
syntax tree after parsing and produces all the warnings. Alas, syntax tree after parsing and produces all the warnings. Alas,
there's no such visitor yet :( Would you like to write one? :) there's no such visitor yet :( Would you like to write one? :)
* Creating tests: it would be tremendously helpful to read each of * Creating tests: it would be tremendously helpful to read each of
libsyntax and libsyntax2 parser functions and crate a small separate libsyntax and libsyntax2 parser functions and crate a small separate
test cases to cover each and every edge case. test cases to cover each and every edge case.
* Building stuff with libsyntax2: it would be really cool to compile * Building stuff with libsyntax2: it would be really cool to compile
libsyntax2 to WASM and add *client side* syntax validation to rust libsyntax2 to WASM and add *client side* syntax validation to rust
playground! playground!
Do take a look at the issue tracker, and try to read other docs in Do take a look at the issue tracker, and try to read other docs in
this folder. the [./docs] folder!
If you don't know where to start, or have *any* questions or suggestions,
don't hesitate to chat at [Gitter](https://gitter.im/libsyntax2/Lobby)!