Contributing
Fuaran UI is Apache-2.0 and open to contributions – the language tier, the host implementations, the shared wire-format fixtures, and this documentation site. This page is the short version of how to help.
Where things live
The code lives on GitHub under the fuaran-ui
organisation: the F# reference and renderer, the TypeScript / Python / Go / Rust
hosts, the native Swift and Kotlin surfaces, the shared wire-format fixture corpus,
and this site. Pick the repo for the surface you want to change – the hosts
page maps each language to its repository.
The wire format is the contract
The canonical core@1.0 wire format is the contract every host holds. If a change
touches the wire – a new node kind, a new op, a shape change – it lands in the F# reference, the shared fixture corpus and every codec host in the same change, so the corpus and the hosts never drift. A wire change that moves one host
but not the corpus is not a mergeable change; the cross-host parity gate is what
makes "one tree, every host" a guarantee. See the wire format.
Pull requests
- Branch from
mainand open a PR againstmain. - Sign off your commits (DCO). Add a
Signed-off-by: Your Name <you@example.com>trailer to each commit (git commit -s) to certify the Developer Certificate of Origin. - Keep the surface honest. Examples and docs are built and validated in CI; a broken snippet or a wire example that fails the language's gates is a red build, not a review comment.
- Be excellent to each other. Contribution happens under a standard code of conduct; harassment or exclusionary behaviour is not tolerated.
Reporting a security issue
Please do not open a public issue for a security vulnerability. Report it privately to the maintainers via the security policy on the relevant repository (GitHub → Security → Report a vulnerability), and give us a reasonable window to respond before any public disclosure.
Where to ask
For questions that aren't bug reports, open a discussion or issue on the repository for the surface you're working with. For "how do I express X as a tree?", the component reference and the guide are the fastest answers.