Skip to content

Commit c60a943

Browse files
committed
Updates to release planning
Specifically added text about how to read the backlog and the process for deciding what to patch.
1 parent 4532688 commit c60a943

File tree

3 files changed

+120
-29
lines changed

3 files changed

+120
-29
lines changed

entity-framework/core/what-is-new/index.md

+18-4
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: EF Core releases and planning
33
author: ajcvickers
4-
ms.date: 01/14/2020
4+
ms.date: 01/29/2020
55
ms.assetid: C21F89EE-FB08-4ED9-A2A0-76CB7656E6E4
66
uid: core/what-is-new/index
77
---
@@ -30,18 +30,32 @@ See the [.NET support policy](https://dotnet.microsoft.com/platform/support/poli
3030
* Major version updates (for example, from EF Core 2 to EF Core 3) often have breaking changes. Thorough testing is advised when updating across major versions. Use the breaking changes links above for guidance on dealing with breaking changes.
3131
* Minor version updates do not typically contain breaking changes. However, thorough testing is still advised since new features can introduce regressions.
3232

33+
## Release planning and schedules
34+
35+
EF Core releases align with the [.NET Core shipping schedule](https://github.com/dotnet/core/blob/master/roadmap.md).
36+
37+
Patch releases usually ship monthly, but have a long lead time.
38+
We are working to improve this.
39+
40+
See the [release planning process](release-planning.md) for more information on how we decide what to ship in each release.
41+
We typically don't do detailed planning for further out than the next major or minor release.
42+
3343
## EF Core 5.0
3444

35-
EF Core releases align with the [.NET Core shipping schedule](https://github.com/dotnet/core/blob/master/roadmap.md). The next planned stable release is **EF Core 5.0**, scheduled for November 2020.
45+
The next planned stable release is **EF Core 5.0**, scheduled for November 2020.
3646

3747
A [high-level plan for EF Core 5.0](ef-core-5.0/plan.md) has been created by following the documented [release planning process](release-planning.md).
3848

39-
Your feedback on planning is important. The best way to indicate the importance of an issue is to vote (thumbs-up) for that issue on GitHub. This data will then feed into the planning process for the next release.
49+
Your feedback on planning is important.
50+
The best way to indicate the importance of an issue is to vote (thumbs-up 👍) for that issue on GitHub.
51+
This data will then feed into the planning process for the next release.
4052

4153
### Get it now!
4254

4355
EF Core 5.0 packages are **available now** as [daily builds](https://github.com/aspnet/AspNetCore/blob/master/docs/DailyBuilds.md).
4456

45-
Using the daily builds is a great way to find issues and provide feedback as early as possible. The sooner we get such feedback, the more likely it will be actionable before the next official release. We work hard to keep the daily builds in good shape by running over 55,000 tests per platform for each build.
57+
Using the daily builds is a great way to find issues and provide feedback as early as possible.
58+
The sooner we get such feedback, the more likely it will be actionable before the next official release.
59+
We work hard to keep the daily builds in good shape by running over 56,000 tests per platform for each build.
4660

4761
Preview packages will be shipped to NuGet later in the year.
Original file line numberDiff line numberDiff line change
@@ -1,45 +1,122 @@
11
---
22
title: EF Core release planning
33
author: ajcvickers
4-
ms.date: 01/14/2020
4+
ms.date: 01/28/2020
55
uid: core/what-is-new/release_planning.md
66
---
77

88
# Release planning process
99

1010
We often get questions about how we choose specific features to go into a particular release.
11-
Our backlog certainly doesn't automatically translate into release plans.
12-
The presence of a feature in EF6 also doesn't automatically mean that the feature needs to be implemented in EF Core.
11+
This document outlines the process we use.
12+
The process is continually evolving as we find better ways to plan, but the general ideas remain the same.
1313

14-
It's difficult to detail the whole process we follow to plan a release.
15-
Much of it is discussing the specific features, opportunities and priorities, and the process itself also evolves with every release.
16-
However, we can summarize the common questions we try to answer when deciding what to work on next:
14+
## Different kinds of releases
1715

18-
1. **How many developers we think will use the feature and how much better will it make their applications or experience?** To answer this question, we collect feedback from many sources — Comments and votes on issues is one of those sources.
16+
Different kinds of release contain different kinds of changes.
17+
This in turn means that the release planning is different for different kinds of release.
1918

20-
2. **What are the workarounds people can use if we don't implement this feature yet?** For example, many developers can map a join table to work around lack of native many-to-many support. Obviously, not all developers want to do it, but many can, and that counts as a factor in our decision.
19+
### Patch releases
2120

22-
3. **Does implementing this feature evolve the architecture of EF Core such that it moves us closer to implementing other features?** We tend to favor features that act as building blocks for other features. For instance, property bag entities can help us move towards many-to-many support, and entity constructors enabled our lazy loading support.
21+
Patch releases change only the "patch" part of the version.
22+
For example, EF Core 3.1.**1** is a release that patches issues found in EF Core 3.1.**0**.
2323

24-
4. **Is the feature an extensibility point?** We tend to favor extensibility points over normal features because they enable developers to hook their own behaviors and compensate for any missing functionality.
24+
Patch releases are intended to fix critical customer bugs.
25+
This means patch releases do not include new features.
26+
API changes are not allowed in patch releases except in special circumstances.
2527

26-
5. **What is the synergy of the feature when used in combination with other products?** We favor features that enable or significantly improve the experience of using EF Core with other products, such as .NET Core, the latest version of Visual Studio, Microsoft Azure, and so on.
28+
The bar to make a change in a patch release is very high.
29+
This is because it is critical that patch releases do not introduce new bugs.
30+
Therefore, the decision process emphasizes high value and low risk.
31+
32+
We are more likely to patch an issue if:
33+
* It is impacting multiple customers
34+
* It is a regression from a previous release
35+
* The failure causes data corruption
36+
37+
We are less likely to patch an issue if:
38+
* There are reasonable workarounds
39+
* The fix has high risk of breaking something else
40+
* The bug is in a corner-case
41+
42+
This bar gradually rises through the lifetime of a [long-term support (LTS)](https://dotnet.microsoft.com/platform/support/policy/dotnet-core) release. This is because LTS releases emphasize stability.
43+
44+
The final decision about whether or not to patch an issue is made by the .NET Directors at Microsoft.
45+
46+
### Minor releases
47+
48+
Minor releases change only the "minor" part of the version.
49+
For example, EF Core 3.**1**.0 is a release that improves on EF Core 3.**0**.0.
50+
51+
Minor releases:
52+
* Are intended to improve the quality and features of the previous release
53+
* Typically contain bug fixes and new features
54+
* Do not include intentional breaking changes
55+
* Have a few prerelease previews pushed to NuGet
56+
57+
### Major releases
58+
59+
Major releases change the EF "major" version number.
60+
For example, EF Core **3**.0.0 is a major release that makes a big step forward over EF Core 2.2.x.
61+
62+
Major releases:
63+
* Are intended to improve the quality and features of the previous release
64+
* Typically contain bug fixes and new features
65+
* Some of the new features may be fundamental changes to the way EF Core works
66+
* Typically include intentional breaking changes
67+
* Breaking changes are necessary part of evolving EF Core as we learn
68+
* However, we think very carefully about making any breaking change because of the potential customer impact. We may have been too aggressive with breaking changes in the past. Going forward, we will strive to minimize changes that break applications, and to reduce changes that break database providers and extensions.
69+
* Have many prerelease previews pushed to NuGet
2770

28-
6. **What are the skills of the people available to work on a feature, and how to best leverage these resources?** Each member of the EF team and our community contributors has different levels of experience in different areas, so we have to plan accordingly. Even if we wanted to have "all hands on deck" to work on a specific feature like GroupBy translations, or many-to-many, that wouldn't be practical.
71+
## Planning for major/minor releases
2972

30-
As mentioned before, the process evolves on every release.
31-
In the future, we'll try to add more opportunities for members of the community to provide inputs into our release plans.
32-
For example, we would like to make it easier to review draft designs of the features and of the release plan itself.
73+
### GitHub issue tracking
3374

34-
## Backlog
75+
GitHub ([https://github.com/dotnet/efcore](https://github.com/dotnet/efcore)) is the source-of-truth for all EF Core planning.
3576

36-
The [Backlog Milestone](https://github.com/aspnet/EntityFrameworkCore/issues?q=is%3Aopen+is%3Aissue+milestone%3ABacklog+sort%3Areactions-%2B1-desc) in our issue tracker contains issues that we either expect to work on someday, or we think someone from the community could tackle.
37-
Customers are welcome to submit comments and votes on these issues.
38-
Contributors looking to work on any of these issues are encouraged to first start a discussion on how to approach them.
77+
Issues on GitHub have:
3978

40-
There's never a guarantee that we'll work on any given feature in a specific version of EF Core.
41-
As in all software projects, priorities, release schedules, and available resources can change at any point.
42-
But if we intend to resolve an issue in a specific time-frame, we'll assign it to a release milestone instead of the backlog milestone.
79+
* A state
80+
* [Open](https://github.com/dotnet/efcore/issues) issues have not been addressed.
81+
* [Closed](https://github.com/dotnet/efcore/issues?q=is%3Aissue+is%3Aclosed) issues have been addressed.
82+
* All issues that have been fixed are [tagged with closed-fixed](https://github.com/dotnet/efcore/issues?q=is%3Aissue+label%3Aclosed-fixed+is%3Aclosed). An issue tagged with closed-fixed is fixed and merged, but may not have been released.
83+
* Other `closed-` labels indicate other reasons for closing an issue. For example, duplicates are tagged with closed-duplicate.
84+
* A type
85+
* [Bugs](https://github.com/dotnet/efcore/issues?q=is%3Aissue+is%3Aopen+label%3Atype-bug) represent bugs.
86+
* [Enhancements](https://github.com/dotnet/efcore/issues?q=is%3Aissue+is%3Aopen+label%3Atype-enhancement) represent new features or better functionality in existing features.
87+
* A milestone
88+
* [Issues with no milestone](https://github.com/dotnet/efcore/issues?q=is%3Aopen+is%3Aissue+no%3Amilestone) are being considered by the team. The decision on what to do with the issue has not yet been made or a change in the decision is being considered.
89+
* [Issues in the Backlog milestone](https://github.com/dotnet/efcore/issues?q=is%3Aopen+is%3Aissue+milestone%3ABacklog) are items that the EF team will consider working on in a future release
90+
* Issues in the backlog may be [tagged with consider-for-next-release](https://github.com/dotnet/efcore/issues?q=is%3Aissue+is%3Aopen+label%3Aconsider-for-next-release) indicating that this work item is high on the list for the next release.
91+
* Open issues in a versioned milestone are items that the team plans to work on in that version. For example, [these are the issues we plan to work on for EF Core 5.0](https://github.com/dotnet/efcore/issues?q=is%3Aopen+is%3Aissue+milestone%3A5.0.0).
92+
* Closed issues in a versioned milestone are issues that are completed for that version. Note that the version may not yet have been released. For example, [these are the issues completed for EF Core 3.0](https://github.com/dotnet/efcore/issues?q=is%3Aissue+milestone%3A3.0.0+is%3Aclosed).
93+
* Votes!
94+
* Voting is the best way to indicate that an issue is important to you.
95+
* To vote, just add a "thumbs-up" 👍 to the issue. For example, [these are the top-voted issues](https://github.com/dotnet/efcore/issues?q=is%3Aissue+is%3Aopen+sort%3Areactions-%2B1-desc)
96+
* Please also comment describing specific reasons you need the feature if you feel this adds value. Commenting "+1" or similar does not add value.
97+
98+
### The planning process
99+
100+
The planning process is more involved than just taking the top-most requested features from the backlog.
101+
This is because we gather feedback from multiple stakeholders in multiple ways.
102+
We then shape a release based on:
103+
104+
* Input from customers
105+
* Input from other stakeholders
106+
* Strategic direction
107+
* Resources available
108+
* Schedule
109+
110+
Some of the questions we ask are:
111+
112+
1. **How many developers we think will use the feature and how much better will it make their applications or experience?** To answer this question, we collect feedback from many sources — Comments and votes on issues is one of those sources. Specific engagements with important customers is another.
113+
114+
2. **What are the workarounds people can use if we don't implement this feature yet?** For example, many developers can map a join table to work around lack of native many-to-many support. Obviously, not all developers want to do it, but many can, and that counts as a factor in our decision.
115+
116+
3. **Does implementing this feature evolve the architecture of EF Core such that it moves us closer to implementing other features?** We tend to favor features that act as building blocks for other features. For instance, property bag entities can help us move towards many-to-many support, and entity constructors enabled our lazy loading support.
117+
118+
4. **Is the feature an extensibility point?** We tend to favor extensibility points over normal features because they enable developers to hook their own behaviors and compensate for any missing functionality.
119+
120+
5. **What is the synergy of the feature when used in combination with other products?** We favor features that enable or significantly improve the experience of using EF Core with other products, such as .NET Core, the latest version of Visual Studio, Microsoft Azure, and so on.
43121

44-
We'll likely close an issue if we don't plan to ever address it.
45-
But we can reconsider an issue that we previously closed if we get new information about it.
122+
6. **What are the skills of the people available to work on a feature, and how can we best leverage these resources?** Each member of the EF team and our community contributors has different levels of experience in different areas, so we have to plan accordingly. Even if we wanted to have "all hands on deck" to work on a specific feature like GroupBy translations, or many-to-many, that wouldn't be practical.

entity-framework/toc.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
href: core/index.md
2222
- name: "Releases and planning"
2323
items:
24-
- name: Current and planned releases
24+
- name: Current and planned releases (Roadmap)
2525
href: core/what-is-new/index.md
2626
- name: Release planning process
2727
href: core/what-is-new/release-planning.md

0 commit comments

Comments
 (0)