Thank you for your interest in contributing to GhJSON.NET!
-
Clone the repository:
git clone https://github.com/architects-toolkit/ghjson-dotnet.git cd ghjson-dotnet -
Restore dependencies:
dotnet restore
-
Build the solution:
dotnet build
-
Run tests:
dotnet test
ghjson-dotnet/
├── src/
│ ├── GhJSON.Core/ # Platform-independent models & operations
│ └── GhJSON.Grasshopper/ # Grasshopper integration
├── tests/
│ ├── GhJSON.Core.Tests/ # Core unit tests
│ ├── GhJSON.Grasshopper.Tests/ # Grasshopper integration tests
│ └── GhJSON.Grasshopper.TestComponents/ # Test components for GH tests
├── tools/ # Build and utility scripts
├── .github/
│ └── workflows/ # CI/CD workflows
└── docs/ # Documentation
- Fork the repository
- Create a topic branch from
main(git checkout -b feature/amazing-feature) - Make your changes
- Run tests (
dotnet test) - Commit your changes using Conventional Commit style (
git commit -m 'feat: add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request targeting
main
All pull requests target main — there is no dev branch. Fixes for a
specific released line target its release/X.Y stabilization branch instead.
See Branching and Release Workflow for details.
- Follow the existing code style
- Use XML documentation comments for public APIs
- Keep methods focused and small
- Write unit tests for new functionality
The release process is automated via GitHub Actions:
- Release 1 - Prepare Release (manual) → opens a
release-prep/<version>PR - Release 2 - Tag on Merge → creates the bare version tag and a draft GitHub Release
- Release Published →
release-3-build.ymlbuilds packages and attaches them to the release - Publish to NuGet (manual) → pushes packages to nuget.org via trusted publishing
See docs/RELEASE_WORKFLOW.md for the full branch model, stabilization lines, and hotfix flow.
By contributing, you agree that your contributions will be licensed under the Apache-2.0 license.