I’m not worried about frequent posters at all. I’m worried more about new posters.
I reason there’s a continuum for new posters:
There are people who are going to boldly go forward regardless of what’s put up and front and ask their questions anyway. For them, additional context likely make any difference in what they choose to post.
Then there are people who are going to be more quiet and thoughtful, see the higher burden of what they need to do to share an idea, and self-censor.
I think if people are unsure[1] they can post their thread to Python Help and if after discussion others agree “this is a serious proposal” it can get moved (or a new thread started in Ideas).
The template can say as much. I don’t want to scare people away, but if we’re not willing to dissuade people from posting then nothing can be changed.
which can vary greatly between people, like you say ↩︎
A barrier added in a pinned post that people would read after it’s linked to them in answer to their thread, leaves a record of the idea in Ideas.
Someone who is deterred from posting at all leaves no trace.
In my experience, no-one ever fills in templates properly. Posts with a bunch of “not applicable” are worse than we currently have.
To the extent that the first question would be “why not just use the 3rd party lib?” I disagree. In fact, rewriting an existing, established and tested library just so it can be in the stdlib without needing the support of the library author seems like a particularly bad idea.
If the author supports inclusion, they will presumably be willing and able to change the license. If they don’t, the license is the least of our concerns.
More realistically, getting the same low-quality posts with a bunch of ignored boilerplate to further reduce the quality.
I’m strongly of the opinion that low-quality posters won’t change their behaviour without help. We need to change the behaviour of existing posters[1], to educate new posters in how to improve rather than encouraging them in their misunderstandings and incorrect assumptions. I see a pinned post as more of a resource for existing participants who want to help newcomers learn, rather than as a way of making new posters get things right without assistance.
Some of whom are also relatively new posters, and therefore still learning themselves. ↩︎
That’s maybe one of the simplest forms you could make, so why not, but is it even possible for Discourse to offer that form feature ? Or can it just (at best) pre-fill the post text box ?
I’m not sure it’s improtant to preserve the record is important to preserve, in this situation. We’re talking about ideas that haven’t been researched or fleshed out–finding a bunch of those threads in the forum history isn’t helpful when researching the next thread. You want to find serious discussions and learn the arguments.
Someone who does research on their idea and realizes it’s nonviable is also deterred from posting, and would leave no trace. Is that a bad thing, or is that them being a responsible participant who respects everyone’s time?
I guess I don’t understand the resistance to what feels like a pretty light nudge for new threads[1]. It’s not going to fix all problems but if it lessens the noise a little bit at very little cost, that seems worth trying?
On the other side, I don’t think changing the behavior of all the existing posters is more realistic–especially as the population is constantly changing and new people arrive.
when talking about a brief note, not a prescriptive template ↩︎
Here’s the first draft of the FAQ. Thoughts? Should we mention PyPi?
FAQ: How to create a successful proposal?
Check if your idea is backwards compatible, otherwise it needs very good justification
Be willing to help implement and maintain it, don’t expect us to do the work for you
Read & summarize previous discussion, including of similar proposals. Don’t create a thread if you have nothing to add or to address the reasons they were rejected
I disagree strongly with this one. Too often, github searches end up being used as “look, 100k lines of code would probably benefit from this!!!” with no actual check as to how many are genuine cases (even some sort of approximation would require checking hundreds of cases to be meaningful) and no thought as to whether the code would benefit from the proposed feature.
Promoting code searches, as opposed to proper, in-depth reviews of codebases where a genuine benefit can be shown, is generally going to lead to lower quality, low-effort justifications of a proposal.
Yes, finding proper examples is hard. But that’s the point - we’re trying to encourage posters to understand what it takes to get a proposal accepted, and put in some effort. A proposal that quotes github search counts as the justification for it being “useful” will never get accepted as a PEP, so why waste everyone’s time if that’s all you have to offer?
OK next, I’m not arguing about that further. (I’m a bit surprised that more people install numpy or use float('inf') rather than importing math.inf: GitHub - nineteendo/complex-builtins)
I would be a bit less authoritative about this one, maybe “If your idea can be implemented as a library, the best way to test the interest of the community towards it is to put it on Pypi.”
There are counter-examples to that rule, for example things that are easy to implement in C yet are almost impossible to implement in pure Python - and for reasons other than performance, immutability for instance.
A link to the PEP about backwards compatibility would help here. And I’d phrase it like “Python has a very strong/rigid/conservative/whatever policy about backwards compatibility, and it could be the sole reason why your idea gets rejected. Read more at PEP xxx.”
I’d phrase that one as a bit less authoritative too, though I don’t have an alternative in mind.
is good, though I’d maybe add that it’s even more true for rejected PEPs.
This is more nitpicking, but I’d phrase it like “Explain why the other ways of achieving the same goals as your idea, i.e its potential alternatives or workarounds, are insufficient.”
is good
As a whole all the points you make deserve to be in the post.
Maybe add a sort of carrot/stick at the end, such as (maybe not phrased like that) “Ideas get integrated/applied/accepted/implemented/whatever when they gather support. Give the best chances for your idea to move forward/anywhere by following the following advice. Otherwise, the risk is that your idea will be ignored.”
-1. It’s too black and white. While it’s the usual response, the reasoning is nuanced, and not something that can easily be put in a single sentence.
Basically, you need to provide a good argument as to why your proposal needs to go into Python itself (or the stdlib) rather than being made available a different way - which might be as a package on PyPI, or a recipe in the documentation, or even just something that people can write as a utility function for their own project as needed (“not every 3-line function needs to be a builtin”). You also need to explain why it’s better for this to be available a few years from now, when the version of Python it gets added to is available, rather than right now, which is what a recipe or PyPI library offers.
The key point is to understand that just because it would be convenient for you if this was added to Python, doesn’t mean that it’s right for others, or for Python.
Python has a very strict policy about backwards compatibility, and it can be the sole reason to reject your idea. Read more at PEP 387
Be willing to help implement and maintain it, don’t expect us to do the work for you
Read & summarize previous discussion, including of similar proposals. Don’t create a thread if you have nothing to add or to address the reasons they were rejected
Explain why the other ways of achieving the same goals as your idea, i.e its potential alternatives or workarounds, are insufficient
For instance, before asking for something to be included in the standard library, ask yourself why it can’t be shared differently, as a snippet or as a PyPI package.
Give clear examples describing how your idea would work
Not all ideas are about the stdlib. My version, and I would put it inside point 5 :
“Explain why the other ways of achieving the same goals as your idea, i.e its potential alternatives or workarounds, are insufficient. For instance, before asking for something to be included in the standard library, ask yourself why it can’t be shared differently, as a snippet or as a Pypi package.”
The second sentence can be put in a sub-bullet of the list.
Understand that Python is a volunteer project. If you want to make a proposal, you’re volunteering to help make it happen. How you help will depend on your skills and experience, but at a minimum you should expect people to assume that you will do your research, manage the discussion, respond to and address comments and criticisms, and not expect others to do tasks you aren’t willing to do.
Also, it might be worth explicitly linking to the code of conduct here. The “Our Community” section provides a lot of context on how we expect people to interact here, and honestly, a lot of the problems I have with “low quality” posts come down to people not actually following the guidelines in there.
And while it’s not directly relevant to the ideas category, and is more directed at the people treating the forum as a way to submit “feature requests”, maybe a link to Setting expectations for open source participation wouldn’t be completely unreasonable, either…