Recently, buried in Front Page with Negative Rep.. we had a discussion regarding the concept of a Node Tension value display for any particular node.

The basic idea would be to illustrate the relative contention over a node rather than the tally of plus and minus votes. This would be a measure of how controversial the node is rather than any absolute measure of its generated approbration or opprobrium. This value would be visible before actually voting on the node.

I provided the following illustration:

++-- Total vote tension

In response, giulienk provided an interesting attempt at an empirical formulation of the idea. I played with it, but it was not quite satisfactory, especially since it seemed coarse-grained at lower magnitudes.

The core issue is capturing the magnitude of opposing votes. 100 positive votes and 0 negative represents no contention. 5 positive and 5 negative represents some, but not huge contention. So I employed Occam's Razor on the formulation and decided:

  1. All non-opposed votes have no effect.
  2. The remaining delta serves as an effective indicator of tension
  3. Further qualification (low, med, high, etc) might be unnecessary

Formula:  $t = min($plus, $minus) * 2

Recasting the original example, this would yield:

++-- Total vote tension

This accurately captures the magnitude of contention without revealing, beyond bare necessity, the actual votes cast.


  1. Is this something other monks would like to see on pre-voted nodes, perhaps as an option? What about while considering a node?
  2. If interested, what better ideas (if any) can we come up with for representing tension?
Thank you for your time,

Replies are listed 'Best First'.
(tye)Re: Node Tension
by tye (Sage) on May 24, 2002 at 08:35 UTC

    A couple of weeks back I talked to a few people about the idea of showing the total number of votes cast if the number of downvotes was, say, 5 or more. This way we don't get a huge increase in people complaining about single downvotes when their node reputation is positive (where they likely wouldn't notice the single downvote if the total number of votes wasn't displayed). But if your node is getting conflicting votes, then you can watch the tug of war. Also, if your node has a negative reputation, you will quickly be able to see that a few upvotes are coming in as well.

    To deal with "vote inflation", the value of 5 would actually be computed as 1+int($NORM/2) where $NORM is taken from Voting/Experience System. Note that $NORM is recomputed each day (and tends to slowly creep up) so, after a while, you might no longer be able to see the total votes cast on some "old" node that you used to be able to see the total for.

            - tye (but my friends call me "Tye")
      As someone who seems to naturally create tension, I would love to see this. For me that main benefit is for the author of the node. A 23 rep node with 23+/0- is a lot different than one with 54+/31-.
Re: Node Tension
by Biker (Priest) on May 24, 2002 at 08:13 UTC

    I think the idea is great. I also agree it should be an option in the user profile.

    Furthermore, I'd suggest that the default be "off", i.e. do not show rep. details. The reason for this is that a novice at the Monastery already has so much new stuff to discover. When the novice starts to find his/her way around here s/he will become more curious and start looking for personal configuration. It will then be a new discovery to find the detailed rep. information.

    It should also be verified if this would have a negative impact on the database performance, in which case I would tend to say it's not worth it. (Performance is currently acceptable but not brilliant.)

    Everything went worng, just as foreseen.

Re: Node Tension
by jepri (Parson) on May 24, 2002 at 08:14 UTC
    I really like the idea you have come up with. I was always curious about how many people had voted one way or the other - when you are the nodes poster you sometimes get an idea - your XP goes up and down.

    I would be interested to see the 'tension' on a node after I voted. I doubt we will see the tension being displayed before your vote is cast. The same arguments against displaying the reputation work just as well against displaying any information regarding the nodes tension.

    I didn't believe in evil until I dated it.

Say no to John Snow ;o)
by frankus (Priest) on May 24, 2002 at 15:30 UTC
    "Oh yeah, ooh, ah, that's how it always starts, but then later there's running, then screaming".

    Originally I liked this idea, but viewing votes for a post is often irrelevant.
    It is the replies that make people think hard, and possibly vote.

    I rarely down-vote a node, instead I upvote reasoned replies.
    This is where the real tension lies.
    The difference, in votes, between a node and it's children seems a better benchmark of interesting nodes.
    For me, the statistical wobble of one node doesn't offer insight into the consensus of opinion, whilst it is amusing.
    Part of that amusement is seeing people react superficially to the wording of a post.

    It takes effort to reply, or view replies, more so than clicking a check box in one of the main areas..


    Brother Frankus.


      That, my friend, is an excellent thought. Measuring tension by thread rather than by node would indeed be more interesting to me than a single node. Any thoughts on how to represent thread tension concisely? I'll have to mull on that one for a while.


Re: Node Tension
by mojotoad (Monsignor) on May 24, 2002 at 15:13 UTC
    A few observations, clarifications, and a new idea:

    As people have pointed out, a tension indicator would not have to be visible pre-vote, it could just as well be post-vote. I was split on this, either way would be satisfactory to me since I'd likely be voting on an interesting node to begin with.

    The default in the user profile could be off, I agree. This makes sense in light of bombarding newcomers with strange data.

    Another possibility: It occurred to me last night that the number of highly contentious nodes might not be very large. Perhaps a better solution would be a "Most Contentious Nodes of the day/week/month/year" along the lines of Best Nodes and Worst Nodes? I know I'd go visit the thing.


      This (most contentious) is much more reasonable than the larger proposal. It also would not add to to server strain/bloat in the same way. ++

      perl -pew "s/\b;([mnst])/'$1/g"

Re: Node Tension
by mrbbking (Hermit) on May 24, 2002 at 12:40 UTC
    I agree that the 'tension' indicator would be a good idea if it were visible before you cast your vote. And I prefer your simplified method of deriving it. But, for nodes where you can see the reputation (nodes you wrote, or nodes you've voted on) why not just show the total upvotes and total downvotes? What better 'tension' indicator can there be?

    As for people getting all worried that the votes on their nodes have not all been positive, wouldn't showing the total votes cast help to minimize the worry?

    I would bet that even some of the Best Nodes got some downvotes. Surely, someone clicked off a -- on some of those. If not on the Best Nodes of All Time nodes, certainly on the Best Nodes of This Week nodes...

    Seeing that 'it happens to everyone' might make the occasional downvote less painful for those whose self-image is tied too closely to their current Perlmonks XP value.

      This occurred to me as well, and as rinceWind pointed out, there already exists an option in Everything to display total number of up and down votes.

      In past discussions around here, there seems to be considerable resistance to this notion, generally expressed along the lines of wishing to avoid "sheep voting" depending on where most votes are falling. I happen to agree that the actual number of votes aren't that important and that "sheep voting" would be a real phenomenon. However, I am still interested in watching a big tug-of-war.


Re: Node Tension - Expanded discussion
by mattr (Curate) on May 26, 2002 at 13:07 UTC
    ++frankus. Modelling an object in space is not useful, compared to modelling a social phenomenon, which is what we've got here at PM.

    You can keep track of the most controversial posters but the important part is the group interaction, which you wish to quantify in meaningful terms. Here are some things that could be measured:

    - number of replies (already measured) -- incidentally the permutation question says in the question header bar on the front page "1 reply" when actually there are 3 replies, of which replies 2 and 3 are nested under the first. Maybe we should fix.
    - number of unique participants
    - number and depth of subthreads (possibly useful but subverted by the uncollapsed display of threads which tends to cap subthread length)
    - votes for and against poster (what you have discussed)
    - votes for and against responders
    - number of times poster has reappeared, and votes for/against his responses and the subthreads (would focus attention on poster)
    - number of links in thread (amount of research generated)
    - any of these quantities divided by number of replies in thread
    - number of explanation points in thread
    - number of capitalized letters in thread
    - amount of html tags and length of responses, to show how much work people have put into answering
    - minus votes to poster compared to his XP
    - standard deviation for these things
    - number of pluses times number of minuses voted by each monk
    - number of "++username" comments
    - number of references to the thread's nodes, a la google
    - and others

    So you might be able to quantify how loud a discussion is, how noisy or reasoned, it might be, the amount and degree of belligerency in its replies, and whether (thanks to frankus' observation the poster has "seen the light" that is eventually succeeded in appeasing the minus posters. You can measure the average number of times the same monk responds, which could measure how dedicated monks are to resolution of post.

    Since most people who read a thread will already understand these things, consider first what the purpose of these measurements may be:

    - novelty
    - historical purposes
    - prizes
    - identifying monks who "think like you", maybe to let you know when one of these people has posted a thread.
    - feedback to community about how riled up people get
    - feedback to poster about how riled up they get people
    - to try and get more people involved, i.e. to be fair to poster, or to get more eyes on a problem
    - to save unsuspecting monks from unwanted stress, e.g. a few words in the frontpaged question header bar, or at top of thread, saying "Nodereaper: This discussion seems quite tense.." might be welcomed by some.
    - to make recommendations to admins.
    - to add info to a community brain. For example tagging with keywords might enable links or comments to be added to a list of nominations for a specious award or for addition to a community-maintained list of technical solutions.
    - To reduce the severity of personal attacks.
    - To enable searching of nodes or monks by a richer set of parameters.
    - To grade monks about how thoughtful or rambunctious they might be. Maybe integrated over time, find out how PM contributes to growth of developers as individuals (a long shot).
    - Cluster analysis of monks by activity profile. Who does more minus votes, who is persistent, who votes up responses, who is very thoughtful and yet has low XP - watch them!
    - To show how thread attitude has changed over time, i.e. maybe monks with high blood pressure may find it is possible to come back later.
    - To mark replies with colors based on how belligerent they may be, so it is easy to scroll past.
    - To reduce the number of "dumb questions" / fights that have to be posted / break out in this community before we grow out of it. We could use some more community memory and an easy way to pass it on to newbies. Right now we depend on a small number of conscientious people with good memories posting a link to a past thread they somehow remembered using their own half-biological memory.
    - To rank PM against other sites that have voting.
    - To experiment with how far we can push social dynamics technology on the web.
    - For fun. Maybe an analogue of tachometer and odometer could describe how active the site is. Maybe we could construct a new map of monks with most rambunctious ones situated at equator, newbies in orbit, etc. (!)
    - Just make an api to the info and let monks figure out things to do with it. No whys now.
    - To determine how much voting and volatile discussions affect server performance (would not have to be done in realitime)
    - To measure other things than can be measured by ++/--, for example add a pulldown menu to the vote! area that says things like "should be immortalized in PM", "elegant code", "add to developer resource list", etc. and then measure those votes. You will get a more complex vector (to use the physics metaphor) in multiple dimensions. You can sort monks by acceleration into different cognitive realms! (sounds good anyway).
    - To decide when to keep a node on the frontpage even if it is inexorably sliding off the bottom.
    - To accompany a button which lets users keep a node on their own frontpage or favorites list for a while so they can participate in a discussion that lasts more than a couple days. This as always I think would be most benefit to PM.

    I think this discussion is a step in the right direction, which to me is considering how to enrich the PM experience both in terms of basic functionality and in terms of mining existing data for useful derived products. Of course empirical calibration may be needed. So calculating things like tension or thoughtfulness is great, adding more dimensions to feedback beyond ++/-- is great. Some benefits/drawbacks may be serendipitous, i.e. we can't imagine them now. If anything I'd like to encourage lots of experimentation, and not worry about server performance until it starts looking scary. These enhancements may have a very positive effect, or may be implementable asynchronously or on other servers like thepen.

    One thing I might suggest is putting a bunch of these calculations into the frontpaged thread title bar, so we can start to see aggregative (network) effects and talk about which measurements seem most useful. In Master Yoda's words, "There is no 'try'!"

    p.s. thank you for removing the black hole you had on my Internet cafe's provider! As of today my wishlist includes the above points and no longer an alternate to cpan:// . Amen!
      For having posted in 2002, there was a lot of 2.0 in that. :)


Re: Node Tension
by educated_foo (Vicar) on May 24, 2002 at 15:18 UTC
    Your formula is certainly much simpler than giulienk's, but I think it may be too simple. In particular, I don't think a +5/-5 node has the same amount of tension as a +95/-5 node. I'd say that a normalized version of your "tension" would be an improvement:
    $t = abs($plus - $minus)/($plus + $minus)
    Update: Hossman is, of course, right. This should be inverted, like so:
    $real_t = 1 - $t
    I guess $t is a measure of blandness or something...
      Here's how I was picturing tension: Imagine an object floating free in space. Plus and minus votes represent the magnitude of force pulling on the object in opposite directions. Overwhelming agreement in one direction or the other will merely cause the object to accelerate through space in that direction, rather than threatening to pull the object apart. In this model, +95/-5 would have the same tension as a +5/-5 node, but would be moving much more swiftly through space.

      Having said that, I agree that there's something that might be valuable to capture in the difference between the two examples. Perhaps tension isn't the right word?



        Everything went worng, just as foreseen.

        I get pleasing results with this formula:
        sub tension { my ($hi, $lo) = @_; $lo or return 0; 2 * log($lo)/log($hi + .1); }
        where $hi is the higher number of votes (whichever direction) and $lo is the number of votes in the other direction. Any result above 1 represents an interesting amount of tension, IMO. Here's a table of results:
        Hi #Lo #Tension
        3 31.9420
        8 31.0504
        8 81.9881
        20 30.7322
        20 81.3860
        50 30.5614
        50 81.0626
        90 30.4882
        90 80.9240

        Caution: Contents may have been coded under pressure.
      $t = abs($plus - $minus)/($plus + $minus)

      Wouldn't that make every node with an equal number of ++/-- votes have a tension of 0? wouldn't that defeat the purpose of "tension" ?

Re: Node Tension
by tjh (Curate) on May 24, 2002 at 17:18 UTC
    After having seen discussions about XP, displaying votes, tension indicators and other similar threads, with all the give and take, I've ended up ambivalent.

    One of the good things about PM is the good-natured atmosphere and general positiveness about posting both excellent, and stooopid, questions. It's a relatively safe place for getting answers, tutoring, some acculturation (or is that occulturation :), news, reviews, peer review and more.

    I have wondered if displaying votes prior to voting is a bad thing - and I think it is (the lemming effect).

    Would displaying the downvotes post-voting be a bad thing? Possibly, in that it might have an inhibiting effect on new arrivals which is a bad thing. BUU's admirable tenaciousness notwithstanding :), I can see others reacting badly to seeing the negative side of their posts.

    However, to prevent overly complex solutions from evolving, maybe it's the simplest, best thing to do to just stay basic and not introduce too many things that need CB interpretation ('Hey y'all, what's this tension stuff?'). However, some of the suggestions are really interesting.

    Could it be adequate to show the #pos, #neg, #ttl, and let it go at that? Could the tension rating be as simple as the percentage of positive votes/ttl? (yeah, that means light voted nodes get punished with a possible larger % of neg votes...)

    It's also interesting to me that we downgrade the actual value of a monk's XP (and rightly so), we sure pay a lot of attention to threads like this! lol. The voting/experience system is an intriguing feature, and like good art, allows individual interpretations.

    Like it or not, it seems that it's certainly part of the fabric of features (including our good fortune of having such able monks) that keep PM interesting.


Re: Node Tension
by sfink (Deacon) on May 24, 2002 at 20:12 UTC
    Why multiply by two? It just means odd values will never be used.

    I have a counterproposal for the formula: $t = int(rand(100)).

    • On average, it seems about right.
    • Low computational overhead
    • Nodes with few votes aren't given artificially inflated values
    • Provably produces the precisely correct answer, at least once in a while. This cannot be said of the original formula.
    • Even if this somehow induces lemming voting, half the lemmings should fall off each side of the cliff
    • Runs no risk of influencing monks' interpretation of votes. After all, monks' current behavior has made the site what it is today; what if this is the butterfly that carries the slashdot mentality between its flapping wings?

    There is the problem that the value flips around a lot, and people might not take it seriously. So how about:

    • $t[0] = rand(100)
    • $t[$i+1] = 0.9 * $t[$i] + 0.1 * rand(100)
    • The index $i is age in days, age in hours, number of votes, times viewed, or something similar.
    • The computation is hidden. Instead, it is described as "the tension takes as input the node upvotes, downvotes, number of responses, and the votes on the responses." Which is true, it just doesn't look at any of them.
Re: Node Tension
by belg4mit (Prior) on May 24, 2002 at 16:09 UTC
    "Never has so little been measured so much" -- PHB


    So errm I don't think it's such a great idea, or most of the counter proposals either (such as parent vs. children). Just because it's a computer and will blindly accept your instructions and calculate all sorts of wacky statistics doesn't really mean they'll be useful. And I had for sometime considered a display of ++/Total votes, and more or less thought it was a good idea (but not good enough to propose, no convincing arguments). But not until I saw this thread did I realize really how a generally futile/needless thing it is. Helas words fail me for a convincing argument for this as well.

    perl -pew "s/\b;([mnst])/'$1/g"

Re: Node Tension
by mr_mischief (Monsignor) on May 17, 2008 at 10:16 UTC
    After I vote, I see up votes and down votes (except for the "no significant downvotes" business). I sometimes vote up well-thought nodes with which I wholly disagree and respond with my reasons. I sometimes down vote poorly and rudely written nodes despite agreeing with their main point.

    Taken as a whole, I think contention of the ideas in the node is poorly measured by votes. A contentious attitude or heated words might lead to the votes without any useful ideas being debated. If you measure it, someone's going to want the highest score in it, too. Fishing for hot responses is what trolls do. Don't feed the trolls.

    If you want a decent measure of active discussion, count the tree of descendants of a node. That should be simple enough and informs the reader just as much about the node. There are a few long branches of PM that arise from polls, reminiscent meditations, and such. Most root nodes, though, involve more discussion as there are more responses and more levels of responses to responses.

    BTW, I voted ++ on your node because I think you're on to something and I appreciate that you're thinking of how to help the site. This is one of those, though, that I voted ++ for yet disagree with your initial conclusion.