Skip to content

Commit c804407

Browse files
committed
Add content to index pages and corrections
1 parent a282d05 commit c804407

File tree

4 files changed

+20
-156
lines changed

4 files changed

+20
-156
lines changed

docs/_docs/contributing/issues/index.md

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,14 @@ title: Finding the Cause of an Issue
44
---
55

66
An issue found in the [GitHub repo][lampepfl/dotty] usually describes some code that
7-
manifests undesired behaviour.
7+
manifests undesired behaviour.
8+
9+
This chapter of the guide describes the different steps to contribute to Dotty:
10+
- [Reproducing an Issue](./reproduce.md)
11+
- [Finding the Cause of an Issue](./cause.md)
12+
- [Debugging the Compiler](./debugging.md)
13+
- [Other debugging techniques](./other-debugging.md)
14+
- [Inspect the values](./inspection.md)
15+
- [Improving your workflow](./efficiency.md)
16+
- [Testing a Fix](./testing.md)
17+
- [Checklist](./checklist.md)

docs/_docs/contributing/procedures/index.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,7 @@
22
layout: index
33
title: Procedures
44
---
5+
6+
This chapter of the guide describes:
7+
- [How to release a procedure](./release.md)
8+
- [How to test the vulpix framework](./vulpix.md)

docs/_docs/contributing/procedures/vulpix.md

Lines changed: 0 additions & 155 deletions
Original file line numberDiff line numberDiff line change
@@ -3,161 +3,6 @@ layout: doc-page
33
title: Test Vulpix Framework
44
---
55

6-
# Release Procedure
7-
8-
## Model
9-
The easiest way to produce a release of a GitHub-based open-source software is to tag the most recent commit on the `master` with the version number at regular intervals of time or once a previously agreed milestone is reached. However, this approach to releasing would rest on the assumption that each commit at the `master` branch can potentially be made into a release. We cannot provide the release-grade quality guarantees for each of the `master` commits, though.
10-
11-
Consequently, in Dotty, we are using the method above – releasing-by-tagging – to mark release candidates (RC’s) and not the stable releases. The stable releases are also marked by a tag, but we have a procedure to assure their quality.
12-
13-
An RC is promoted to a stable release in one release cycle after its creation. The idea is that this way, we have one release cycle's time to examine the release candidate and find critical issues which cannot be allowed into a stable release.
14-
15-
If such issues are found, their fixes end up on a separate branch dedicated to that release. In one release cycle after the RC creation, the RC, along with all its subsequent fixes, is promoted to a stable release by means of tagging it.
16-
17-
# Example
18-
Say we want to release the 0.14.0 version. In this section we describe the process to do so (at a glance).
19-
20-
## At the Dotty Repo
21-
1. Tag the latest `master` commit as `0.14.0-RC1`. This commit is the release candidate for the `0.14.0` version.
22-
2. Create a branch from that commit called `0.14.x`. This branch is intended to host the subsequent fixes to the RC for the issues that cannot be allowed in the `0.14.0` stable release.
23-
3. Up until the next release date, if we find some issues with `0.14.0-RC1` that cannot end up in the release, we push the fixes to the `0.14.x` branch.
24-
4. At the next release date, we release `0.14.0` from the branch `0.14.x`. We do so by tagging the latest commit at the `0.14.x` branch as `0.14.0`. Some things to note here:
25-
1. At this point, `0.14.x` (the branch) and `0.14.0-RC1` (the tag at which `0.14.x` branched from `master`) may differ, and the `0.14.x` branch is a more mature version of the `0.14.0-RC1` tag.
26-
2. `0.14.0` is not the same as the `master`. Only the commits critical for the `0.14.0` release end up at `0.14.x` branch. Not all of the commits made to the `master` during the release cycle are critical to `0.14.0`. However, all of the commits from `0.14.x` must end up on the `master` branch, so we merge `0.14.x` into `master`.
27-
5. After the `0.14.0` version is released, we start the process for releasing `0.15.0` – repeat this algorithm from the beginning with the version set to `0.15.0-RC1` at step (1).
28-
29-
## At the CI
30-
CI is set to automatically detect the tags of the format discussed above and perform the required release operations. Precisely, it will do two things for the release tags:
31-
32-
- Publish the release jars to Maven
33-
- Create the drafts at the GitHub [release](https://github.com/lampepfl/dotty/releases) page of the repository with the artefacts of the release.
34-
35-
The CI operation is entirely automatic provided you have tagged the release correctly. No need to do anything here.
36-
37-
### Canceling CI builds
38-
**The below guidelines are needed only to speed up things. It is no mistake if you skip this section. However, if you do things wrong here, there may be trouble. So do it only if you feel yourself confident with the release cycle and the workings of the CI.**
39-
40-
Note that after the first stage of the release cycle (see "Publishing artifacts to Maven via CI" section of the checklist below) only three test runs are required to be run at the CI:
41-
42-
- `master` branch's latest *commit* with the updated `baseVersion`
43-
- `<stable-version>` *tag* of the stable version being released
44-
- `<rc-version>` *tag* of the RC version being released
45-
46-
However, you may end up with as many as 6 tasks being run. The auxiliary tasks may include:
47-
48-
- *commit* tests of the *tags* specified above. You may have two of these, corresponding to the two tags. You should see them appearing to have the same commit hash in the CI, but one of them will have the tag next to it and the other one will not. The *tag* one must remain, as the CI tasks on tags publish to maven. CI tasks on commits do not. So it is safe to cancel the task running on the commit, if the commit hash is the same as that of the tag's task commit.
49-
- Older commit from the `master` branch. Look for all the tasks run on the `master` branch in the CI and see if there are more than one of these. Then, find the one testing the most recent commit of the branch. The others can safely be canceled.
50-
51-
## Documentation
52-
### Release Procedure Checklist
53-
Before we start the release procedure, we create an issue with a release checklist. As we go through the release, we update the checklist. To generate the checklist, run the following command:
54-
55-
`bash <(curl -sL https://raw.githubusercontent.com/lampepfl/dotty/master/docs/docs/contributing/checklist.sh) <stable_release>`
56-
57-
Above, `<stable_release>` is the stable version being released. For example, if you are releasing `0.14.0` and `0.15.0-RC1`, this variable is `14` and the command is as follows:
58-
59-
`bash <(curl -sL https://raw.githubusercontent.com/lampepfl/dotty/master/docs/docs/contributing/checklist.sh) 14`
60-
61-
Copy and paste the output into the release issue.
62-
63-
The ecosystem update section for some projects also mentions a set of criteria upon which the project is to be marked in the checklist. When the Travis build status is specified next to the project's name, it is to be understood that this build must pass after all of the other criteria of that project are checked. Note that due to caching, the label image next to the link may not reflect the real status of the build. Therefore, to verify the status, click on the link and make sure that your recent commit passes.
64-
65-
When no criteria is specified, common sense is to be used.
66-
67-
### GitHub Releases and Blog Post
68-
After the release is done, we document it as follows:
69-
70-
- On the GitHub release page, modify the release drafts created by CI. The RC draft should include notable changes introduced since the previous RC. E.g. for `0.14.0-RC1` these are generated by `gren changelog -G --override -D prs --tags=0.13.0-RC1..0.14.0-RC1`. `gren` is available [here](https://github.com/github-tools/github-release-notes), and before running the above command, please make sure that (1) the `origin` branch points to the `lampepfl/dotty` repository and (2) the two tags mentioned in the command are pushed to the `master` branch of that repo. Otherwise, the command won't pick up the tags.
71-
- Create a blog article documenting the most important changes done by the release.
72-
73-
## Ecosystem
74-
After releasing a new version of Dotty, we need to make sure to update the following related projects:
75-
76-
- [Example Project](https://github.com/scala/scala3-example-project)
77-
- To deploy locally: `git clone https://github.com/scala/scala3-example-project.git && cd dotty-example-project/`
78-
- To test locally: `sbt run`
79-
- [Commit](https://github.com/scala/scala3-example-project/commit/76bf0b4d708206b1901fa7f291f07cd470506e79) updating the Dotty version (only `README` and `build.sbt` files)
80-
- [Example Project with Mill](https://github.com/scala/scala3-example-project/tree/mill)
81-
- Deploy: `git clone https://github.com/scala/scala3-example-project && cd dotty-example-project && git checkout mill`
82-
- Test: `mill root.run`
83-
- [Commit 1](https://github.com/scala/scala3-example-project/commit/e1ad1905ef38d07943e0c176333ba24e306a2078)`build.sc` only; [Commit 2](https://github.com/scala/scala3-example-project/commit/23bc5df89e72b782ab8e19157d6bbcb67eef30cd)
84-
- [Dotty G8 template](https://github.com/scala/scala3.g8)
85-
- Deploy: `git clone https://github.com/scala/scala3.g8.git`
86-
- Test (note the relative path as argument to `sbt new`, hence this command should be run after Deploy in the same directory as Deploy): `sbt new file://./dotty.g8 --name=foo --description=bar && cd foo && sbt run`
87-
- [Commit](https://github.com/scala/scala3.g8/commit/0cde8fa843e15e916f07f22a196f35a5988b26af)
88-
- [Dotty G8 template with cross build support](https://github.com/scala/scala3-cross.g8)
89-
- Deploy: `git clone https://github.com/scala/scala3-cross.g8.git`
90-
- Test: `sbt new file://./dotty-cross.g8 --name=foo --description=bar && cd foo && sbt run`
91-
- [Commit](https://github.com/scala/scala3-cross.g8/commit/0e3ea2ae8ba8d001e63e5098ff60d728036d358f)
92-
- [Dotty Homebrew Formula](https://github.com/lampepfl/homebrew-brew)
93-
- Deploy: `git clone https://github.com/lampepfl/homebrew-brew.git && cd homebrew-brew`
94-
- [Commit](https://github.com/lampepfl/homebrew-brew/commit/04f7284564387754a360a354159f2f8d6156a6c7). SHA256 sum comes from the issue checklist computed for the release as specified above. The file with checksums is available at [GitHub Releases](https://github.com/lampepfl/dotty/releases) -> release in question -> assets -> `sha256sum.txt` -> `*.tar.gz` file sum.
95-
- [Dotty test under various OSs](https://github.com/lampepfl/packtest)
96-
- Deploy: `git clone https://github.com/lampepfl/packtest.git && cd packtest`
97-
- [Commit](https://github.com/lampepfl/packtest/commit/6d3edf7333e0e788af7c4f4ab976b56905ddf9ed)
98-
- [Scastie](https://github.com/scalacenter/scastie/)
99-
- Deploy (copy-paste the command and append the release id, e.g. `15` for `0.15.0-RC1`): `git clone https://github.com/scalacenter/scastie.git && cd scastie && git remote add staging https://github.com/dotty-staging/scastie && git checkout -b dotty-release-`<release_id>
100-
- [PR](https://github.com/scalacenter/scastie/pull/433) – push your changes to `staging` repo (as defined in "Deploy" above) with `git push -u staging`, then submit the PR from there.
101-
- [Dotty](https://github.com/lampepfl/dotty/)
102-
- If you are reading this, Dotty should already be deployed on your machine :)
103-
- [PR](https://github.com/lampepfl/dotty/pull/6557)
104-
- [Scalac](https://github.com/scala/scala)
105-
- Deploy: `git clone https://github.com/scala/scala.git && cd scala && git remote add staging https://github.com/dotty-staging/scala && git checkout -b dotty-release-`<release_id>
106-
- [PR](https://github.com/scala/scala/pull/7993)
107-
108-
For each need to do the following:
109-
110-
- Update Dotty version to the latest RC
111-
- Update the sbt-dotty SBT plugin version to the latest published one
112-
- Update the projects' source code to follow the Dotty developments if necessary
113-
114-
# Procedure in Bash Scripts
115-
The below procedure is compiled from [this](https://github.com/lampepfl/dotty/issues/5907#issue-409313505) and [this](https://github.com/lampepfl/dotty/issues/6235#issue-429265748) checklists. It assumes we want to publish the `0.14.0` given the `0.14.0-RC1` release candidate.
116-
117-
Note that at the same time we will also publish the `0.15.0-RC1` release. We publish two releases at the same time as per the logic outlined at the [Example/At the Dotty Repo](#at-the-dotty-repo) and the [Model](#model) sections above: the step (5) in the algorithm outlined in the [Example](#at-the-dotty-repo) for the release cycle of `0.14.0` is the step (1) in the release cycle of `0.15.0`.
118-
119-
The following commands assume a remote tracking repository named `origin` pointing to the main Dotty repository: `https://github.com/lampepfl/dotty.git`.
120-
121-
122-
```bash
123-
124-
######## Publish the 0.14.0 stable version – end the release cycle for 0.14.0 ########
125-
git checkout 0.14.x
126-
127-
# Change `val baseVersion = "0.14.0-RC1"` to `val baseVersion = "0.14.0"` in project/Build.scala
128-
129-
git commit -am 'Release Dotty 0.14.0'
130-
git tag 0.14.0
131-
git push origin 0.14.0
132-
133-
git checkout master
134-
git merge 0.14.x
135-
136-
# Make sure the merge doesn't break anything. In doubt, create a PR to run the CL
137-
git push origin master
138-
139-
######## Publish the 0.15.0-RC1 unstable version – begin the release cycle for 0.15.0 ########
140-
# Move all the unfinished tasks from Milestone 15 to Milestone 16 on GitHub – see https://github.com/lampepfl/dotty/milestones
141-
142-
git checkout -b 0.15.x
143-
144-
# Change val baseVersion = "0.15.0" to val baseVersion = "0.15.0-RC1"
145-
146-
git commit -am 'Release Dotty 0.15.0-RC1'
147-
git tag 0.15.0-RC1
148-
git push origin 0.15.x
149-
git push origin 0.15.0-RC1
150-
151-
git checkout master
152-
153-
# Change val baseVersion = "0.15.0" to val baseVersion = "0.16.0" - this will be the next version after `0.15.0-RC1` is promoted to `0.15.0`.
154-
155-
git commit -am 'Set baseVersion to 0.16.0'
156-
git push origin master
157-
```
158-
159-
## Test Vulpix Framework
160-
1616
If you are modifying the Vulpix framework and need a playground with dummy tests to try out your modifications, do the following.
1627

1638
Create the directory structure for the playground:

docs/_docs/contributing/tools/index.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,8 @@
22
layout: index
33
title: IDEs and Tools
44
---
5+
6+
This chapter of the guide describes how to use Dotty with IDEs and other tools:
7+
- [IDEs](./ides.md)
8+
- [Use Mill](mill.md)
9+
- [Use Scalafix](./scalafix.md)

0 commit comments

Comments
 (0)