Octovel

A small group of volunteer developers building and maintaining free, fast and reliable open-source tools.

View the Project on GitHub octovel/developer

Developer Standards

Effective date: March 28th, 2026 Applies to: All Octovel GitHub repositories


Introduction

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.


1. Architecture & Project Structure

1.1 Clarity Over Cleverness

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.

1.2 Separation of Concerns

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.

1.3 Consistency Within a Repository

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.

1.4 Minimal Dependencies

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.

1.5 Avoid Premature Abstraction

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.

1.6 File and Directory Naming


2. Code Style & Formatting

2.1 Automated Formatting

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.

2.2 Linting

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.

2.3 Naming Conventions

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.

2.4 Function and Method Design

2.5 Error Handling

2.6 Comments and Inline Documentation

2.7 Magic Values

Do not use unexplained literal values (numbers, strings, or booleans) inline in logic. Extract them into named constants that convey their meaning and purpose.


3. Testing Standards

3.1 Tests Are Required

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.

3.2 Test Scope

3.3 Test Clarity

Tests serve as living documentation. Each test must:

3.4 Test Coverage

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.

3.5 Failing Tests

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.


4. Documentation Standards

4.1 Public APIs Must Be Documented

Every function, method, type, or module that is part of a public API must be documented. Documentation must describe:

4.2 README

Every repository must include a README.md at its root that covers at minimum:

4.3 Changelog

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.

4.4 Keep Documentation Current

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.


Reference

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.