What constitutes a good post depends heavily on the content and purpose of the post itself. (Whether or not my current post is a good one remains to be seen.) The following are some observations I’ve made over the years; let’s consider the OP first.
If the poster is asking for volunteers to help them with a problem, then make it easier to get help. Following those guidelines should lead to a productive post and, with any luck, a good solution. And I emphasized volunteers precisely because the folks in this forum are volunteers who are interested in the language and want to help and participate in discussion. A good OP should be cognizant of the fact they are asking for help from people who are not obligated to do so. Taking the time and making the effort to craft a good post (e.g. by following the PSA above) is essentially a token of respect to those ready to help.
If the poster has a feature request or “why doesn’t Julia do it this way?” type of question, then they are making a bigger request and have a higher hurdle to jump. The classic response is Julia is not at that stage of development anymore, but that does not mean the language is static! If someone thinks Feature X should be part of Julia, then have at least a basic working version ready to show (especially if it would be breaking!). It’s hard to convince people that Julia needs @a_fancy_new_macro
unless you can show both how it works and why current solutions don’t work (or don’t exist). At the risk of starting it again, a recent ultra-thread on rand(Float32)
suggested that Float32 random number generation could be better. It was a good OP with a clear improvement that could be made, and in the resulting posts several working code versions were generated (though no consensus has been reached at the time of this post).
If the poster has an open-ended, philosophical, or opinionated question, then it is definitely best to have a very specific goal or discussion in mind before posting. Otherwise the discussion can and will become so unfocused that the OP is lost and no one benefits. Most frequently, the problematic posts are “calls to action” that if “Julia” or “the Julia Community” just did X or didn’t do Y, then all our problems would be solved! Or, if “Julia” puts more effort into technology Z then all programmers from Group Q would use it! These discussions are so open that there is almost no tangible benefit. These topics also very quickly become a place for people to post every problem they see with the language. Then each individual problem “needs” a reply or rebuttal, strong opinions abound, and finally no one is better off than they were before.
(edit, 2 days later: Instead of asking a very broad question, a better tact would be to narrow the question as much as possible. Replacing “How can we improve Julia’s popularity?” with something like “What tools/packages could improve the experience for [blank]?” Then, people may actually post useful information on a topic such as, available packages, missing tools, workflows (good or bad), etc. There is no one-size-fits-all solution for all groups, so narrowing the focus would be better at getting real imrpovement.)
As for replying to posts, a good way to start is to always assume the best intent. This goes hand-in-hand with remembering that the community’s goal is to helpful. Everyone has a different background and expertise, and that necessarily implies that everyone will have a different point of view AND THAT’S OKAY!
Also, for anyone posting language comparisons similar to “NumPy syntax is better because…” or “[blank] has a better AD scheme because…”, remember, this is a Julia forum. A vast majority of us (I assume) are here because we like the way Julia does things a lot better than other languages. That does not mean there are no issues, no bugs, and nothing can be improved. But it does mean that making blanket statements about another languages/packages superiority will result in an argument. Everyone’s opinion matters! So go ahead and say why some other language or feature is superior, just don’t expect or demand universal agreement.
All posts should also follow the community standards.
Finally, as a matter of personal taste, I like threads/posts where I can either help someone or learn something new. IMHO, that’s what Discourse should be about: learning and helping.