[GRASS-dev] help with completing GRASS 8 new features wiki

Dear all,

As we now have grass 8 branch and we approach the date for RC1 release, I kindly ask your help to fill in the new features page: https://trac.osgeo.org/grass/wiki/Grass8/NewFeatures80

We happily welcome text snippets and screenshots to highlight the new and exciting changes that will come with GRASS 8 as well as bug fixing, improvements, new modules, library changes, etc. These can then be recycled to create more posts for social media :wink:

Thanks much in advance!
Vero

On Wed, Nov 24, 2021 at 2:10 PM Veronica Andreo <veroandreo@gmail.com> wrote:

Dear all,

As we now have grass 8 branch and we approach the date for RC1 release, I kindly ask your help to fill in the new features page: https://trac.osgeo.org/grass/wiki/Grass8/NewFeatures80

We happily welcome text snippets and screenshots to highlight the new and exciting changes that will come with GRASS 8 as well as bug fixing, improvements, new modules, library changes, etc. These can then be recycled to create more posts for social media :wink:

Thanks much in advance!
Vero

In addition, there is now also the detailed (to be filled) page
https://trac.osgeo.org/grass/wiki/Release/8.0.0-News

--> git guru wanted!

For populating this page I usually use "git log":

# GRASS GIS 7.0.0 release on 2015-03-20
git log --oneline --after="2015-03-20" | cut -d' ' -f2- | sed 's+^+ *
G80:+g' | sed 's+(#+(PR:+g' | sort -u

which crafts the entries for the trac page.
However, here we get 5586 entries which overlap a lot with all the 7.x
commits (not to be listed here)...

Question: how to filter out the *relevant* ones (the "delta" of
commits between G7.x and G8.0) which are not part of version 7.8.6?

thanks,
Markus

On Sun, Nov 28, 2021 at 1:06 PM Markus Neteler <neteler@osgeo.org> wrote:

On Wed, Nov 24, 2021 at 2:10 PM Veronica Andreo <veroandreo@gmail.com> wrote:

For populating this page I usually use ā€œgit logā€:

GRASS GIS 7.0.0 release on 2015-03-20

git log --oneline --after=ā€œ2015-03-20ā€ | cut -d’ ’ -f2- | sed ā€˜s+^+ *
G80:+g’ | sed ā€˜s+(#+(PR:+g’ | sort -u

You could also use GitHub CLI to get merged PRs with milestone 8.0.0:

gh pr list --search ā€œmilestone:8.0.0ā€ --state merged --limit 100

This gives 93 PRs. Unfortunately, we also have PRs with no milestone which is 919 items:

gh pr list --search ā€œno:milestoneā€ --state merged --limit 100

On Mon, Nov 29, 2021 at 2:39 AM Vaclav Petras <wenzeslaus@gmail.com> wrote:

On Sun, Nov 28, 2021 at 1:06 PM Markus Neteler <neteler@osgeo.org> wrote:

On Wed, Nov 24, 2021 at 2:10 PM Veronica Andreo <veroandreo@gmail.com> wrote:

For populating this page I usually use "git log":

# GRASS GIS 7.0.0 release on 2015-03-20
git log --oneline --after="2015-03-20" | cut -d' ' -f2- | sed 's+^+ *
G80:+g' | sed 's+(#+(PR:+g' | sort -u

You could also use GitHub CLI

(from https://github.com/cli/cli#installation)

# Fedora:
sudo dnf install -y
https://github.com/cli/cli/releases/download/v2.2.0/gh_2.2.0_linux_amd64.rpm

Next I have to study how the authentication of `gh` works :slight_smile:

to get merged PRs with milestone 8.0.0:

gh pr list --search "milestone:8.0.0" --state merged --limit 100

This gives 93 PRs.

Cool, exactly what I was looking for.

Unfortunately, we also have PRs with no milestone which is 919 items:

gh pr list --search "no:milestone" --state merged --limit 100

If I cannot sleep I try to clean up the more recent ones :smiley:

BTW, while on the "gh" pages, I saw very nice release pages. Guess we want this!

https://github.com/cli/cli/releases/tag/v2.2.0
--> New Contributors
--> Contributors

Seems they use
https://docs.github.com/en/repositories/releasing-projects-on-github/automatically-generated-release-notes
their code:
https://github.com/cli/cli/blob/trunk/.github/workflows/releases.yml

Maybe nice for inspiration.

Cheers,
Markus

On Mon, Nov 29, 2021 at 2:39 AM Vaclav Petras <wenzeslaus@gmail.com> wrote:

On Sun, Nov 28, 2021 at 1:06 PM Markus Neteler <neteler@osgeo.org> wrote:

On Wed, Nov 24, 2021 at 2:10 PM Veronica Andreo <veroandreo@gmail.com> wrote:

For populating this page I usually use "git log":

# GRASS GIS 7.0.0 release on 2015-03-20
git log --oneline --after="2015-03-20" | cut -d' ' -f2- | sed 's+^+ *
G80:+g' | sed 's+(#+(PR:+g' | sort -u

You could also use GitHub CLI to get merged PRs with milestone 8.0.0:

gh pr list --search "milestone:8.0.0" --state merged --limit 100

This gives 93 PRs. Unfortunately, we also have PRs with no milestone which is 919 items:

gh pr list --search "no:milestone" --state merged --limit 100

While at it, with Carmen's support, we also found a beautiful way to
auto-generate release notes:

gh api repos/OSGeo/grass/releases/generate-notes -f tag_name="8.0.0"
-f target_commitish=releasebranch_8_0 -q .body

Result:

## What's Changed
* fix tests for Python 3 by @petrasovaa in https://github.com/OSGeo/grass/pull/1
* readme: Convert to markdown and add travis badge by @pmav99 in
https://github.com/OSGeo/grass/pull/8
* r.contour: fix broken contour lines (#3846), clean contour lines
trac… by @metzm in https://github.com/OSGeo/grass/pull/6
* pygrass.gis: Make Region importable from grass.pygrass.gis by
@pmav99 in https://github.com/OSGeo/grass/pull/2
...
* r.random: Add -s flag, remove -i flag, redo interface by @wenzeslaus
in https://github.com/OSGeo/grass/pull/1054
* CI: Run Docker for all release branches by @wenzeslaus in
https://github.com/OSGeo/grass/pull/1975

## New Contributors
* @pmav99 made their first contribution in https://github.com/OSGeo/grass/pull/8
* @rouault made their first contribution in
https://github.com/OSGeo/grass/pull/16
* @anikaweinmann made their first contribution in
https://github.com/OSGeo/grass/pull/18
...

Hence it comes with who-created-the-merged-PR, contributors and new
contributors list etc. (of course still needs manual or scripted
sorting, the gh REST API seems to support "sort=pushed"?).

Drawback: how to filter out the "old" stuff (we seek the delta between
7.8.6 and releasebranch_8_0) - any idea?

Cheers,
Markus

--
Markus Neteler, PhD
https://www.mundialis.de - free data with free software
https://grass.osgeo.org
https://courses.neteler.org/blog

On Wed, Dec 1, 2021 at 9:25 PM Markus Neteler <neteler@osgeo.org> wrote:
...

gh api repos/OSGeo/grass/releases/generate-notes -f tag_name="8.0.0"
-f target_commitish=releasebranch_8_0 -q .body

...

Drawback: how to filter out the "old" stuff (we seek the delta between
7.8.6 and releasebranch_8_0) - any idea?

Just found out that tags can be compared (sorry for slow), e.g.:

https://github.com/OSGeo/grass/compare/7.8.5...7.8.6

My question: can this be queried via gh api as well? That might be the solution.

Markus

On Wed, Dec 1, 2021 at 4:01 PM Markus Neteler <neteler@osgeo.org> wrote:

On Wed, Dec 1, 2021 at 9:25 PM Markus Neteler <neteler@osgeo.org> wrote:
…

Drawback: how to filter out the ā€œoldā€ stuff (we seek the delta between
7.8.6 and releasebranch_8_0) - any idea?

Just found out that tags can be compared (sorry for slow), e.g.:

https://github.com/OSGeo/grass/compare/7.8.5…7.8.6

But for 7.8.6…8.0.0 will not filter out the backported commits, no?

Here is an idea, we stop backporting and then the simple queries will start working or, a more conservative suggestion, we consider the bugs fixed in 8.0 and 7.8 worth reporting for both. It is fixed for 8.0, so it should be reported there. It also happens to be backported to the 7.8 branch, but that does not change anything about a need to report it for 8.0 since that’s really the main focus after the 7.8.0 release. I’m just not sure how this should work in the state when we branch out for release, but there is no release yet (the current 8.0 vs 8.2 state).

On Thu, Dec 2, 2021 at 3:51 AM Vaclav Petras <wenzeslaus@gmail.com> wrote:

On Wed, Dec 1, 2021 at 4:01 PM Markus Neteler <neteler@osgeo.org> wrote:

On Wed, Dec 1, 2021 at 9:25 PM Markus Neteler <neteler@osgeo.org> wrote:
...
> Drawback: how to filter out the "old" stuff (we seek the delta between
> 7.8.6 and releasebranch_8_0) - any idea?

Just found out that tags can be compared (sorry for slow), e.g.:

https://github.com/OSGeo/grass/compare/7.8.5...7.8.6

But for 7.8.6...8.0.0 will not filter out the backported commits, no?

Here is an idea, we stop backporting and then the simple queries will start working or, a more conservative suggestion, we consider the bugs fixed in 8.0 and 7.8 worth reporting for both. It is fixed for 8.0, so it should be reported there.

+1!

It also happens to be backported to the 7.8 branch, but that does not change anything about a need to report it for 8.0 since that's really the main focus after the 7.8.0 release. I'm just not sure how this should work in the state when we branch out for release, but there is no release yet (the current 8.0 vs 8.2 state).

FWIW, I have assigned milestones to all open PRs (feel free to shift
them to others as appropriate, I went via "best guess"):
https://github.com/OSGeo/grass/issues?page=11&q=is%3Aopen+no%3Amilestone
--> empty :slight_smile:

Cheers,
Markus

On Mon, Nov 29, 2021 at 2:39 AM Vaclav Petras <wenzeslaus@gmail.com> wrote:

On Sun, Nov 28, 2021 at 1:06 PM Markus Neteler <neteler@osgeo.org> wrote:

On Wed, Nov 24, 2021 at 2:10 PM Veronica Andreo <veroandreo@gmail.com> wrote:

For populating this page I usually use "git log":

...

You could also use GitHub CLI to get merged PRs with milestone 8.0.0:

Ok, I have made a major "milestone" cleanup (some hours of stupid
work, so PLEASE all assign the milestone to their PRs!):

https://github.com/OSGeo/grass/pulls?q=is%3Apr+no%3Amilestone+is%3Aclosed
gives 0 at time, meaning that each PR has a milestone now assigned.

I went through 944 unlabeled PRs... :smiley:

gh pr list --search "milestone:8.0.0" --state merged --limit 100

This gives 93 PRs.

Now
- 19 open
- 827 closed

Unfortunately, we also have PRs with no milestone which is 919 items:

gh pr list --search "no:milestone" --state merged --limit 100

Now: "No pull requests match your search in OSGeo/grass" :slight_smile:

In my cleanup session,I have created the missing 7.x milestones in
GitHub and assigned the respective PRs to them. See here for the
closed 7.x milestones:

https://github.com/OSGeo/grass/milestones?direction=desc&sort=due_date&state=closed

(If anyone comes across a wrong assignment, please just fix it right
away by reassigning.)

Method: Due to the sheer amount of unlabeled PRs I used the
semi-heuristic approach of quick-reading the 944 PR titles and
(ideally) spotting those which I knew they don't belong to 8.x. In
addition, I checked the PR merge date and cross-checked that with the
list of release dates to figure out to which milestone they belong to,
then assigned them accordingly.

Overall, it looks much better now.

CHANGELOG creation:

Auto-generated changelog on command line (btw, how to sort the output via API?):

gh api repos/OSGeo/grass/releases/generate-notes -f tag_name="8.0.0"
-f target_commitish=releasebranch_8_0 -q .body

Alternative (in future use 8.0.0 tag which doesn't exist yet) in the browser:
https://github.com/OSGeo/grass/compare/7.8.6...releasebranch_8_0

Cheers,
Markus

PS: PLEASE always assign a milestone to (new) PRs!

El jue, 9 dic 2021 a las 23:46, Markus Neteler (<neteler@osgeo.org>) escribió:

On Mon, Nov 29, 2021 at 2:39 AM Vaclav Petras <wenzeslaus@gmail.com> wrote:

On Sun, Nov 28, 2021 at 1:06 PM Markus Neteler <neteler@osgeo.org> wrote:

On Wed, Nov 24, 2021 at 2:10 PM Veronica Andreo <veroandreo@gmail.com> wrote:

For populating this page I usually use ā€œgit logā€:
…
You could also use GitHub CLI to get merged PRs with milestone 8.0.0:

Ok, I have made a major ā€œmilestoneā€ cleanup (some hours of stupid
work, so PLEASE all assign the milestone to their PRs!):

https://github.com/OSGeo/grass/pulls?q=is%3Apr+no%3Amilestone+is%3Aclosed
gives 0 at time, meaning that each PR has a milestone now assigned.

I went through 944 unlabeled PRs… :smiley:

Oh, wow! That’s a lot! Thanks Markus!!

gh pr list --search ā€œmilestone:8.0.0ā€ --state merged --limit 100

This gives 93 PRs.

Now

  • 19 open
  • 827 closed

Unfortunately, we also have PRs with no milestone which is 919 items:

gh pr list --search ā€œno:milestoneā€ --state merged --limit 100

Now: ā€œNo pull requests match your search in OSGeo/grassā€ :slight_smile:

In my cleanup session, I have created the missing 7.x milestones in
GitHub and assigned the respective PRs to them. See here for the
closed 7.x milestones:

https://github.com/OSGeo/grass/milestones?direction=desc&sort=due_date&state=closed

(If anyone comes across a wrong assignment, please just fix it right
away by reassigning.)

Method: Due to the sheer amount of unlabeled PRs I used the
semi-heuristic approach of quick-reading the 944 PR titles and
(ideally) spotting those which I knew they don’t belong to 8.x. In
addition, I checked the PR merge date and cross-checked that with the
list of release dates to figure out to which milestone they belong to,
then assigned them accordingly.

Overall, it looks much better now.

Impressive, thanks again!

CHANGELOG creation:

Auto-generated changelog on command line (btw, how to sort the output via API?):

gh api repos/OSGeo/grass/releases/generate-notes -f tag_name=ā€œ8.0.0ā€
-f target_commitish=releasebranch_8_0 -q .body

What type of sorting do we need? Does it provide the PR number or the hash? If the number or date, maybe that could help. I have not tested or digged into it myself so I’m only guessing here

Alternative (in future use 8.0.0 tag which doesn’t exist yet) in the browser:
https://github.com/OSGeo/grass/compare/7.8.6…releasebranch_8_0

Doesn’t look as nice, but it’s an alternative indeed :slight_smile:

Thanks again!
Vero

PS: PLEASE always assign a milestone to (new) PRs!

On Fri, Dec 10, 2021 at 12:41 PM Veronica Andreo <veroandreo@gmail.com> wrote:

El jue, 9 dic 2021 a las 23:46, Markus Neteler (<neteler@osgeo.org>) escribió:

...

CHANGELOG creation:

Auto-generated changelog on command line (btw, how to sort the output via API?):

gh api repos/OSGeo/grass/releases/generate-notes -f tag_name="8.0.0"
-f target_commitish=releasebranch_8_0 -q .body

What type of sorting do we need? Does it provide the PR number or the hash? If the number or date, maybe that could help. I have not tested or digged into it myself so I'm only guessing here

This is the current output (massively shortened for here) - note that
I added "previous_tag_name=7.8.6" as the point-in-time to start the
Changelog:

gh api repos/OSGeo/grass/releases/generate-notes -f tag_name="8.0.0"
-f previous_tag_name=7.8.6 -f target_commitish=releasebranch_8_0 -q
.body
## What's Changed
* Needed version updates for GRASS GIS 7.9 by @neteler in
https://github.com/OSGeo/grass/pull/77
* change Python shebang to python3 by @neteler in
https://github.com/OSGeo/grass/pull/75
* update Python 3 dependencies by @neteler in
https://github.com/OSGeo/grass/pull/79
* grass.py: fix typo in info_text, svn -> dev by @landam in
https://github.com/OSGeo/grass/pull/78
* change Python shebang to python3 by @neteler in
https://github.com/OSGeo/grass/pull/82
* wxGUI: fix 3D view wxPyDeprecationWarning, from
https://trac.osgeo.or… by @petrasovaa in
https://github.com/OSGeo/grass/pull/81
* i18N: sync from Transifex by @neteler in
https://github.com/OSGeo/grass/pull/87
* configure update by @neteler in https://github.com/OSGeo/grass/pull/89
* g.extension: change to python3 by @anikaweinmann in
https://github.com/OSGeo/grass/pull/83
* remove now unneeded Python 3 shebang trick by @neteler in
https://github.com/OSGeo/grass/pull/90
* r.sun: fix copy paste error when using both lat and lon raster by
@petrasovaa in https://github.com/OSGeo/grass/pull/92

...
* v.colors: Fix color inversion by @HuidaeCho in
https://github.com/OSGeo/grass/pull/1478
* wxGUI: fix calling coordselect validator by @petrasovaa in
https://github.com/OSGeo/grass/pull/1455
* v.random: finished test in reference to #704 by @SunveerSingh in
https://github.com/OSGeo/grass/pull/1464
* wxGUI/gcmd: fix read command stdout by @tmszi in
https://github.com/OSGeo/grass/pull/1228
* wxGUI: Make Display related toolbars part of Display tab by
@lindakladivova in https://github.com/OSGeo/grass/pull/1321
* wxGUI: one row for lmgr toolbar after adding 3D view tab by
@lindakladivova in https://github.com/OSGeo/grass/pull/1485
* pythonlib: Fix stylistic Flake8 warnings by @wenzeslaus in
https://github.com/OSGeo/grass/pull/1486
...

## New Contributors
* @huhabla made their first contribution in
https://github.com/OSGeo/grass/pull/99
* @mlennert made their first contribution in
https://github.com/OSGeo/grass/pull/101
* @mankoff made their first contribution in
https://github.com/OSGeo/grass/pull/91
* @mwort made their first contribution in https://github.com/OSGeo/grass/pull/85
* @byronbest made their first contribution in
https://github.com/OSGeo/grass/pull/113
* @mmacata made their first contribution in
https://github.com/OSGeo/grass/pull/151
...

**Full Changelog**: https://github.com/OSGeo/grass/compare/7.8.6...8.0.0

I'd like to see the first PR block sorted by characters, i.e.
alphabetically. Then it's easier to transfer it into the topical
"blocks" we have in the trac Wiki.

This is the documentation:
https://cli.github.com/manual/gh_api
https://docs.github.com/en/rest/reference/repos#generate-release-notes-content-for-a-release

but I don't see how, perhaps a new file '.github/release.yaml' is needed?

Markus

PS: PLEASE always assign a milestone to (new) PRs!

How to edit and fine-tune release descriptions?

I have noticed that the lines for the two v.db.select PRs related to JSON and CSV were confusing because the JSON mentioned a flag which was later replaced, so I edited the description of the RC2 release on GitHub. Is that the right approach?

Thanks,
Vaclav

Vaclav Petras <wenzeslaus@gmail.com> schrieb am Mi., 19. Jan. 2022, 03:30:

How to edit and fine-tune release descriptions?

Just use the edit button.

I have noticed that the lines for the two v.db.select PRs related to JSON and CSV were confusing because the JSON mentioned a flag which was later replaced, so I edited the description of the RC2 release on GitHub. Is that the right approach?

That’s the right approach.

Ideally you the same in the corresponding trac page… (but we may discuss is we want to keep writing the trac release pages in parallel).

Markus