Tiki contains multiple ways to rate objects, all of which are plagued with inconsistencies and whose reliability grew to be doubtful. The lack of flexibility currently forces to rethink the way they should function.

The current rating systems include:

  • Polls
  • Comment and forum post user rating
  • Polls attached to wiki page can be used for user rating
  • Article rating by the author for reviews
  • Tracker fields


Inconsistencies include:

  • Revote sometimes allowed, sometimes not
  • Anonymous votes not always supported
  • Multiple locks to prevent revote from session to cookies to database lookup
  • Aggregate score storage varies from feature to feature
  • Revote sometimes add the vote, sometimes remove the previous


Limitations include:

  • Static options
    • 1, 2, 3, 4, 5 on comment forums
    • Configurable on trackers
    • 0, 0.5, 1.0, 1.5, ..., 9.5, 10.0 on articles
  • Aggregate score is only overall, cannot take into account time ranges, to asses the improvement of the quality of a wiki page for example
  • Recalculation done on vote, which may not scale well on larger sites


All of the above use a single table to store individual votes.

Some sites require more flexibility in how scores are aggregated. Sometimes an average is desired, sometimes a global sum is preferable. A site might prefer having simple +1 (Digg style) or +1/-1 (Thumbs up/down) depending on the type of content managed on the site.

So far:

  • Fixed most ratings, which was broken in trunk
  • Re-factored to use a smarty plugin
  • Added user ratings to articles and wiki, with configurable options


Upcoming:

  • De-couple voting and result aggregation
  • Support configurable aggregation methods per object type
  • Configurable voting options per object type
  • Allow multiple votings all the time and defer vote elimination to the aggregation phase
  • Configurable rating recalculation modes to support various workloads


Long term:

  • User-configurable calculation
  • Rating simulation to help calibrate aggregation

Note: This is a CitadelRock sponsored project.


Related links