For these with high level of engagement you often get distinct subtrees of threads which have little to do with each other.
For the latter the linear structure is awful.
OTOH I'm not sure that cycles are even a huge problem.
> And your DAG ends up A'->B->A
A' would be in response to A.
Maybe it wouldn’t work for internet chats, but for discussing complex topics as a team? Yes!
Because when you read enough of the common things people debate, like whether dynamically typed languages are a very bad idea, or how we should address global warming, or stuff like that, you quickly realize there's only a few clusters of arguments which can probably be summarized in a few words each. If you know those clusters, it becomes increasingly hard to add anything different to the discussion... but most people have already heard each of the cluster arguments but did not accept it, which is why the topic remains unresolved - despite the fact that, if everyone agreed on the factual nature of each claim, there would be a mathematically optimal answer. I think the problem is not finding the answer, but accepting the arguments - which you can't get people to do in any case where some judgement is needed.
But I'm not sure you can get an automated map from comments to ideas, no matter what data structure you use...
(Perhaps you could edit in a circular quote of this... :)
How could it be improved? I say embrace the DAG nature of the beast and allow for selecting a specific set of parent nodes a comment is in reply to, and, importantly, make that set editable so when some other person comes in and replies to a comment with a topic that has already been discussed, you can link your earlier replay to that new parent without needing a “see my reply here” comment.