What is the best way to describe a commenting and voting process as we have it here on SO in UML? I need a clear way to describe that one user asks a question, multiple users submit answers and each user can upvote / downvote answers and the question as he likes.
I tried to model that using an activity diagram that starts on top, has to branches, one branch that goes to a node that says “comment”, the other one goes in a “voting” action. Each action then has a flow to itself (representing that the user can upvote / downvote and comment as often as he wants) and then both join in a final node.
I do not think that this is in any way comprehensible so I want to ask: what is the correct way to describe this using UML?
If you want to describe the rules (i.e. relationships) then a class diagram is probably more appropriate than an activity diagram. Here’s a pretty crude but nevertheless representative example:

Activity diagrams are appropriate for describing chained activities (processes). In this case however, the behaviour is pretty simple; a User can submit Posts (Question or Answer) and also vote on Posts.
The diagram captures the following rules (reading directly from the relationships):
Note the model is missing some important rules (e.g. can’t up/down vote your own posts). Also missing Comments (another subtype of Post) and other salient attributes (e.g. User name, Post text, etc.). Hopefully representative enough for purpose though.
hth.
PS: I took liberties with syntax for
Vote.type. It should really be defined as an enumeration, but for these purposes the way it’s shown is sufficient. Apologies to any lurking UML police 🙂