A small group of volunteer developers building and maintaining free, fast and reliable open-source tools.
Effective date: March 28th, 2026 Applies to: All Octovel GitHub repositories
These standards define the technical expectations that apply to all code written and maintained under the Octovel organization. They are intentionally language-agnostic and tool-agnostic, focusing on principles rather than implementation details. Each repository may extend these standards with language-specific or tooling-specific rules documented in its own README.md or CONTRIBUTING.md.
Adhering to these standards ensures that Octovel projects remain consistent, maintainable, and accessible to contributors regardless of which repository they work on.
These standards are to be read alongside our Contribution Guidelines and Community Guidelines.
Code should be written to be read. Prefer straightforward, explicit solutions over compact or overly abstract ones. A contributor unfamiliar with the codebase should be able to understand the intent of a module or function without requiring deep context.
Each module, package, or file should have a single, clearly defined responsibility. Avoid mixing unrelated concerns within the same unit. Business logic, data access, and presentation layers must remain clearly separated.
Follow the structural conventions already established in the repository you are contributing to. If a pattern exists for how modules are organized, how files are named, or how dependencies are injected, maintain that pattern unless a refactor is explicitly intended and discussed.
Octovel projects favor lightweight, self-contained implementations. Avoid introducing external dependencies for functionality that can be reasonably implemented without them. Every new dependency must be justified by the value it provides relative to the maintenance cost it introduces.
Do not abstract until the need for abstraction is clear and recurring. Premature abstractions add complexity without benefit and make codebases harder to navigate. Prefer duplication over the wrong abstraction.
All code must be formatted using the formatting tool configured in the repository before being submitted. Do not submit code with formatting inconsistencies. Refer to the repository’s documentation for the specific tool and configuration in use.
All code must pass the linting rules configured in the repository. Linting errors must be resolved before a pull request is opened. Suppressing linter rules inline is permitted only when strictly necessary and must be accompanied by a comment explaining the reason.
Names should be descriptive, unambiguous, and consistent with the conventions of the language and repository. Avoid abbreviations unless they are universally understood within the domain. Names should reveal intent without requiring a comment to explain them.
isValid, hasPermission).Do not use unexplained literal values (numbers, strings, or booleans) inline in logic. Extract them into named constants that convey their meaning and purpose.
All non-trivial changes must be accompanied by tests. A pull request that introduces new functionality without tests will not be accepted unless the absence of tests is explicitly justified and agreed upon by a maintainer.
Tests serve as living documentation. Each test must:
Aim to maintain or improve the test coverage of any file you modify. Contributions that significantly reduce coverage without justification will be flagged during review. Coverage is a signal, not a goal in itself, prioritize meaningful tests over superficial ones.
Never submit a pull request with failing tests. If an existing test fails due to an intentional behavioral change, update the test and document the reason in the pull request description.
Every function, method, type, or module that is part of a public API must be documented. Documentation must describe:
Every repository must include a README.md at its root that covers at minimum:
Significant changes must be reflected in the repository’s changelog, if one exists. Follow the format already established in the repository. If no changelog exists, maintainers may request one be introduced as part of a major contribution.
Documentation that is inaccurate is more harmful than no documentation. When modifying behavior, update the corresponding documentation as part of the same pull request. Documentation-only pull requests are equally welcome and valued.
| Resource | URL |
|---|---|
| Contribution Guidelines | https://developer.octovel.org/guidelines |
| Community Guidelines | https://community.octovel.org/guidelines |
| GitHub Organization | https://github.com/octovel |
For questions about these standards, reach out in the #discussion channel on Discord or contact a maintainer directly.