10000 DOC clarifications on the release process by adrinjalali · Pull Request #15759 · scikit-learn/scikit-learn · GitHub
[go: up one dir, main page]

Skip to content

DOC clarifications on the release process #15759

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

Merged
merged 34 commits into from
Jan 28, 2020

Conversation

adrinjalali
Copy link
Member

adding a few clarifications to the release process.

@adrinjalali
Copy link
Member Author

@jnothman anything I have as mistakes here? @NicolasHug WDYT? I'm happy to clarify wherever's not clear.

Copy link
Member
@NicolasHug NicolasHug left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A few comments, thanks for all the work @adrinjalali

Comment on lines 39 to 42
Since any commits to an existing branch (e.g. 0.999.X) will automatically
update the web site documentation, it is best to develop a release with a pull
request in which 0.999.X is the base. It also allows you to keep track of any
tasks towards release with a TO DO list.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't understand this, what documentation is updated exactly, and why is it a bad thing?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

does this help?

@cmarmo
Copy link
Contributor
cmarmo commented Dec 3, 2019

As external observer I would like to read here something explaining the different types of release (like the python one for example).... obviously this can wait another PR.

......................

Since any commits to an existing branch (e.g. 0.999.X) will automatically
update the web site documentation, it is best to develop a release with a pull
request in which 0.999.X is the base. It also allows you to keep track of any
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure I understand what "0.999.X is the base" means. does it mean that the PR tries to merge things into the 0.999.X branch? Is there any other way to do it anyway?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For me the two git commands a few lines later explain what it is. I also didn't understand what it meant from the text.

Comment on lines 50 to 51
Since any commits to an existing branch (e.g. 0.999.X) will automatically
update the web site documentation, it is best to develop a release with a pull
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it true that any branch to the repo has an online documentation? I thought we'd have a way to curate which branches we want to have the docs for, like with ReadTheDocs

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

AFAIK any 0.XX.X branch has a documentation online. Any change to the 0.21.X branch for example, will be there almost immediately. And to add a new release, you just create the branch, and it'll automatically be there.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

But will it really automatically appear in https://scikit-learn.org/dev/versions.html?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, I think it does, @NicolasHug, but it's not listed there as stable until the symlink is updated

@adrinjalali
Copy link
Member Author

As external observer I would like to read here something explaining the different types of release (like the python one for example).... obviously this can wait another PR.

That's a good point. I also read that one while setting the tags. I left a link to it.

Copy link
Member
@NicolasHug NicolasHug left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Trying to summarize the paragraph that I don't understand:

First, create a branch (to release e.g. 0.999.3):

    $ # assuming master and upstream/master are the same
    $ git checkout -b release-0.999.3 master

Note that pushing the (empty) branch will 
automatically upload its documentation, which currently 
corresponds to that of master, so it's not an accurate representation
of what the release will actually be.

Then create a PR with all the desired changes:

	$ git rebase -i upstream/0.999.2

Ideally, the PR should be merged quickly, to minimize the 
gap between the time when the website points to 
a release, and the release
being available to users.

$ git checkout -b release-0.999.3 master
$ git rebase -i 0.999.X
$ git rebase -i upstream/0.999.X
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should X be 2 in this case? Can it be something else?

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

X is a literal here. It's the branch name

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

what branch name? the branch we're creating here is named release-0.999.3

Comment on lines 50 to 51
Since any commits to an existing branch (e.g. 0.999.X) will automatically
update the web site documentation, it is best to develop a release with a pull
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

But will it really automatically appear in https://scikit-learn.org/dev/versions.html?

Comment on lines 58 to 60
available to users. Having all the changes for a release in one PR minimizes
the gap between the time when the website points to a release, and the release
being available to users.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't understand why only having one PR minimizes the delta? Since the doc is created as soon as the branch is pushed, whether you're doing multiple PRs or just one is just a matter on how fast all of them get merged right?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes, having one PR just makes it clearer what the difference between two releases are.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

So the current description should be updated. Right now it says have only one PR helps minimizing the time gap, which isn't true

Copy link
Member
@jnothman jnothman left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thank you @adrinjalali!


- *maintainer* role on ``scikit-learn`` projects on ``pypi.org`` and
``test.pypi.org``, separately.
- become a member of the *scikit-learn* team on conda-forge.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Note that this requires editing recipe/meta.yaml

Comment on lines 50 to 51
Since any commits to an existing branch (e.g. 0.999.X) will automatically
update the web site documentation, it is best to develop a release with a pull
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yes, I think it does, @NicolasHug, but it's not listed there as stable until the symlink is updated

$ git checkout -b release-0.999.3 master
$ git rebase -i 0.999.X
$ git rebase -i upstream/0.999.X
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

X is a literal here. It's the branch name

$ sed -i "s/latestStable = '.*/latestStable = '0.999';" versionwarning.js
$ git commit -m "Update stable to point to 0.999" stable
$ sed -i "s/latestStable = '.*/latestStable = '0.999';/g" versionwarning.js
$ git commit -am "Update stable to point to 0.999"
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't get why you prefer this to explicitly only committing stable

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the stable used to be the only thing changing. Now versionwarning.js also changes in this step.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added git add stable/ versionwarning on the line above to be explicit.

@@ -119,8 +182,8 @@ Making a release
$ git checkout master
$ rm stable
$ ln -s 0.999 stable
$ sed -i "s/latestStable = '.*/latestStable = '0.999';" versionwarning.js
$ git commit -m "Update stable to point to 0.999" stable
$ sed -i "s/latestStable = '.*/latestStable = '0.999';/g" versionwarning.js
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

is g necessary?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yeah, my sed complained about an unfinished s/ directive or something w/o it.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You're right. It needs the / but not the g

@adrinjalali
Copy link
Member Author

In the first paragraph, I added how the branches are named, does that help clarify the confusing paragraph @NicolasHug ?

Copy link
Member
@NicolasHug NicolasHug left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Made a few comments, but sorry I still find the paragraph confusing.

Maybe comment on what isn't correct about my suggestion in #15759 (review) (this is my current understanding of things)

Comment on lines 12 to 15
maintainers to review before the release. Note that all development for the
minor releases and the major release of for instance 0.99, happens under the
branch called ``0.99.X``, where ``X`` is a literal, and independent of minor
bug fix releases. Each release candidate, major, or minor release is a tag
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't understand this sentence, especially since it is said above that changes should be done to master whenever possible

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The development happens on that branch, through PRs which are merged into that branch.

happen in master to avoid asynchrony. To select commits from master for use in
the bug fix (version 0.999.3), you can use::
Most development of the release, and its documentation, should happen in master
to avoid asynchrony. First, create a branch, **on your own fork** (to release
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This whole first paragraph and the first sentence of the second one feel redundant with the rest

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure how to fix that.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have suggested an alternative paragraph before

Comment on lines 12 to 15
branch, for the other maintainers to review before the release. Note that all
development for the minor releases and the major release of for instance 0.99,
happens under the branch called ``0.99.X``, where ``X`` is a literal, and
independent of minor bug fix releases. Each release candidate, major, or minor
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I still think this is ambiguous given the previous sentence. Please clarify what "development happens" means or change the phrasing?

@adrinjalali
Copy link
Member Author

I tried to address them. If they're still not clear, feel free to apply changes directly. Don't really feel like working on this PR for much longer :D

Copy link
Contributor
@cmarmo cmarmo left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@adrinjalali even if I'm not a core dev may I approve? I feel as never ending reviews are contraindicated for core-devs too, not only for beginners... :)
The best review ever for this PR will be the next release. WDYT?

Copy link
Member
@rth rth left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @cmarmo ! Yes let's merge this, it been a quite long and detailed discussed for a documentation change that only impacts the release manager (who will likely be able to detect if anything is amiss while going through the instructions).

I think most comments are addressed, waiting 1 day to see if there are any objections.

@NicolasHug
Copy link
Member

let's not merge yet. Last time I looked it wasn't clear to me, and I haven't had to time to check again.

There's no rush anyway

@rth
Copy link
Member
rth commented Jan 23, 2020

OK I added a few minor fixed, IMO it's good to go.

let's not merge yet. Last time I looked it wasn't clear to me, and I haven't had to time to check again.
There's no rush anyway

It's been 1.5 months, 5 reviewers and 81 comments, for something that was expected to be just Adrin documenting his experience as release manager. Never ending reviews are frustrating both for PR authors and reviewers. You were mostly fine with it in December i think #15759 (comment) ?

I would rather we merged it and made follow up clarifications if needed. In any case I see this as a rough guideline for the release manager, and would expect them to have an overall picture of what needs to be done, be sure they understand each of those commands before executing them and asking questions/making clarification PRs if there is any doubt.

@NicolasHug
Copy link
Member

You were mostly fine with it in December i think #15759 (comment) ?

I was only referring to Adrin's modifications to my suggestion further up, not to the PR as a whole.

I don't think there's any urgency here, this is not even a user-facing doc. I'll try to review and push my own stuff soon (by the end of next week)

Copy link
Member
@NicolasHug NicolasHug left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I have pushed some changes. I still have a few questions left, please take a look when you can @adrinjalali

@adrinjalali
Copy link
Member Author

I don't think there's any urgency here, this is not even a user-facing doc. I'll try to review and push my own stuff soon (by the end of next week)

You could also merge and have your changes in a separate PR :P which would make it easier for me and others to review. I'm kinda lost now :D

Have you removed the part where I talked about why the release should ideally happen very quickly after the PR is merged? I think that's an important point if it's missing now.

@NicolasHug
Copy link
Member

Have you removed the part where I talked about why the release should ideally happen very quickly after the PR is merged? I think that's an important point if it's missing now.

Yes I removed it because I could not make sense out of it. The cause to effect relationships were broken somewhere. Here is what it was

https://github.com/scikit-learn/scikit-learn/blob/533a122521dfa85909ec843515f9818a7e66ff30/doc/developers/maintainer.rst#preparing-a-release-pr

In particular, the sentence "Note that pushing the (empty) branch to the main repo will automatically upload its documentation" is confusing because right above the branch is created on the fork. So it's not clear what branch this is referring to.

You could also merge and have your changes in a separate PR :P which would make it easier for me and others to review

Feel free to merge, I pushed because you suggested to before

@adrinjalali
Copy link
Member Author

Thank you all for the commits and comments. Merging this one, happy to have further improvements on it.

@adrinjalali adrinjalali merged commit 1382831 into scikit-learn:master Jan 28, 2020
@adrinjalali adrinjalali deleted the maintainers.rst branch January 28, 2020 16:14
thomasjpfan added a commit to thomasjpfan/scikit-learn that referenced this pull request Feb 22, 2020
* some extra comments

* reorganize steps

* more info

* more clarification

* further instructions

* be cautious with tagging

* add pypi note

* git log copy

* upstream

* more explanation

* fix typo

* clarify

* typo

* further clarifications, address comments

* add link to pep101

* explain branch names

* apply comments

* cover more comments

* clarify branching, remove Dash ref

* Update maintainer.rst

* address some of Roman's comments

* address some of Nocolas's suggestions

* trying to address comments

* CLN Adds reference to conda-forge recipe/meta.yml

* DOC Explicitly push the tag by name

* DOC Explicitly git add folders before commiting

* fixed ref and removed redundant sentence (I think)

* Added note about making sure derecations are handled

* fixed title headers, this file is not just about releasing

* removed redundant paragraph

* major changes

* minor comments

Co-authored-by: Hanmin Qin <qinhanmin2005@sina.com>
Co-authored-by: Thomas J Fan <thomasjpfan@gmail.com>
Co-authored-by: Roman Yurchak <rth.yurchak@gmail.com>
Co-authored-by: Nicolas Hug <contact@nicolas-hug.com>
panpiort8 pushed a commit to panpiort8/scikit-learn that referenced this pull request Mar 3, 2020
* some extra comments

* reorganize steps

* more info

* more clarification

* further instructions

* be cautious with tagging

* add pypi note

* git log copy

* upstream

* more explanation

* fix typo

* clarify

* typo

* further clarifications, address comments

* add link to pep101

* explain branch names

* apply comments

* cover more comments

* clarify branching, remove Dash ref

* Update maintainer.rst

* address some of Roman's comments

* address some of Nocolas's suggestions

* trying to address comments

* CLN Adds reference to conda-forge recipe/meta.yml

* DOC Explicitly push the tag by name

* DOC Explicitly git add folders before commiting

* fixed ref and removed redundant sentence (I think)

* Added note about making sure derecations are handled

* fixed title headers, this file is not just about releasing

* removed redundant paragraph

* major changes

* minor comments

Co-authored-by: Hanmin Qin <qinhanmin2005@sina.com>
Co-authored-by: Thomas J Fan <thomasjpfan@gmail.com>
Co-authored-by: Roman Yurchak <rth.yurchak@gmail.com>
Co-authored-by: Nicolas Hug <contact@nicolas-hug.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

8 participants
0