Experiments should be contained within a branch in the dotnet/runtimelab repository. Keeping all experiments branches in one repository helps with community visibility.
- Pick a good name for your experiment and create branch for it in dotnet/runtimelab. Branch names should be prefixed with
feature/
in order to have official build support.- If the experiment is expected to require changes of .NET runtime itself, it should be branched off of dotnet/runtime:main.
- Otherwise, the experiment should be branched off of dotnet/runtimelab:standalone-template to get CI and all publishing infrastructure for your experiment.
- Submit a PR to update the README.MD with the name of your branch and a brief description of the experiment. Example: #19
- Create label
area-<your experiment name>
for tagging issues. The label should use color#d4c5f9
. - Edit
README.MD
in your experiment branch to include details about the experiment. Example: README.md. - If your experiment is branched from dotnet/runtime:
- Update the pre-release label to include a unique identifier representing the name of the experiment to avoid package clashes given that all experiments publish to the same feed. To do this you need to update the versioning properties in
Versions.props
. Make sure the label you choose is maximum 7 chars long as NuGet has a limit on the version length so the official build would fail. - Update the
GitHubRepositoryName
property inDirectory.Build.Props
toruntimelab
. This is needed for the produced packages to have the right repository information and for source link to work correctly. - Edit
eng/pipelines/runtimelab.yml
in your branch to just build what your experiment needs on CI. - To avoid spurious github notifications for merges from upstream, delete
.github/CODEOWNERS
from your branch or replace it with setting specific to your experiment. Example: #26 - Make sure to edit your experiment branch to just build the packages that need to be built from that branch. Example PR. To read more about why this can cause issues, read this issue.
- Update the pre-release label to include a unique identifier representing the name of the experiment to avoid package clashes given that all experiments publish to the same feed. To do this you need to update the versioning properties in
- If your experiment is branched from dotnet/runtimelab:standalone-template follow the README.md.
- To make sure we follow our naming conventions, make sure all packages produced on your experiment are prefixed with
Microsoft.*
orSystem.*
.