Contributing to Janus§
We're glad you're interested in helping improve Janus and grow the project!
First and foremost, please be sure you've read our code of conduct. Once you've done so, you can dive right in, or the section below that best describes you.
A framework project isn't much good without friendly people to help newcomers up on their feet. Janus is quite simple once you are used to it, but it can be strange and alien when you first get started, if you are used to other contemporary frameworks.
Right now, the primary space we have for this sort of question and answer is the community Discord, but this might change and will hopefully expand as the project grows.
In general, if you find a bug or you have a solution to an issue that's already been filed and discussed on GitHub, feel free to dive right in.
If you have an idea for a new feature or an improvement to an existing one, we suggest that you first find or file an issue to discuss it before beginning work. Janus is not a do-everything framework, and not every feature will be accepted. It used to be much more expansive than it is today, and over time those structures and classes have been whittled down to what you see today.
In fact, because Janus is focused on providing a highly useful and immediately composable set of primitives in the functional ideal, we are generally more likely to welcome ideas that reduce the footprint rather than increase it, offering the same functionality through a truer representation of the underlying ideas.
As for the code itself, it is not perfect as it stands today and contributions will not be judged to that kind of standard. As with all things, the goal is to improve it continually and incrementally.
Above all, we value the functional purity of the developer experience, and performance where we can win it. Janus adheres to pragmatic purity: we do not hesitate to build stateful internal machines so long as they are sound and they expose the declarative and functional interfaces you see today.
Please write tests.