Add pinned post in ideas

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:

  1. 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.
  2. 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’m worried more about group 2.

1 Like

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.


  1. 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.

1 Like

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.


  1. Some of whom are also relatively new posters, and therefore still learning themselves. ↩︎

1 Like

And something like the template for new features on GitHub?

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 ?

That’s exactly what I was proposing initially when I mentioned templates (which Discourse supports with a plugin)

3 Likes

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.


  1. when talking about a brief note, not a prescriptive template ↩︎

1 Like

Here’s the first draft of the FAQ. Thoughts? Should we mention PyPi?

FAQ: How to create a successful proposal?

  1. Check if your idea is backwards compatible, otherwise it needs very good justification
  2. Be willing to help implement and maintain it, don’t expect us to do the work for you
  3. 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
  4. If there are other ways to achieve your idea, explain why they’re insufficient
  5. Give clear examples describing how your idea works
  6. Look for applicability on Github
2 Likes

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?

3 Likes

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)

Add this after 2? I’m waiting for your input.

  • If your idea can be implemented as a library, put it on PyPi first to gauge interest
1 Like

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.

  1. 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.”

  1. 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 Like

-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.

As I say, nuanced…

2 Likes

Here’s the second draft.

FAQ: How to create a successful proposal?

  1. 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
  2. Be willing to help implement and maintain it, don’t expect us to do the work for you
  3. 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
  4. 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.
  5. Give clear examples describing how your idea would work
1 Like

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.

1 Like

Done, in the first 10 minutes posts can still be edited before going to mailing list users. Ninja edit.

1 Like

Please. Don’t. Substantively. Edit. Posts.

Ah, sorry I read the message of Gerlach differently. I thought it said afterwards.

If an edit doesn’t address a response, it should be fine, but now it’s too late to fix this for mailing list users.

Anyway, back to topic: what still be needs to be changed?

Better (but longer):

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…

4 Likes