--- .title = "Contributing", .date = @date("2025-07-06T00:00:00"), .author = "Igor Támara", .layout = "tutorial.shtml", .draft = false, .custom = { .githubedit = "https://github.com/neurocyte/flow-website/tree/master/content/docs/contributing.smd"}, --- ## Asking for a feature Please [open an issue](https://github.com/neurocyte/flow/issues) that explains what is the requirement, being as descriptive as possible. First review other issues in case someone already requested the feature, or join [Discord](https://discord.com/invite/4wvteUPphx) to ask for more information. At the end, the issues in github have more chance to get developed, given that there are plenty of things to do for this kind of software. ## Reporting a problem If you discover a problem, or unexpected behaviour, feel free to join [Discord](https://discord.com/invite/4wvteUPphx) to check if there is a simple way to overcome the inconvenience or to get some guidance. [Reporting a bug](https://github.com/neurocyte/flow/issues) is a good way to contribute. When reporting one, it should contain: * Flow version. You get it with `flow --version` * What you were doing, if possible, step by step to reproduce it * What actually happened * What was expecting to happen * Any other information, like screenshots, video, screencast, the platform allows to add that information. Issues later on are tagged with proposed version to solve them, in case it's a low hanging fruit, it's possible that it can be solved pretty quick. Spreading the word is another way to contribute to Flow Code growth. ## Developing [Flow Control](https://flow-control.dev/) is programmed with [zig](https://ziglang.org/). [Fork](https://github.com/neurocyte/flow/fork), no worries, if you happen to use [codeberg](https://codeberg.org/neurocyte/flow), or [sourcehut](https://git.sr.ht/~neurocyte/flow), it's possible to fork and contribute via those services too. Using [Discord](https://discord.com/invite/4wvteUPphx) is a good starting point to discuss about what you are about to offer, or if you decide to pick an open issue, is a good practice first commenting in one of the channels to get some feedback and get to agreements or find guidance. This [summary](/docs/architecture) can help on getting started to follow the codebase. ### Coding style Please follow what you see in the source code for functions, Structs, variables, const names, etc... Functions have descriptive names to use less time adding and maintaining comments to communicate the purpose and intent. Don't worry about commenting each function, module or parameter, there are automated tools that are currently helping with this, take a peek on [deepwiki](https://deepwiki.com/neurocyte/flow); if you find something inaccurate in this doc or others, do open an issue or jump in [Discord](https://discord.com/invite/4wvteUPphx) and comment, it's valid to [improve too](https://github.com/neurocyte/flow-website/tree/master/content/docs/contributing.smd"). ### Commit comments It's better to use commits for different purposes, even if they look small and there is a temptation to include on the same new code, fixes and refactors. Making concise and self contained commits make review easier and future fixes possible, in case of need. Use these prefixes as much as you can, doing so helps when identifying the features and eases the process of letting others know about what's new, fixed and help communicate better when releasing. * `feat:` when there is a new feature, if specific to a mode, please use `feat: [mode]`. * `refactor`: when reorganizing code, usually when you make something clearer for future readers and commiters. * `fix:` When something changed to a more expected behaviour. * `build`: the commit doesn't change code at all. ### Testing It's possible that the test set grows as the project evolves, given that the amount of relationships among components increase the opportunity to generate regressions. ## Getting in touch. [Discord](https://discord.com/invite/4wvteUPphx) and [Github issues](https://github.com/neurocyte/flow/issues) are the main channels to do so.