Fork and branch
Work on a branch named for what it does. Keep one concern per branch, so review can stay on one topic.
$ git clone https://github.com/<you>/TotallyHot-ArcRouter.git
$ git switch -c fix/token-accounting-rounding
Contribute
Arc Router is open source under AGPL-3.0. The code, the design documents, the architecture decision records, and the backlog are all in one repository, in the open. Issues, patches, and corrections are welcome.
01 The workflow
Fork, branch, build, test, open a pull request.
Work on a branch named for what it does. Keep one concern per branch, so review can stay on one topic.
$ git clone https://github.com/<you>/TotallyHot-ArcRouter.git
$ git switch -c fix/token-accounting-rounding
Every project in the solution has a test project beside it. Run the suite before you open the pull request.
$ cd src
$ dotnet build TotallyHotArcRouter.slnx
$ dotnet test TotallyHotArcRouter.slnx
Say what was wrong and how you know the new behaviour is right. If the change touches
routing, the graders, cost accounting, or the benchmark sync, say what you observed
before and after. A design document in docs/ that no longer matches your
change should move with it.
Against main. Expect questions about edge cases, particularly anywhere
provider credentials, proxy behaviour, or the sandbox boundary are involved.
02 Where the work is
03 Good first contributions
The router backlog and tracked todos are kept in the repository, in the open, with real items on them.
Router backlog →A confirmed reproduction on a second machine is often worth more than a guess at the fix.
Open issues →Documentation that has drifted from the code is a bug. Correcting it needs no build environment.
Browse the docs →04 Terms
Contributions are licensed under the GNU Affero General Public License v3.0, with the additional permission for linking against Microsoft platform components (WebView2 and the Windows App SDK). In short: use, modify, and redistribute freely, but if you distribute the software or run a modified version as a network service, make your corresponding source available under the same terms.
Read the exception →Every dependency the project redistributes is MIT, Apache-2.0, or BSD-3-Clause, so nothing pulls extra copyleft into the tree. If your change adds a dependency, check its license first and add it to the third-party notices.
Third-party notices →05 Start reading
The whole thing is readable in an afternoon. The handbook is the way in, and how-it-learns.md is the single best explanation of what the router is actually doing.