-
Notifications
You must be signed in to change notification settings - Fork 4.8k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
dotnet/runtimelab repo proposal #35609
Comments
I couldn't figure out the best area label to add to this issue. Please help me learn by adding exactly one area label. |
I suppose this means rebase the fork and then merge from the fork, right? |
Thanks for getting this proposal up! Do you have an idea of how this might work with larger-scale changes? For example, let's say we were trying to stand up |
I expect that the experiments will be building runtime refs and packs that will allow people to publish self-contained app with the experimental runtime using regular SDK. I do not expect that the experiments will try to build shared framework integrated into SDK.
The goal of the experiments should be to gather the data to prove the feature. It do not expect that we will do 100% of the productized implementation in dotnet/runtimelab, and then just integrate it over. It will be more like do first 10%-20% in runtimelab, and if it is proven, do the remaining 80% in dotnet/runtime.
Depends. It is one of the possible strategies. For the experiments we have done in the past, we often found that we want to do things slightly differently for real or that we do not want to include everything that was prototyped in the experiment. Selective copy may be more appropriate for these case. |
https://github.com/dotnet/runtimelab is created now and the experiments are starting to live there. Woo-hoo! https://github.com/dotnet/runtimelab/blob/master/README.md has a link back to this issue for context. |
Encouraging .NET Runtime Experiments
Experimentation with new ideas is essential for successful innovation. However, we do not have a consistent or successful pattern for running larger scale experimental projects based on the .NET runtime today. For lack of better options, .NET runtime experiments live in dotnet/runtime directly (Utf8String) or in separate repo with unclear messaging (CoreRT). This discourages innovation and creates confusion among both our team and customers. That's the opposite of what we want.
We need to establish a pattern to run experimental projects that:
We are proposing to create a new dotnet/runtimelab repo as a shared place to hosts experimental projects based on the .NET runtime. This repo is going to be a fork of dotnet/runtime. Each experiment is going to live in its own branch in this repo. The master branch of dotnet/runtimelab is going to have the list of experiments and the branches they use to help with discoverability.
Questions and Answers
How is this different from dotnet/corefxlab?
The spirit is the same as with corefxlab. The key differences are that this spans the whole .NET runtime and that the experiments can be done across full stack by leveraging code from dotnet/runtime. The active experiments from corefxlab will be moved to runtimelab, and corefxlab repo will be archived.
Where are the experimental packages from runtimelab going to be published?
The packages are going to be published to dedicated NuGet feed. The packages are not going to be published to nuget.org. Same as corefxlab today. We only publish packages to nuget.org that we can commit to customers using in production apps.
What is the support policy for experimental projects?
The packages from dotnet/runtimelab are not supported by the .NET team for use in production. The packages published by dotnet/runtimelab do not have stable releases nor receive servicing fixes. Same as corefxlab today.
Do all experiments need to be done in runtimelab?
It is still fine to do small scale experiments in dotnet/runtime directly if:
An example of a small scale experiment that is perfectly fine to do in dotnet/runtime directly is ValueTask Pooling.
What does qualify the experiment to be included in dotnet/runtimelab?
The experiment must be sponsored by a dotnet/runtime contributor with commit permissions who has enough time to run it. The contributor and commit right permission model for the dotnet/runtimelab is identical to dotnet/runtime.
How does an experiment grow into a shipping .NET runtime feature?
The process for this is no different from ordinary features. The experiment has to demonstrate its value, public APIs need to go through API review, etc. Logistically, the relevant code is manually copied from dotnet/runtimelab to dotnet/runtime and deleted in dotnet/runtimelab. Same as corefxlab today.
What happens with dotnet/corert?
The Native AOT form-factor CoreRT project, based on the CoreCLR GC and RyuJIT, is going to be one of experiments hosted in dotnet/runtimelab. This is different from the plan published in Consolidating .NET GitHub Repos announcement.
What is going to be the engineering system for dotnet/runtimelab?
The engineering system for dotnet/runtimelab is going to be focused on ensuring that the experimental projects are usable and not completely broken. It is not going to guarantee high quality across all platforms. As such, it is going be much more lightweight compared to the engineering system of dotnet/runtime.
If an experiment requires additional validation, it will be addressed on a case-by-case basis.
The text was updated successfully, but these errors were encountered: