diff --git a/.github/ISSUE_TEMPLATE/a_bug_report.yaml b/.github/ISSUE_TEMPLATE/a_bug_report.yaml new file mode 100644 index 0000000..3075a99 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/a_bug_report.yaml @@ -0,0 +1,121 @@ +name: πŸͺ³ Bug Report +description: Create a report to help us reproduce and fix the bug + +title: '[BUG]: ' +labels: +- bug +- triage + +body: +- type: markdown + attributes: + value: > + **Before submitting a bug, please make sure the issue hasn't been already addressed by [searching through](https://github.com/saezlab/ontograph/issues).** + Please write your bug report in English to ensure it can be understood and addressed by the development team. + + #---------------- Installed From -------------- +- type: dropdown + id: source + attributes: + label: Source + description: OntoGraph has been installed from + options: + - conda + - pip + - uv + - poetry + - other (specify in text) + validations: + required: true + +- type: input + id: source-other + attributes: + label: other source + placeholder: e.g., from source + + #-------------- Python version -------------- +- type: input + id: Python + attributes: + label: Python version + placeholder: e.g., 3.10 + validations: + required: true + + #-------------- OntoGraph version -------------- +- type: input + id: OntoGraph-version + attributes: + label: OntoGraph version + placeholder: e.g., OntoGraph v0.0.1 + validations: + required: true + + #-------------- OS Platform and distribution -------------- +- type: input + id: OS + attributes: + label: OS platform and distribution + placeholder: e.g., Linux Ubuntu 16.04 + + #-------------- Describe the Bug -------------- +- type: textarea + attributes: + label: Describe the bug + description: | + Please provide a clear and concise description of the bug. + + If applicable, include a minimal example that allows us to reproduce the error by running the code. + It's crucial that the snippet is as short and focused as possible, so please remove any unnecessary code + to help us debug efficiently. We will copy and paste your code, and we expect to see the same result as you did. + Avoid using external data and make sure to include all relevant imports, etc. For example: + + ```python + # All necessary imports at the beginning + from ontograph import ClientOntology + + # A succinct reproducing example trimmed down to the essential parts: + go_client = ClientOntology() + + go_client.load() # Note: the bug is here! + ``` + + If the code is too lengthy (though we hope it's not), feel free to place it in a public gist and share the link in the issue: https://gist.github.com. + + Instead of providing the expected results, please paste or describe the actual results you observe. If you encounter an error, include the error message along with the full traceback. It's helpful to wrap error messages in ```` ```triple quotes blocks``` ````. + placeholder: | + A clear and concise description of what the bug is. + + ```python + # Sample code to reproduce the problem + ``` + + ``` + The error message you got, with the full traceback. + ``` + validations: + required: true + + #-------------- Relevant LOG Output -------------- +- type: textarea + id: logs + attributes: + label: Relevant LOG output + description: Please copy and paste any relevant log output. This will be automatically formatted into code, so no need for backticks. + render: shell + + #-------------- Code of Conduct -------------- +- type: checkboxes + id: terms + attributes: + label: Code of Conduct + description: By submitting this issue, you agree to follow our [Code of Conduct](https://github.com/saezlab/ontograph/blob/main/CODE_OF_CONDUCT.md). + options: + - label: I agree to follow this project's Code of Conduct + required: true + +- type: markdown + attributes: + value: > + Thank you for your contribution! πŸŽ‰ – Saezlab Organization - OmniPath team diff --git a/.github/ISSUE_TEMPLATE/b_feature_request.yaml b/.github/ISSUE_TEMPLATE/b_feature_request.yaml new file mode 100644 index 0000000..dbea247 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/b_feature_request.yaml @@ -0,0 +1,69 @@ +name: ✨ Feature Request +description: Submit a proposal/request for a new OntoGraph feature + +title: '[FEAT]: ' +labels: +- feature +projects: [ontograph/1] + +body: +- type: markdown + attributes: + value: > + **Note:** Please write your bug report in English to ensure it can be understood and addressed by the development team. + + #-------------- Feature type -------------- +- type: dropdown + id: feature-type + attributes: + label: Feature Type + description: Please select what type of feature request you would like to propose. + options: + - Add new functionality to OntoGraph + - Change existing functionality in OntoGraph + - Remove existing functionality in OntoGraph + multiple: false + validations: + required: true + + #-------------- Feature description and motivation -------------- +- type: textarea + attributes: + label: πŸš€ The feature and motivation + description: > + Provide a clear and concise summary of the proposed feature, including the motivation behind it. + If your request addresses a specific problem, describe it (e.g., "I'm working on X and need Y to be achievable"). + If this is connected to an existing GitHub issue, please include a link. + placeholder: | + **Feature description** + As a user, I would like the ability to import a csv file from SwissLipids and create an ontology with this data. + + **Motivation** + Enabling users to import CSV files from SwissLipids and automatically generate an ontology streamlines the integration + of curated lipid data into the platform. This functionality reduces manual preprocessing, ensures data consistency, + and accelerates research workflows, while supporting reproducibility and adherence to community standards. + + validations: + required: true + + #-------------- Additional context -------------- +- type: textarea + attributes: + label: Additional context + description: > + Add any other context or screenshots about the feature request. + + #-------------- Code of Conduct -------------- +- type: checkboxes + id: terms + attributes: + label: Code of Conduct + description: By submitting this issue, you agree to follow our [Code of Conduct](https://github.com/saezlab/ontograph/blob/main/CODE_OF_CONDUCT.md). + options: + - label: I agree to follow this project's Code of Conduct + required: true + +- type: markdown + attributes: + value: > + Thank you for your contribution! πŸŽ‰ – Saezlab Organization - OmniPath team diff --git a/.github/ISSUE_TEMPLATE/c_documentation.yaml b/.github/ISSUE_TEMPLATE/c_documentation.yaml new file mode 100644 index 0000000..11d1fa7 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/c_documentation.yaml @@ -0,0 +1,57 @@ +name: πŸ“” Documentation Improvement +description: Report wrong or missing documentation + +title: '[DOC]: ' +labels: +- docs +- triage +projects: [ontograph/1] + +body: +#---------------- Location of the documentation -------------- +- type: textarea + id: location + attributes: + label: Location of the documentation + description: > + Please provide the location of the documentation, e.g. "catalog.load_catalog()" or the + URL of the documentation, e.g. + "https://saezlab.github.io/ontograph/reference/source/ontograph/client-catalog/" + placeholder: https://saezlab.github.io/ontograph/reference/source/ontograph/client-catalog/ + validations: + required: true + +#---------------- Problem Description -------------- +- type: textarea + id: problem + attributes: + label: Documentation problem + description: > + Please provide a description of what documentation you believe needs to be fixed/improved + validations: + required: true + +#---------------- Suggested Fix -------------- +- type: textarea + id: suggested-fix + attributes: + label: Suggested fix for documentation + description: > + Please explain the suggested fix and **why** it's better than the existing documentation + validations: + required: true + +#-------------- Code of Conduct -------------- +- type: checkboxes + id: terms + attributes: + label: Code of Conduct + description: By submitting this issue, you agree to follow our [Code of Conduct](https://github.com/saezlab/ontograph/blob/main/CODE_OF_CONDUCT.md). + options: + - label: I agree to follow this project's Code of Conduct + required: true + +- type: markdown + attributes: + value: > + Thank you for your contribution! πŸŽ‰ – Saezlab Organization - OmniPath team diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..c9156fa --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,79 @@ +# Pull Request + +> When to use: Use this default template for most changes (features, small fixes, refactors, docs). If your change is a bug fix, performance optimization, maintenance/chore, or a breaking change, consider using one of the specialized templates under `.github/PULL_REQUEST_TEMPLATE/`. + +Thank you for contributing to OntoGraph! Please fill out the sections below to help us review efficiently. + +## Summary + +- Link to issue(s): Closes # (or) Related to # +- Brief description of the change: + +## Type of change + +Select one or more: +- [ ] Bug fix (non-breaking change that fixes an issue) +- [ ] Feature (non-breaking change that adds functionality) +- [ ] Documentation update +- [ ] Refactor/maintenance (no functional change) +- [ ] Performance improvement +- [ ] CI/CD or tooling +- [ ] Breaking change (fix or feature that would cause existing functionality to not work as expected) + +## Changes + +- High-level list of changes (modules, major functions/classes touched) +- Any data files or schema changes +- Any API changes (inputs/outputs, public interfaces) + +## Screenshots or demos (optional) + +If relevant, include images, terminal outputs, or notebook snippets. + +## Checklist + +- Code quality & style + - [ ] Follows project style and conventions + - [ ] Pre-commit hooks run locally + + ```bash + pre-commit run -a + ``` +- Tests + - [ ] Unit tests added/updated + - [ ] All tests pass locally (`pytest`) + - [ ] Includes edge cases (empty/null, invalid input, large inputs) +- Documentation + - [ ] User docs updated (MkDocs in `docs/` as needed) + - [ ] README updated if behavior or usage changed + - [ ] Docstrings and comments added where helpful +- Reliability + - [ ] No secrets or credentials in code or history + - [ ] Backwards compatibility considered; migration notes added if breaking + - [ ] Performance implications considered (time/memory), benchmarks if relevant +- Project hygiene + - [ ] Linked issues referenced with `Closes #...` or `Related to #...` + - [ ] Changelog entry prepared (see `CHANGELOG.md`) + - [ ] Labels applied (bug, enhancement, docs, etc.) +- Community standards + - [ ] I have read and agree to the [Code of Conduct](../CODE_OF_CONDUCT.md) + +## Test plan + +Describe how you tested the changes. Include commands, datasets, and expected outcomes. If applicable, reference tests in `tests/`: + +```bash +# Example (adjust as needed) +pytest -q +``` + +## Breaking changes (if any) + +- Describe what breaks and how users should migrate. +- Provide a migration example or script if possible. + +## Additional context + +- Risks, trade-offs, or follow-up tasks +- Dependencies or environment changes +- Related PRs diff --git a/.github/PULL_REQUEST_TEMPLATE/breaking_change.md b/.github/PULL_REQUEST_TEMPLATE/breaking_change.md new file mode 100644 index 0000000..54c82be --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE/breaking_change.md @@ -0,0 +1,39 @@ +# Breaking Change Pull Request + +> When to use: Changes that break backwards compatibility; requires a migration guide and communication plan. + +## Summary +- Closes # +- Scope and rationale for breaking change + +## Deprecation & Migration +- Deprecation path and timeline +- Migration guide and examples +- Scripts or tools to assist migration + +## API / Data impacts +- Public API changes +- Data/schema changes + +## Versioning & Communication +- Version bump strategy +- Communication plan (release notes, docs) + +## Tests +- [ ] Updated tests for new behavior +- [ ] Migration tests where possible +- [ ] All tests pass locally (`pytest -q`) + +## Documentation +- [ ] Docs updated (MkDocs) and README +- [ ] Clear migration instructions visible to users + +## Checklist +- [ ] Backwards compatibility noted as broken (explicit) +- [ ] Changelog entry prepared (see `CHANGELOG.md`) +- [ ] Risk assessment and rollback plan +- [ ] Labels set (breaking-change) +- [ ] I agree to the [Code of Conduct](../../CODE_OF_CONDUCT.md) + +## Additional notes +- Known limitations and follow-ups diff --git a/.github/PULL_REQUEST_TEMPLATE/bug_fix.md b/.github/PULL_REQUEST_TEMPLATE/bug_fix.md new file mode 100644 index 0000000..69ee6c2 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE/bug_fix.md @@ -0,0 +1,52 @@ +# Bug Fix Pull Request + +> When to use: Fixing a reported issue or regression. Emphasizes reproduction, root cause, and regression tests. + +## Summary +- Closes # +- Brief description of the bug and fix + +## Environment and reproduction +- Affected version(s): +- OS / Python / dependencies: +- Reproduction steps: + 1. ... + 2. ... + 3. Expected vs actual behavior: + +## Root cause analysis +- What caused the bug? +- Why wasn’t it caught earlier? +- Areas impacted: + +## Fix details +- Approach and scope +- Any trade-offs +- Risk assessment + +## Tests +- [ ] Regression test added/updated +- [ ] Edge cases covered (empty/null, invalid input, large inputs) +- [ ] All tests pass locally (`pytest -q`) + +## Documentation +- [ ] User docs updated if behavior changed (`docs/`) +- [ ] README updated if usage changed + +## Checklist +- [ ] Code style and pre-commit + + ```bash + pre-commit run -a + ``` +- [ ] Performance impact considered +- [ ] No secrets/credentials introduced +- [ ] Labels set (bug) +- [ ] Changelog entry prepared (see `CHANGELOG.md`) +- [ ] I agree to the [Code of Conduct](../../CODE_OF_CONDUCT.md) + +## Test plan +Describe how you validated the fix. + +## Additional notes +- Follow-ups or monitoring plan diff --git a/.github/PULL_REQUEST_TEMPLATE/docs.md b/.github/PULL_REQUEST_TEMPLATE/docs.md new file mode 100644 index 0000000..a42a443 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE/docs.md @@ -0,0 +1,26 @@ +# Documentation Pull Request + +> When to use: Documentation-only changes (MkDocs pages, README, examples). + +## Summary +- Related to # +- Scope of documentation changes + +## Changes +- Pages/files updated (MkDocs paths under `docs/`) +- Links checked and validated +- Screenshots or diagrams (optional) + +## Preview (optional) +- If you have a preview link, include it + +## Checklist +- [ ] Accurate and up-to-date information +- [ ] Cross-links added where helpful +- [ ] Lint/formatting for Markdown +- [ ] Changelog entry prepared (see `CHANGELOG.md`) if user-facing docs changed +- [ ] README updated (if relevant) +- [ ] I agree to the [Code of Conduct](../../CODE_OF_CONDUCT.md) + +## Additional notes +- Any follow-ups or open questions diff --git a/.github/PULL_REQUEST_TEMPLATE/feature.md b/.github/PULL_REQUEST_TEMPLATE/feature.md new file mode 100644 index 0000000..dac881d --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE/feature.md @@ -0,0 +1,47 @@ +# Feature / Enhancement Pull Request + +> When to use: New capabilities or enhancements that change behavior or APIs. + +## Summary +- Closes # +- Problem statement: +- Proposed solution: + +## Design +- High-level design and rationale +- Alternatives considered +- Dependencies or migrations + +## API / Interfaces +- Public API changes (inputs/outputs) +- Backwards compatibility notes + +## Documentation +- [ ] User docs updated (`docs/`) +- [ ] README updated +- [ ] Examples/tutorials added or updated + +## Tests +- [ ] Unit tests for new functionality +- [ ] Edge cases +- [ ] All tests pass locally (`pytest -q`) + +## Checklist +- [ ] Code style and pre-commit + + ```bash + pre-commit run -a + ``` +- [ ] Performance implications considered (time/memory) +- [ ] Labels set (enhancement/feature) +- [ ] Changelog entry prepared (see `CHANGELOG.md`) +- [ ] I agree to the [Code of Conduct](../../CODE_OF_CONDUCT.md) + +## Acceptance criteria +- Outline concrete criteria for reviewers to approve + +## Test plan +- Steps to validate, datasets, expected outcomes + +## Additional context +- Risks, trade-offs, or follow-ups diff --git a/.github/PULL_REQUEST_TEMPLATE/maintenance.md b/.github/PULL_REQUEST_TEMPLATE/maintenance.md new file mode 100644 index 0000000..2e1fdb7 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE/maintenance.md @@ -0,0 +1,31 @@ +# Maintenance / Chore Pull Request + +> When to use: Tooling, CI, dependency bumps, formatting, or code health. + +## Summary +- Related to # +- Scope: tooling/CI/dependencies/formatting + +## Changes +- Tools or CI jobs updated +- Dependencies bumped (versions, rationale) +- Rollback plan + +## Reliability & Performance +- Impact assessment +- [ ] Performance checked if relevant + +## Checklist +- [ ] Code style and pre-commit + + ```bash + pre-commit run -a + ``` +- [ ] CI passes +- [ ] No secrets/credentials introduced +- [ ] Labels set (chore/maintenance) +- [ ] Changelog entry prepared (see `CHANGELOG.md`) if user-visible behavior changes +- [ ] I agree to the [Code of Conduct](../../CODE_OF_CONDUCT.md) + +## Additional notes +- Risks or follow-ups diff --git a/.github/PULL_REQUEST_TEMPLATE/performance.md b/.github/PULL_REQUEST_TEMPLATE/performance.md new file mode 100644 index 0000000..6107a8d --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE/performance.md @@ -0,0 +1,30 @@ +# Performance Pull Request + +> When to use: Optimizations requiring benchmarks and documented methodology. + +## Summary +- Related to # +- Area optimized (loader, queries, graph operations) + +## Methodology +- Benchmark setup (hardware, dataset, parameters) +- Metrics: time, memory, throughput +- Baseline vs new results + +## Changes +- What was optimized and how +- Trade-offs and risks + +## Tests +- [ ] Performance tests or benchmarks included +- [ ] Functional tests still pass (`pytest -q`) + +## Checklist +- [ ] Documented methodology and reproducibility +- [ ] Changelog entry prepared (see `CHANGELOG.md`) +- [ ] Monitoring/observability plan (if applicable) +- [ ] Labels set (performance) +- [ ] I agree to the [Code of Conduct](../../CODE_OF_CONDUCT.md) + +## Additional notes +- Future work or guardrails diff --git a/.github/release-drafter.yml b/.github/release-drafter.yml new file mode 100644 index 0000000..12e2ba2 --- /dev/null +++ b/.github/release-drafter.yml @@ -0,0 +1,36 @@ +name-template: v$NEXT_PATCH_VERSION + +categories: +- title: πŸš€ Features + labels: + - enhancement + - feature +- title: πŸ› Fixes + labels: + - bug +- title: 🧰 Maintenance + labels: + - chore + - maintenance + - ci +- title: πŸ“ Documentation + labels: + - docs +- title: ⚑ Performance + labels: + - performance +- title: πŸ”₯ Breaking changes + labels: + - breaking-change + +change-template: '- $TITLE (#$NUMBER) by @$AUTHOR' + +template: | + ## Changes + $CHANGES + + ## Contributors + $CONTRIBUTORS + + --- + This release was generated by Release Drafter. diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..dd2efd2 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,26 @@ +# Changelog + +All notable changes to this project will be documented in this file. + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), +and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +## [Unreleased] + +### Added +- + +### Changed +- + +### Fixed +- + +### Deprecated +- + +### Removed +- + +### Security +- diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md new file mode 100644 index 0000000..05325ea --- /dev/null +++ b/CODE_OF_CONDUCT.md @@ -0,0 +1,49 @@ +# Contributor Code of Conduct + +This project follows the [Contributor Covenant, version 2.1](https://www.contributor-covenant.org/version/2/1/code_of_conduct.html). + +## Our Pledge +We pledge to make participation in this project a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation. + +## Our Standards +Examples of positive behavior: +- Being respectful and inclusive. +- Giving and accepting constructive feedback. +- Focusing on what is best for the community. + +Unacceptable behavior includes: +- Harassment, discrimination, or derogatory comments. +- Trolling, insulting/derogatory comments, and personal attacks. +- Public or private harassment. +- Publishing others’ private information without permission. + +## Enforcement Responsibilities +Project maintainers are responsible for clarifying and enforcing standards. They may remove, edit, or reject contributions not aligned with this Code and may temporarily or permanently ban any contributor for behaviors that they deem inappropriate, threatening, offensive, or harmful. + +## Reporting +Report issues to: [edwin.carreno@iwr.uni-heidelberg.de](mailto:edwin.carreno@iwr.uni-heidelberg.de) +- Include relevant details (links, screenshots, timestamps). +- Reports are handled confidentially. +- Maintainers will acknowledge receipt within 7 days and aim to resolve within 30 days. + + +## Enforcement Guidelines +Maintainers will use these guidelines when taking action: + +1. Correction + - Private warning; clarification of expectations. + +2. Warning + - Official warning; continued behavior may lead to further action. + +3. Temporary Ban + - Time-limited suspension from participation. + +4. Permanent Ban + - Removal from the community for severe or repeated violations. + +## Scope +This Code applies in all project spaces (issues, PRs, discussions, docs, chats) and in public spaces when representing the project or community. + +## Attribution +This Code of Conduct is adapted from the Contributor Covenant v2.1. See the [FAQ](https://www.contributor-covenant.org/faq) and translations at https://www.contributor-covenant.org/translations. diff --git a/README.md b/README.md index 89112fb..8802cae 100644 --- a/README.md +++ b/README.md @@ -148,7 +148,23 @@ to discuss what you would like to change. Please make sure to update tests as appropriate. -- [ ] TODO: add contribution guidelines. All of them can be modified in the mkdocs documentation (./docs/community) +- Community Standards and Code of Conduct + - We value a respectful, inclusive, and collaborative environment. Please read our [Code of Conduct](./CODE_OF_CONDUCT.md) before participating (issues, discussions, PRs). + - For contribution guidelines (how to propose changes, style, testing), see the [Community docs](./docs/community/). + +### Choosing a Pull Request template + +When opening a PR, GitHub will offer a template picker: +- Use the default template for most changes. +- Choose a specialized template under `.github/PULL_REQUEST_TEMPLATE/` when appropriate: + - `bug_fix.md` β€” reported issues and regressions + - `feature.md` β€” new capabilities or enhancements + - `docs.md` β€” documentation-only updates + - `maintenance.md` β€” tooling, CI, dependencies, formatting + - `performance.md` β€” optimizations with benchmarks + - `breaking_change.md` β€” changes that require migration guidance + +Each template includes a checklist for tests, docs, pre-commit, and changelog entries. ## License diff --git a/docs/assets/project-banner-readme.png b/docs/assets/project-banner-readme.png index c03d1c7..d2f5b72 100644 Binary files a/docs/assets/project-banner-readme.png and b/docs/assets/project-banner-readme.png differ diff --git a/docs/community/index.md b/docs/community/index.md index c15efea..10ec130 100644 --- a/docs/community/index.md +++ b/docs/community/index.md @@ -2,6 +2,8 @@ Welcome to the ontograph community! We follow open-source principles and encourage any sort of contribution. We communicate on GitHub, where we also organise our projects. +> Please review our [Code of Conduct](../../CODE_OF_CONDUCT.md) before participating in issues, discussions, and pull requests. +
- :octicons-book-24:{ .lg .middle } __Where to Start__ @@ -18,8 +20,5 @@ organise our projects. ## Contributing Guidelines GitHub Links -- [Contribution guidelines](https://github.com/ontograph/ontograph/blob/main/CONTRIBUTING.md) - -- [Code of Conduct](https://github.com/ontograph/ontograph/blob/main/CODE_OF_CONDUCT.md) - -- [Developer Guide](https://github.com/ontograph/ontograph/blob/main/DEVELOPER.md) +- Contribution guidelines (coming soon in this docs section) +- [Code of Conduct](../../CODE_OF_CONDUCT.md)