Skip to content
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

Revert PR with disputed dependencies #37796

Merged
merged 1 commit into from
Apr 27, 2024
Merged

Conversation

roed314
Copy link
Contributor

@roed314 roed314 commented Apr 13, 2024

#36964 was inappropriately merged, since two dependencies were still disputed. This PR attempts to revert the merge. It was created by

git revert -m 1 6ecb1d8532bc9b59ec03a1c7f3b1ce86c6b43cdb

📝 Checklist

  • The title is concise and informative.
  • The description explains in detail what this PR is about.
  • I have linked a relevant issue or discussion.
  • I have created tests covering the changes.
  • I have updated the documentation and checked the documentation preview.

⌛ Dependencies

None, though it will also revert #36676 and #36951.

… to all files, remove remaining `# coding: utf-8`"

This reverts commit 6ecb1d8, reversing
changes made to 8ea5214.
@mkoeppe
Copy link
Contributor

mkoeppe commented Apr 13, 2024

This PR should not be merged because it is obviously not an improvement.

@mkoeppe
Copy link
Contributor

mkoeppe commented Apr 13, 2024

There was absolutely nothing inappropriate in Volker merging the PR that he merged. He's the release manager.

@roed314
Copy link
Contributor Author

roed314 commented Apr 13, 2024

Perhaps the people who were against #36676 and #36951 would disagree; I'd like to hear from them. I'm creating this in support of the process we have in place for resolving disputed PRs, which got mangled this time (we're still working out how it needs to coordinate with dependencies).

I'm open to other suggestions for how to proceed, from the people who were objecting to the code in #36676 and #36951 that got accidentally merged in #36964. In the meantime, I'm going to sleep.

@mkoeppe
Copy link
Contributor

mkoeppe commented Apr 13, 2024

Easy suggestion: How about doing nothing rather than creating additional damage?

@saraedum
Copy link
Member

This PR should not be merged because it is obviously not an improvement.

I don't think this PR is about the question of improvement or not. It's entirely a procedural question. When people voted on #36964, they did not vote on the dependencies of it. After all, the missing dependencies did not have the sufficient majorities to be set to positive review yet. Also, the diff could not even be viewed on GitHub, so I am sure most people voted on the description and discussion of the PR, not on the actual change set ("The diff you're trying to view is too large. We only load the first 3000 changed files.")

There was absolutely nothing inappropriate in Volker merging the PR that he merged. He's the release manager.

I don't think it was ever claimed that @vbraun did anything wrong here. It was just a procedural misunderstanding. He simply missed the message about not merging this yet (and nobody is blaming him for that.) The (disputed) PR mechanism needs a bit of fine-tuning to take dependencies into account. But that should probably be discussed on sage-devel.

Easy suggestion: How about doing nothing rather than creating additional damage?

I believe that not merging this is harmful for the community because it ignores the votes on those dependencies. I volunteer to create PRs to restore the state of the disputed dependencies and #36964 itself.

Copy link

Documentation preview for this PR (built with commit f16eb4b; changes) is ready! 🎉
This preview will update shortly after each push to this PR.

@tornaria
Copy link
Contributor

tornaria commented Apr 13, 2024

I verified this PR by running git revert -m 1 6ecb1d8532bc9b59ec03a1c7f3b1ce86c6b43cdb on a clean checkout of 10.4.beta3 and comparing the tree with the one in this PR.

Edit: not that I mistrust @roed314 in any way. But trust is not really transitive, a review is supposed to be independent of the author, and it makes no sense for anybody to read the diff.

@mkoeppe mkoeppe added disputed PR is waiting for community vote, see https://groups.google.com/g/sage-devel/c/IgBYUJl33SQ and removed s: positive review p: blocker / 1 labels Apr 13, 2024
@mkoeppe
Copy link
Contributor

mkoeppe commented Apr 13, 2024

I don't think this PR is about the question of improvement or not.

That's exactly the question, and the only question that is part of our project's review procedures.

@mkoeppe
Copy link
Contributor

mkoeppe commented Apr 13, 2024

This cannot be merged. Enough is enough.

@roed314
Copy link
Contributor Author

roed314 commented Apr 13, 2024

I'm setting this back to positive review based on

@mkoeppe
Copy link
Contributor

mkoeppe commented Apr 13, 2024

Unbelievable.

@jhpalmieri
Copy link
Member

@mkoeppe you made no objection to Julian's comment "@vbraun please do not merge this one yet. It depends on two disputed PRs that have not received positive review yet." #36964 should have not been given a positive review because of its dependencies. This corrects that problem.

@mkoeppe
Copy link
Contributor

mkoeppe commented Apr 13, 2024

That's not how it works. Our review procedures do not have special rules for PRs that "only revert a PR".

@jhpalmieri
Copy link
Member

+1 from me.

@mkoeppe
Copy link
Contributor

mkoeppe commented Apr 13, 2024

This PR has not even been reviewed. It cannot even be voted on.

@roed314
Copy link
Contributor Author

roed314 commented Apr 13, 2024

@tornaria checked that it did a very simple task: revert another PR that was accidentally merged. That's a review. This is just reverting state back to what develop was yesterday.

@mkoeppe
Copy link
Contributor

mkoeppe commented Apr 13, 2024

We don't merge PRs that are not improvements. Our review criteria are clear regarding this.

@jplab
Copy link

jplab commented Apr 13, 2024

Hello,

So, let me see if I can summarize the situation correctly:

Before any further discussion occurs, I believe it would be a good thing that the points above shall be double-checked. Then the following things shall be clarified (my question might sound naive, but I would like clear answers):

Before that, I do not see how a clear decision can be taken of the present PR.

@dimpase
Copy link
Member

dimpase commented Apr 13, 2024

+1 to merge this

@tobiasdiez tobiasdiez mentioned this pull request Apr 14, 2024
5 tasks
@roed314
Copy link
Contributor Author

roed314 commented Apr 23, 2024

For the record, the vote on sage-devel was 8-4 in favor of this PR. I'm setting this back to positive review.

@mkoeppe
Copy link
Contributor

mkoeppe commented Apr 24, 2024

@roed314 For the record, I consider it a spoiled ballot because of (1) the misleading title of the poll (https://groups.google.com/g/sage-devel/c/glI1YgArcXc/m/U0B_YF8hBAAJ); (2) the adversarial haste to revert these positively reviewed PRs; (3) the continued denial that violations of our reviewing code put these PRs into "disputed" status; (4) the failure to repair the damage inflicted by sage-devel posts that may have intimidated voters; just deleting them is insufficient.

@vbraun vbraun merged commit 54cd43c into sagemath:develop Apr 27, 2024
29 of 48 checks passed
@mkoeppe
Copy link
Contributor

mkoeppe commented Apr 27, 2024

Merging this has also backed out #36951, which has the necessary votes as pointed out in #37796 (comment)
Who's going to fix it?

@mkoeppe mkoeppe added this to the sage-10.4 milestone Apr 27, 2024
@tornaria
Copy link
Contributor

Merging this has also backed out #36951, which has the necessary votes as pointed out in #37796 (comment) Who's going to fix it?

In #36951 (comment) you did not count my -1.

Please see: #36951 (comment)

In any case, if you can rebase that on current develop, we can have a look. I agree on moving to pyproject.toml features, but let's do it right. I'm sure we can figure out a way to respect the meaning of build-system requires (should be only setuptools) and have a static pyproject.toml, while getting the build-wheel requirements right.

@mkoeppe
Copy link
Contributor

mkoeppe commented Apr 27, 2024

let's do it right. I'm sure we can figure out a way to respect the meaning of build-system requires (should be only setuptools) and have a static pyproject.toml

Once more, Gonzalo, setuptools does not support this. What you keep declaring as the "correct meaning" of PEP 517/518, even after I explained it to you, is simply not a thing in actual Python packaging practice.

@tornaria
Copy link
Contributor

Here's the supported and recommended way to customize the build dependencies:
https://setuptools.pypa.io/en/latest/build_meta.html#dynamic-build-dependencies-and-other-build-meta-tweaks

@mkoeppe
Copy link
Contributor

mkoeppe commented Apr 27, 2024

Of course, by declaring and implementing one's own build backend instead of setuptools.build_meta, anything can be implemented.

@tornaria
Copy link
Contributor

Of course, by declaring and implementing one's own build backend instead of setuptools.build_meta, anything can be implemented.

It's just writing a function that returns a list of dependencies. This is not implementing a build backend, and the code is all spelled out in the link above (except for the [...] part where we would place the build requirements).

But moreover, since this would be a python function, it would also allow us to create the build requirements dynamically, which seems like a big advantage.

Currently the build requirements are determined when one runs the ./bootstrap shell script which does the following afaict:

  1. use the shell script sage-get-system-packages to get the install requirements of packages from build/pkgs/$PKG_BASE/*requirements.txt.
  2. write this information into m4/sage_spkg_versions.m4 and m4/sage_spkg_versions_toml.m4.
  3. run m4 to substitute this information in pyproject.toml.m4 producing pyproject.toml.

But in fact, step 1 could also be done in python in get_requires_for_build_wheel(), as long as the information on sagemath-standard dependencies can be included in the sdist (this doesn't mean the information has to be duplicated in all modularized distributions: it can be a single file that gets included in every sdist, similar to how VERSION.txt is included in every sdist).

@mkoeppe
Copy link
Contributor

mkoeppe commented Apr 27, 2024

it would also allow us to create the build requirements dynamically, which seems like a big advantage.

Also an obvious big disadvantage, namely that the dependency is no longer visible in the metadata file. It's running counter to the trend to move this kind of stuff from setup.py (= available at runtime of the build) to a static file.

@mkoeppe
Copy link
Contributor

mkoeppe commented Apr 27, 2024

step 1 could also be done in python in get_requires_for_build_wheel(), as long as the information on sagemath-standard dependencies can be included in the sdist

Sure it could. Hard to see how that would possibly be an improvement though. The current design keeps the reference to the centralized version metadata strictly in the bootstrapping step of our monorepository, and after this we have clean source trees that do not make a reference to such things.

@tornaria
Copy link
Contributor

it would also allow us to create the build requirements dynamically, which seems like a big advantage.

Also an obvious big disadvantage, namely that the dependency is no longer visible in the metadata file. It's running counter to the trend to move this kind of stuff from setup.py (= available at runtime of the build) to a static file.

That's a good point, since we would want the code to be written only once (in sage-setup) but each package have its own set of dependencies. Maybe this information can be stored in pyproject.toml (in a [sage-setup] section or something) and write get_requires_for_build_wheel() in the shim-backend code so that it gets the metadata from the file. What do you think?

@mkoeppe
Copy link
Contributor

mkoeppe commented Apr 27, 2024

I think that reducing the dependencies for the "build_sdist" step is a micro-optimization that is not worth spending time on (or I would probably already have done it).

@saraedum
Copy link
Member

Merging this has also backed out #36951, which has the necessary votes as pointed out in #37796 (comment) Who's going to fix it?

There are branches 36951, 36964, 36676 on my fork that cherry-pick the changes from the original PRs. I am happy to create PRs with these changes if you want me to but since the original PRs were yours, it's maybe easier if you create the PRs starting from these branches.

@mkoeppe
Copy link
Contributor

mkoeppe commented Apr 28, 2024

Please go ahead, Julian.

@saraedum
Copy link
Member

@mkoeppe I created #37900 to reproduce #36676. #36676 is still open though I think it was in essence merged and reverted. Probably #36676 should be closed now but I leave that to you.

@saraedum
Copy link
Member

There are now #37900, #37901, #37902 which revert this revert.

@mkoeppe
Copy link
Contributor

mkoeppe commented Apr 29, 2024

Thanks @saraedum.

vbraun pushed a commit to vbraun/sage that referenced this pull request May 2, 2024
    
<!-- ^^^^^
Please provide a concise, informative and self-explanatory title.
Don't put issue numbers in there, do this in the PR body below.
For example, instead of "Fixes sagemath#1234" use "Introduce new method to
calculate 1+1"
-->
<!-- Describe your changes here in detail -->

As noted in
sagemath#36951 (comment), the
fact that the dependency declaration of sage-the-library depends on
information contain in sage-the-distro's build folder is problematic for
the separation of concerns. Sage-the-distro should rely on information
of sage-the-library, not the other way around. Here we fix this for the
build requirements by making `src/pyproject.toml` the single source of
thruth. The corresponding `install-requires.txt` are demoted to mere
indicator files (to be removed later). Moreover, this change allows us
to make `pyproject.toml` a static file (no longer generated by
configure), which should help with downstream packaging.

---

Happy new year!

<!-- Why is this change required? What problem does it solve? -->
<!-- If this PR resolves an open issue, please link to it here. For
example "Fixes sagemath#12345". -->
<!-- If your change requires a documentation PR, please link it
appropriately. -->

### 📝 Checklist

<!-- Put an `x` in all the boxes that apply. -->
<!-- If your change requires a documentation PR, please link it
appropriately -->
<!-- If you're unsure about any of these, don't hesitate to ask. We're
here to help! -->
<!-- Feel free to remove irrelevant items. -->

- [ ] The title is concise, informative, and self-explanatory.
- [ ] The description explains in detail what this PR is about.
- [ ] I have linked a relevant issue or discussion.
- [ ] I have created tests covering the changes.
- [ ] I have updated the documentation accordingly.

### ⌛ Dependencies

- sagemath#37796
<!-- List all open PRs that this PR logically depends on
- sagemath#12345: short description why this is a dependency
- sagemath#34567: ...
-->

<!-- If you're unsure about any of these, don't hesitate to ask. We're
here to help! -->
    
URL: sagemath#36982
Reported by: Tobias Diez
Reviewer(s): Dima Pasechnik, Gonzalo Tornaría, Matthias Köppe, Tobias Diez
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
disputed PR is waiting for community vote, see https://groups.google.com/g/sage-devel/c/IgBYUJl33SQ
Projects
None yet
Development

Successfully merging this pull request may close these issues.