From 70521a4a47f46ecb15a51146e0b8ab6fea14cbad Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 11 Feb 2026 04:49:17 +0000 Subject: [PATCH 1/3] Initial plan From 0603ce22cff7f370c8c0552ff3ead2bde8efa7f3 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 11 Feb 2026 04:52:46 +0000 Subject: [PATCH 2/3] Add CONTRIBUTING.md and GitHub templates Co-authored-by: benaadams <1142958+benaadams@users.noreply.github.com> --- .github/ISSUE_TEMPLATE/bug_report.yml | 137 +++++++++++++++++++++ .github/ISSUE_TEMPLATE/feature_request.yml | 113 +++++++++++++++++ .github/ISSUE_TEMPLATE/task.yml | 124 +++++++++++++++++++ .github/PULL_REQUEST_TEMPLATE.md | 101 +++++++++++++++ 4 files changed, 475 insertions(+) create mode 100644 .github/ISSUE_TEMPLATE/bug_report.yml create mode 100644 .github/ISSUE_TEMPLATE/feature_request.yml create mode 100644 .github/ISSUE_TEMPLATE/task.yml create mode 100644 .github/PULL_REQUEST_TEMPLATE.md diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml new file mode 100644 index 0000000..16569a9 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -0,0 +1,137 @@ +name: Bug Report +description: Report a bug or unexpected behavior in Magma +title: "[Bug]: " +labels: ["bug"] +body: + - type: markdown + attributes: + value: | + Thank you for taking the time to report a bug! Please fill out the information below to help us understand and fix the issue. + + - type: textarea + id: description + attributes: + label: Description + description: A clear and concise description of the bug. + placeholder: What happened? + validations: + required: true + + - type: textarea + id: reproduction + attributes: + label: Steps to Reproduce + description: Detailed steps to reproduce the bug. + placeholder: | + 1. Create a network interface with... + 2. Send a packet using... + 3. Observe the error... + validations: + required: true + + - type: textarea + id: expected + attributes: + label: Expected Behavior + description: What did you expect to happen? + placeholder: The packet should be sent successfully... + validations: + required: true + + - type: textarea + id: actual + attributes: + label: Actual Behavior + description: What actually happened? + placeholder: An exception was thrown... + validations: + required: true + + - type: dropdown + id: component + attributes: + label: Affected Component + description: Which component is affected by this bug? + options: + - Magma.Link (Ethernet/ARP) + - Magma.Internet.Ip (IPv4/IPv6) + - Magma.Internet.Icmp + - Magma.Transport.Tcp + - Magma.Transport.Udp + - Magma.AF_XDP (Linux) + - Magma.NetMap (Linux) + - Magma.WinTun (Windows) + - Magma.PCap + - Magma.Network + - Magma.Common + - Documentation + - Other + validations: + required: true + + - type: dropdown + id: os + attributes: + label: Operating System + description: What operating system are you using? + options: + - Windows + - Linux + - macOS + - Other + validations: + required: true + + - type: input + id: os-version + attributes: + label: OS Version + description: What version of the operating system? + placeholder: "e.g., Ubuntu 22.04, Windows 11, macOS 14" + validations: + required: true + + - type: input + id: dotnet-version + attributes: + label: .NET Version + description: What version of .NET are you using? + placeholder: "e.g., .NET 10.0.102" + validations: + required: true + + - type: input + id: magma-version + attributes: + label: Magma Version + description: What version of Magma are you using? + placeholder: "e.g., 1.0.0 or commit hash" + validations: + required: true + + - type: textarea + id: logs + attributes: + label: Logs and Stack Traces + description: Paste any relevant logs, error messages, or stack traces. + placeholder: | + Exception details: + System.InvalidOperationException: ... + render: text + + - type: textarea + id: code + attributes: + label: Code Sample + description: If applicable, provide a minimal code sample that reproduces the issue. + placeholder: | + var interface = new NetworkInterface(...); + interface.SendPacket(...); + render: csharp + + - type: textarea + id: additional + attributes: + label: Additional Context + description: Any other information that might be relevant (network configuration, hardware details, etc.). + placeholder: Using Intel X710 NIC with AF_XDP... diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml new file mode 100644 index 0000000..37ea530 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -0,0 +1,113 @@ +name: Feature Request +description: Suggest a new feature or enhancement for Magma +title: "[Feature]: " +labels: ["enhancement"] +body: + - type: markdown + attributes: + value: | + Thank you for suggesting a new feature! Please provide as much detail as possible to help us understand your proposal. + + - type: textarea + id: problem + attributes: + label: Problem Statement + description: Describe the problem or limitation you're experiencing. + placeholder: I'm trying to implement custom protocol X, but there's no support for... + validations: + required: true + + - type: textarea + id: solution + attributes: + label: Proposed Solution + description: Describe your proposed solution or feature. + placeholder: Add a new IcmpV6 implementation that supports... + validations: + required: true + + - type: textarea + id: alternatives + attributes: + label: Alternatives Considered + description: Describe any alternative solutions or workarounds you've considered. + placeholder: I considered using raw sockets, but... + + - type: dropdown + id: component + attributes: + label: Target Component + description: Which component would this feature affect or be added to? + options: + - Magma.Link (Ethernet/ARP) + - Magma.Internet.Ip (IPv4/IPv6) + - Magma.Internet.Icmp + - Magma.Transport.Tcp + - Magma.Transport.Udp + - Magma.AF_XDP (Linux) + - Magma.NetMap (Linux) + - Magma.WinTun (Windows) + - Magma.PCap + - Magma.Network + - Magma.Common + - New component + - Documentation + - Other + validations: + required: true + + - type: dropdown + id: priority + attributes: + label: Priority + description: How important is this feature to you? + options: + - Critical - blocking my project + - High - would significantly improve my workflow + - Medium - nice to have + - Low - minor improvement + validations: + required: true + + - type: textarea + id: use-case + attributes: + label: Use Case + description: Describe your specific use case for this feature. + placeholder: I'm building a custom VPN solution that needs to... + validations: + required: true + + - type: textarea + id: examples + attributes: + label: Example Usage + description: If applicable, provide example code showing how the feature would be used. + placeholder: | + var handler = new IcmpV6Handler(...); + handler.ProcessPacket(packet); + render: csharp + + - type: textarea + id: references + attributes: + label: References + description: Links to relevant specifications, documentation, or prior art. + placeholder: | + - RFC 4443 (ICMPv6) + - https://example.com/protocol-spec + + - type: checkboxes + id: contribution + attributes: + label: Contribution + description: Are you willing to contribute to implementing this feature? + options: + - label: I am willing to submit a pull request for this feature + required: false + + - type: textarea + id: additional + attributes: + label: Additional Context + description: Any other context, screenshots, or information about the feature request. diff --git a/.github/ISSUE_TEMPLATE/task.yml b/.github/ISSUE_TEMPLATE/task.yml new file mode 100644 index 0000000..498366b --- /dev/null +++ b/.github/ISSUE_TEMPLATE/task.yml @@ -0,0 +1,124 @@ +name: Task +description: Create a task for project work (documentation, refactoring, testing, etc.) +title: "[Task]: " +labels: ["task"] +body: + - type: markdown + attributes: + value: | + Use this template for tasks that don't fit into bug reports or feature requests, such as documentation updates, refactoring, testing improvements, or project maintenance. + + - type: textarea + id: description + attributes: + label: Task Description + description: A clear description of the task to be completed. + placeholder: Update documentation for AF_XDP setup on Ubuntu 24.04... + validations: + required: true + + - type: dropdown + id: category + attributes: + label: Task Category + description: What type of task is this? + options: + - Documentation + - Testing + - Refactoring + - Performance optimization + - Build/CI improvements + - Dependency updates + - Code cleanup + - Security + - Other + validations: + required: true + + - type: dropdown + id: component + attributes: + label: Related Component + description: Which component does this task relate to? + options: + - Magma.Link (Ethernet/ARP) + - Magma.Internet.Ip (IPv4/IPv6) + - Magma.Internet.Icmp + - Magma.Transport.Tcp + - Magma.Transport.Udp + - Magma.AF_XDP (Linux) + - Magma.NetMap (Linux) + - Magma.WinTun (Windows) + - Magma.PCap + - Magma.Network + - Magma.Common + - Documentation + - Build/CI + - Multiple components + - Other + + - type: textarea + id: subtasks + attributes: + label: Sub-tasks + description: List specific sub-tasks or steps to complete this task (use markdown checkboxes). + placeholder: | + - [ ] Update README.md with new setup instructions + - [ ] Add code examples to documentation + - [ ] Update inline documentation + value: | + - [ ] + + - type: textarea + id: acceptance + attributes: + label: Acceptance Criteria + description: Define what "done" means for this task. + placeholder: | + - Documentation is updated and builds successfully + - Code examples compile and run + - No broken links in documentation + validations: + required: true + + - type: dropdown + id: priority + attributes: + label: Priority + description: How urgent is this task? + options: + - Critical + - High + - Medium + - Low + + - type: textarea + id: dependencies + attributes: + label: Dependencies + description: List any dependencies or blockers for this task. + placeholder: | + - Depends on #123 + - Blocked by feature implementation in #456 + + - type: textarea + id: phase + attributes: + label: Project Phase + description: Which project phase or milestone does this task belong to? + placeholder: Phase 0 (Foundation), Phase 1, etc. + + - type: checkboxes + id: contribution + attributes: + label: Contribution + description: Are you willing to work on this task? + options: + - label: I am willing to work on this task + required: false + + - type: textarea + id: additional + attributes: + label: Additional Context + description: Any other information relevant to this task. diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 0000000..5834b10 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,101 @@ +## Description + + + +## Related Issues + + + +## Type of Change + + + +- [ ] Bug fix (non-breaking change that fixes an issue) +- [ ] New feature (non-breaking change that adds functionality) +- [ ] Breaking change (fix or feature that would cause existing functionality to change) +- [ ] Documentation update +- [ ] Code refactoring (no functional changes) +- [ ] Performance improvement +- [ ] Test improvements +- [ ] Build/CI improvements + +## Component(s) Affected + + + +- [ ] Magma.Link (Ethernet/ARP) +- [ ] Magma.Internet.Ip (IPv4/IPv6) +- [ ] Magma.Internet.Icmp +- [ ] Magma.Transport.Tcp +- [ ] Magma.Transport.Udp +- [ ] Magma.AF_XDP (Linux) +- [ ] Magma.NetMap (Linux) +- [ ] Magma.WinTun (Windows) +- [ ] Magma.PCap +- [ ] Magma.Network +- [ ] Magma.Common +- [ ] Documentation +- [ ] Build/CI + +## Testing + + + +- [ ] All existing tests pass (`dotnet test`) +- [ ] Added new tests for the changes +- [ ] Tested on Linux +- [ ] Tested on Windows +- [ ] Manual testing performed (describe below) + +### Manual Testing Details + + + +## Code Quality + + + +- [ ] Code follows the project's coding standards (.EditorConfig) +- [ ] All public APIs have XML documentation comments +- [ ] No trailing whitespace in markdown files +- [ ] Commit messages follow the project's conventions +- [ ] Code builds without warnings (`dotnet build`) + +## Performance Impact + + + +- [ ] No performance impact +- [ ] Performance improvement (describe below) +- [ ] Potential performance regression (justified below) + +### Performance Notes + + + +## Breaking Changes + + + +### Migration Guide + + + +## Screenshots/Examples + + + +## Checklist + + + +- [ ] I have read the [CONTRIBUTING.md](../CONTRIBUTING.md) guidelines +- [ ] I have updated documentation where necessary +- [ ] I have added tests that prove my fix is effective or that my feature works +- [ ] All new and existing tests pass locally +- [ ] My code follows the code style of this project +- [ ] I have checked my code and corrected any misspellings + +## Additional Notes + + From a276a50e652f9c2a73901cbd8b6ea119e57b5329 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Wed, 11 Feb 2026 13:58:55 +0000 Subject: [PATCH 3/3] Add release process and branch strategy documentation Co-authored-by: benaadams <1142958+benaadams@users.noreply.github.com> --- CONTRIBUTING.md | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ac32a33..34e6984 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -12,6 +12,7 @@ Thank you for your interest in contributing to Magma! We welcome contributions f - [Code Style and Conventions](#code-style-and-conventions) - [Making Changes](#making-changes) - [Submitting a Pull Request](#submitting-a-pull-request) +- [Release Process](#release-process) - [Reporting Issues](#reporting-issues) - [Project Structure](#project-structure) - [Additional Resources](#additional-resources) @@ -278,6 +279,42 @@ git push origin feature/your-feature-name - Ensure CI checks pass - Be responsive to feedback +## Release Process + +Magma follows [Semantic Versioning](https://semver.org/) (SemVer) for version numbering: + +- **Major** (X.Y.Z → (X+1).0.0): Breaking changes that are not backward compatible +- **Minor** (X.Y.Z → X.(Y+1).0): New features that are backward compatible +- **Patch** (X.Y.Z → X.Y.(Z+1)): Bug fixes that are backward compatible + +### Creating a Release + +Releases are created from the `main` branch and follow this process: + +1. **Prepare the release**: + - Ensure all tests pass + - Update version numbers in `version.props` + - Update documentation (README.md, CHANGELOG.md if present) + - Create release notes summarizing changes + +2. **Tag the release**: + - Create an annotated git tag (e.g., `v1.2.3`) + - Push the tag to GitHub + +3. **Publish artifacts**: + - CI/CD pipeline builds and publishes NuGet packages + - GitHub release is created with release notes attached + +### Branch Strategy + +- **main**: Stable release branch; all commits should be production-ready +- **Feature branches**: Created from `main` for development: + - `feature/description` - New features + - `fix/description` - Bug fixes + - `docs/description` - Documentation changes + - `refactor/description` - Code refactoring + - `perf/description` - Performance improvements + ## Reporting Issues ### Before Opening an Issue