Skip to content
This repository was archived by the owner on Jan 23, 2023. It is now read-only.

Commit 5c6e421

Browse files
committed
Merge pull request #1879 from richlander/rich-docs-update
Move wiki files to corefx and coreclr repos
2 parents 0c85a5f + 068c2c5 commit 5c6e421

25 files changed

+1544
-13
lines changed

CONTRIBUTING.md

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,7 @@
11
# Contributing
22

3-
See [Contributing] on the wiki for information about coding styles, source structure, making
4-
pull requests, and more.
3+
See [Contributing](Documentation/contributing.md) for information about coding styles, source structure, making pull requests, and more.
54

6-
[Contributing]: https://github.com/dotnet/corefx/wiki/Contributing
75
# Developers
86

9-
See the [Developer Guide] for details about developing in this repo.
10-
11-
[Developer Guide]: https://github.com/dotnet/corefx/wiki/Developer-Guide
7+
See the [Developer Guide](Documentation/developer-guide.md) for details about developing in this repo.

Documentation/README.md

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
Documents Index
2+
===============
3+
4+
Learn about .NET Core
5+
====================
6+
7+
- [Brief Intro to .NET Core](https://github.com/dotnet/coreclr/blob/master/Documentation/dotnetcore-intro.md)
8+
- [[WIP] Official .NET Core Docs](http://dotnet.readthedocs.org)
9+
10+
Get .NET Core
11+
=============
12+
13+
- [Get .NET Core DNX SDK on Windows](https://github.com/dotnet/coreclr/blob/master/Documentation/get-dotnetcore-dnx-windows.md)
14+
- [Get .NET Core DNX SDK on OS X](https://github.com/dotnet/coreclr/blob/master/Documentation/get-dotnetcore-dnx-osx.md)
15+
- [Get .NET Core DNX SDK on Linux](https://github.com/dotnet/coreclr/blob/master/Documentation/get-dotnetcore-dnx-linux.md)
16+
- [Get .NET Core (Raw) on Windows](https://github.com/dotnet/coreclr/blob/master/Documentation/get-dotnetcore-windows.md)
17+
18+
Project Docs
19+
============
20+
21+
- [Developer Guide](developer-guide.md)
22+
- [Project priorities](https://github.com/dotnet/coreclr/blob/master/Documentation/project-priorities.md)
23+
- [Contributing to CoreFX](contributing.md)
24+
- [Contributing to .NET Core](https://github.com/dotnet/coreclr/blob/master/Documentation/contributing.md)
25+
- [Contributing Workflow](https://github.com/dotnet/coreclr/blob/master/Documentation/contributing-workflow.md)
26+
- [Issue Guide](issue-guide.md)
27+
- [Branching Guide](branching-guide.md)
28+
- [API Review Process](api-review-process.md)
29+
- [Strong Name Signing](strong-name-signing.md)
30+
- [Open Source Signing](oss-signing.md)
31+
- [Repo Organization](repo-organization.md)
32+
33+
Coding Guidelines
34+
=================
35+
36+
- [C# coding style](coding-style.md)
37+
- [Framework Design Guidelines](framework-design-guidelines-digest.md)
38+
- [Cross-Platform Guidelines](cross-platform-guidelines.md)
39+
- [Performance Guidelines](performance-guidelines.md)
40+
- [Interop Guidelines](interop-guidelines.md)
41+
- [Breaking Changes](breaking-changes.md)
42+
- [Breaking Change Definitions](breaking-change-definitions.md)
43+
- [Breaking Change Rules](breaking-change-rules.md)
44+
45+
Building from Source
46+
====================
47+
48+
- [Building on Linux](linux-instructions.md)
49+
- [Code Coverage](code-coverage.md)
50+
51+
Other Information
52+
=================
53+
54+
- [CoreCLR Repo documentation](https://github.com/dotnet/coreclr/tree/master/Documentation)
55+
- [Porting to .NET Core](support-dotnet-core-instructions.md)
56+
- [.NET Standards (Ecma)](https://github.com/dotnet/coreclr/blob/master/Documentation/dotnet-standards.md)
57+
- [MSDN Entry for the CLR](http://msdn.microsoft.com/library/8bs2ecf4.aspx)
58+
- [Wikipedia Entry for the CLR](http://en.wikipedia.org/wiki/Common_Language_Runtime)

Documentation/api-review-process.md

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
API Review Process
2+
==================
3+
4+
The .NET Framework has a long standing history of taking API usability extremely seriously. Thus, we generally review every single API that is added to the product. This page discusses how we conduct API reviews for components that are open sourced.
5+
6+
## Process Goals
7+
8+
The key goals are:
9+
10+
* **Designed for GitHub**. In order to be sustainable and not be a hurdle for contributors the API review process must feel natural to folks familiar with GitHub.
11+
12+
* **Efficiency**. Performing API reviews requires looping in a set of experts. We want to conduct API reviews in an agile fashion without randomizing the reviewers or community members.
13+
14+
* **Transparency**. We can use the same process for both internal as well as external contributors. This allows contributors to benefit from the results of API reviews even if the implementer isn't external.
15+
16+
## Overall Process
17+
18+
GitHub is generally based around the pull-request model. The idea is that contributors perform their changes in their own fork and submit a pull request against our repository.
19+
20+
For trivial code changes, such as typo fixes, we want folks to directly submit a pull request rather than opening an issue. However, for bug fixes or feature work, we want contributors to first start a discussion by creating an issue.
21+
22+
For work that involves adding new APIs we'd like the issue to contain what we call a *speclet*. The speclet should provide a rough sketch of how the APIs are intended to be used, with sample code that shows typical scenarios. The goal isn't to be complete but rather to illustrate the direction so that readers can judge whether the proposal is sound. Here is [a good example](https://github.com/dotnet/corefx/issues/271).
23+
24+
![API Review Process](images/api-review-process.png)
25+
26+
## Steps
27+
28+
* **Contributor opens an issue**. The issue description should contain a speclet that represents a sketch of the new APIs, including samples on how the APIs are being used. The goal isn't to get a complete API list, but a good handle on how the new APIs would roughly look like and in what scenarios they are being used. Here is [a good example](https://github.com/dotnet/corefx/issues/271).
29+
30+
* **Community discusses the proposal**. If changes are necessary, the contributor is encouraged to edit the issue description. This allows folks joining later to understand the most recent proposal. To avoid confusion, the contributor should maintain a tiny change log, like a bolded "Updates:" followed by a bullet point list of the updates that were being made.
31+
32+
* **Issue is tagged as "Accepting PRs"**. Once the contributor and project owner agree on the overall shape and direction, the project owner tags the issue as "Accepting PRs". The contributor should indicate whether they will be providing the PR or only contributed the idea.
33+
34+
* **Coding**. The contributor is implementing the APIs as discussed. Minor deviations are OK, but if during the implementation the design starts to take a major shift, the contributor is encouraged to go back to the issue and raise the concerns with the current proposal.
35+
36+
* **Pull request is being created**. Once the contributor believes the implementation is ready for review, she creates a pull request, referencing the issue created in the first step. In order to call dips, you can also create the PR before it's completely ready. Use checkboxes to indicate which areas are still missing so that we know it's not ready for review yet. [Here is a good example](https://github.com/dotnet/corefx/pull/316). At this time, if any new API are being added to a type that has shipped in the full .NET Framework, submit the pull request to the *future* branch. See [Branching Guide](branching-guide.md).
37+
38+
* **Pull request is being reviewed**. The community reviews the code for the pull request. The review should focus on the code changes and architecture - not the APIs themselves. Once at least two project owners give their OK, the PR is considered good to go.
39+
40+
* **Pull is tagged as "Needs API Review"**. The project owner then marks the pull request as "Needs API Review".
41+
42+
* **API review**. Using the information in the pull request we'll create an APIX file that constitutes the API delta. The API review board meets multiple times a week to review all PRs that are tagged as needing an API review.
43+
44+
* **API review notes are being published**. After the review, we'll publish the notes in the [API Review repository](https://github.com/dotnet/apireviews). A good example is the [review of immutable collections](https://github.com/dotnet/apireviews/tree/master/2015-01-07-immutable).
45+
46+
* **Pull request is updated with the results of the API Review**. Once the API review is complete, the project owner uploads the notes and API HTML diff, including all comments. The project owner also updates the PR accordingly, with either a call to action to address some concerns or a good to go indicator.
47+
48+
* **Pull request is merged**. When there are no issues - or the issues were addressed by the contributor, the PR is merged.
49+
50+
## API Design Guidelines
51+
52+
The .NET design guidelines are captured in the famous book [Framework Design Guidelines](http://amazon.com/dp/0321545613) by Krzysztof Cwalina and Brad Abrams.
53+
54+
A digest with the most important guidelines are available in our [developer wiki](Framework-Design-Guidelines-Digest). Long term, we'd like to publish the individual guidelines in standalone repo on which we can also accept PRs and -- more importantly for API reviews -- link to.
55+
56+
## API Review Notes
57+
58+
The API review notes are being published in [API Review repository](https://github.com/dotnet/apireviews).

Documentation/branching-guide.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
Branching Guide
2+
===============
3+
4+
We will have the following branches in the corefx repository:
5+
6+
* **master**
7+
* Where most development happens
8+
* Submit your PRs here unless you are adding API to a type that exists in the full .NET Framework
9+
10+
* **future**
11+
* Landing place for fully API and code reviewed changes that are not to be part of the next upcoming release.
12+
* Submit your PRs here if you're adding surface area to a type that has shipped in the full .NET Framework as we can no longer accept those changes and achieve our compatibility goal for the first release of .NET Core
13+
* Takes regular merges from master
14+
* Once we snap for the first release, we will merge future to master and delete future
15+
16+
* **release/[name]**
17+
* Release branches snapped from master.
18+
* Do not submit pull requests to these branches
19+
* Fixes here do not flow to follow-up releases
20+
* Generally, fixes after a snap needing to make it in to a release will go in to master and get cherry-picked to the release branch.
21+
22+
* **dev/[name]**
23+
* Features (aka topics) under active development by more than one developer.
24+
* Submit PRs here only if you've made prior arrangements to work on something in one of these branches.
25+
* It is up to the developers creating these branches to decide what level of review is required
26+
* These features will only ship if they are successfully pulled to master or future via the standard PR and API review process.
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
Breaking Change Definitions
2+
===========================
3+
4+
Behavioral Change
5+
-----------------
6+
7+
A behavioral change represents changes to the behavior of a member. A behavioral change may including throwing a new exception, adding or removing internal method calls, or alternating the way in which a return value is calculated. Behavioral changes can be the hardest type of change to categorize as acceptable or not - they can be severe in impact, or relatively innocuous.
8+
9+
Binary Compatibility
10+
--------------------
11+
12+
Refers to the ability of existing consumers of an API to be able to use a newer version without recompilation. By definition, if an assembly's public signatures have been removed, or altered so that consumers cannot no longer access the same interface exposed by the assembly, the change is said to be a _binary incompatible change_.
13+
14+
Source Compatibility
15+
--------------------
16+
17+
Refers to the ability of existing consumers of an API to recompile against a newer version without any source changes. By definition, if a consumer needs to make changes to its code in order to for it build successfully against a newer version of an API, the change is said to be a _source incompatible change_.
18+
19+
Design-Time Compatibility
20+
-------------------------
21+
22+
_Design-time compatibility_ refers to preserving the design-time experience across versions of Visual Studio and other design-time environments. This can involve details around the UI of the designer, but by far the most interesting design-time compatibility is project compatibility. A potential project (or solution), must be able to be opened, and used on a newer version of a designer.
23+
24+
Backwards Compatibility
25+
-----------------------
26+
27+
_Backwards compatibility_ refers to the ability of an existing consumer of an API to run against, and behave in the same way against a newer version. By definition, if a consumer is not able to run, or behaves differently against the newer version of the API, then the API is said to be _backwards incompatible_.
28+
29+
Changes that affect backwards compatibility are strongly discouraged. All alternates should be actively considered, since developers will, by default, expect backwards compatibility in newer versions of an API.
30+
31+
Forwards Compatibility
32+
----------------------
33+
34+
_Forwards compatibility_ is the exact reverse of backwards compatibility; it refers to the ability of an existing consumer of an API to run against, and behave in the way against a _older_ version. By definition, if a consumer is not able to run, or behaves differently against an older version of the API, then the API is said to be _forwards incompatible_.
35+
36+
Changes that affect forwards compatibility are generally less pervasive, and there is not as stringent a demand to ensure that such changes are not introduced. Customers accept that a consumer which relies upon a newer API, may not function correctly against the older API.
37+
38+
This document does not attempt to detail forwards incompatibilities.

0 commit comments

Comments
 (0)