Skip to content

Commit 2b139ef

Browse files
committed
started provisional_features rfc
1 parent 0f629bb commit 2b139ef

File tree

2 files changed

+35
-0
lines changed

2 files changed

+35
-0
lines changed

.gitignore

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
# jetbrains ide stuff
2+
*.iml
3+
.idea/
4+
5+
# vscode ide stuff
6+
*.code-workspace
7+
.history
8+
.vscode

rfc/provisional_features.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
- Abstract
2+
3+
Currently, the api for all new features in JupyterLab has to be frozen within the span of a single PR. This is due to the fact that we follow semver; breaking changes may only occur on the occasion of a major version bump.
4+
5+
This is fine for most features. However, this dev process is causing problems when used for complex features. In particular, features that are expected to be adopted community-wide (eg LabIcon, the extension system, anything to do with user settings) have issues:
6+
- These features (including their API) benefit from wide community feedback, and suffer in the vacumn of 1000+ line single PRs
7+
- The more complex a feature, the more likely it is for its first draft to have at least some poorly formed or ill-considered API
8+
9+
To fix this, I propose that we should adopt a formal process for allowing provisional features in the master branch of JuptyerLab core.
10+
11+
- Goals
12+
- a better experience for core devs, extension devs, and power users around versioning and compatibility
13+
- easier version migration for core and extensions packages
14+
15+
- Terminology
16+
- community: JupyterLab core devs, extension devs, and end users
17+
- API: public interface, including externally visible package structure, function signatures, CLI, and, in the broadest sense, user interface
18+
19+
- Creating a new provisional feature (Python/Typescript sources)
20+
- Create new feature in PR, as per normal
21+
- Add a `_PROVISONAL` suffix to all public API
22+
- Declare the provisional API in the PR issue thread
23+
- Include an outline of future work, including a rough schedule describing the process by which this feature will graduate by the time of the next major release
24+
25+
- Graduating a feature from provisional to mature
26+
- A provisional feature may graduate on any minor release
27+
- A provisional feature must graduate by the next major release (wrt when it was initally pulled into core) or be removed

0 commit comments

Comments
 (0)