Contributing¶
Thank you for your interest in contributing to BESSER! This section covers everything you need to get started, from setting up your environment to submitting a pull request.
Tip
Not sure where to start? Check Where to Contribute to find the part of the codebase
that matches your interests, or browse
open issues labeled
good first issue.
Quick Links¶
Contributor Guide — Full setup, workflow, and quality guide
Where to Contribute — Where to contribute (metamodel, generators, utilities, backend)
Guide: Create a New Generator — Step-by-step guide for adding a new code generator
Guide: Add a New DSL — Step-by-step guide for adding a new modeling language
End-to-End: New Diagram Type + DSL — End-to-end workflow for new diagram types (frontend + backend)
AI Assistant Guide — Guidelines for AI-assisted contributions
Code Style¶
Python: PEP 8, 4-space indentation, 120-character line limit
Linting: The CI pipeline uses Ruff with rules E, W, F enabled. Run locally before pushing:
pip install ruff ruff check besser/
Naming:
snake_casefor functions and variables,PascalCasefor classes,UPPER_CASEfor constantsCommits: Use Conventional Commits (
feat:,fix:,refactor:,docs:,test:)
Branching and PR Workflow¶
Create a feature branch from
master(e.g.,feature/add-rdf-generator).Make focused, incremental commits.
Run tests:
python -m pytestRun linting:
ruff check besser/Build docs (if changed):
cd docs && make htmlPush and open a pull request against
master.Fill in the PR description with: what changed, why, how to test, any follow-up work.
Respond to review feedback — reviews are collaborative.
CI will automatically run tests on Python 3.10/3.11/3.12, Ruff linting, and (for frontend changes) npm lint + build.
Our Team¶
Maintainers:
We want to recognize the work of the contributors:
Contact¶
You can reach us at: info@besser-pearl.org