I appreciate that the PEP has been split into two. Of course they are still sort of interrelated in that it wouldn’t make sense to accept 755 in isolation, and the utility of 752 in isolation is unclear. Some aspects of the motivation also straddle the boundary. Most of my concerns lean toward the policy side so I’m going to reply in this thread but some of what I’m responding to is in the other thread or the other PEP. In particular, I think that concerns about the motivation or “what problems does this solve” are inherently policy-driven because, in practice, all of the issues come down to humans understanding “what will PyPI do”, and technical issues of how that happens are more in the background.
In PEP 755 the Motivation starts with this:
The current ecosystem lacks a way for projects with many packages to signal a verified pattern of ownership.
I think a lot of the discussion indicates we need to be a bit more detailed about that. As in, what exactly are we signalling, and who is supposed to be receiving those signals, and how are they expected to make use of them.
In my view, the main useful thing would be signals to human beings installing packages, namely signals that ultimately boil down to “you can/cannot trust this package”. Some such signals may be mediated by something like “this package is/is not approved by this person/entity” (and then it’s up to the person using the tool to decide if they trust that entity). Some of the stuff in the PEPs (especially the controversial stuff about a corporate/community “double standard”) seems more to do with benefiting the organizations that upload the packages, and I see that as a way less important goal.
Given that, as I see it the proposal has two big problems:
- The gaps in the namespace guarantees are so huge that it seems to me they won’t solve enough of the problem to be useful. One such gap is the grandfathering-in of existing packages, and the other is the “open” namespaces, which will still allow unrestricted uploads. With these gaps, the amount of information that a user can get just by looking at the name of a package
foo-bar
seems likely to be barely more than it is today.
- The fact that all the information is going to only be displayed on PyPI webpages reduces the utility even more. A vast number of people install packages without visiting their PyPI page, or visit the page only long enough to copy the pip install info from the header. These people will derive no benefit from any kind of “verification” info that only shows up on PyPI project pages.
Like others I also have concerns about the differential treatment of company vs. community projects. One reason this can be tricky is that, if part of the rationale is to provide a funding stream for PyPI (and it is, then the decision about whether to approve this PEP becomes in part a financial one. Suppose we had a really limited namespace system where companies could pay $1 billion to reserve a prefix. Even if the system was totally useless for small-time package maintainers, as long as it didn’t actively harm them, it might still be a net win if we could just get one or two companies to cough up, because that money could be used to improve the PyPI experience for everyone else in various ways.
On the other hand, even a more full-featured system could wind up not being worth it if the fees were too low. The namespacing could become a victim of its own success if it results in a flood of namespace requests that winds up requiring more PyPI staff time than can be funded with the resulting fees.
Those are extreme scenarios, but the point is that I feel it’s difficult to evaluate a proposal like this without having some kind of concrete estimate of how much money it will bring in relative to how much work it will create. And of course even having to consider that as part of the PEP process feels a bit weird in itself. . .
Aside from that, I’ll echo some other people’s concerns about the two-tiered system for company vs. community names. It doesn’t sit right with me. Along the lines I said above, I could maybe be convinced it was worth it if we had a solid basis for believing we could raise a large amount of money while not inconveniencing anyone except a few big companies paying big fees. But at least for me, the burden of proof there is on the proposal — unless we have some clear and convincing rationale for believing we can do that, we should assume we cannot, and in that case the two big problems I mentioned above are enough to make me -1 on the idea.
Maybe the most egregious part of the policy proposal to me is the idea of forbidding a viewable global namespace registry “because this has the potential to leak private information such as upcoming products”. My feeling is that, whatever gets decided, it really should be presented to companies as a take-it-or-leave-it scenario. Like, if you want to keep your product name private, that’s fine, but then you can’t reserve it; or if you want to reserve it, great, but then you can’t keep it private.
This comes down to what I said about motivations. Helping individual Python users be more confident about the packages they install is a worthwhile goal for PyPI. Keeping some hypothetical CEOs happy about the secrecy of their products is not.