Community admins could be able to define a "charter" (wrong word?) with the community's background, purpose, and code of conduct: what's allowed in top-level posts, what's allowed in comments, etc. This charter might actually just be the userinfo biography text.
For news I could say:
Only site admins can post top-level. Comments are expected to be on-topic and polite. This is not a forum for technical support with unrelated problems. Please do not fight with other users. If you want to voice opposition to something brought up in news, you must say more than 'this sucks'... you must explain your reasoning. Thank you!Then, we let communities admins set a flag on their community saying, "Only users who have read and agreed to the charter may post or comment."
Then, when somebody goes to comment for the first time and they haven't read the charter, they get a message: "Before replying in this community, the community admin has requested that you first read and obey the community charter. Please take a moment to read it before replying." Then the charter, and a "[ ] I've read this and understand" box at the bottom. After that they can actually reply.
Sure, newbies can still be annoying, but now they know they're being annoying because they know what the expectations are.
I bet a fair portion of newbies want to learn. I bet a lot of off-topic posters wouldn't post off-topic if they knew it was frowned upon.
This isn't a 100% fix, but it's a polite and easy measure which addresses the core problem with words instead of weapons.
I propose we try this out first, and bust out the weapons later if needed. One potential "weapon" we could use is an additional "this user violated the charter" checkbox when an admin deletes a comment. That could send an email to the user, saying they've been warned. The warning could even come with a temporary ban on the user. (sometimes deleting a comment is too light, and banning a user is too harsh....)
But first, thoughts on the overall charter definition and charter acknowledgement idea?