How This Works
To make a simple rating of a given page on Issuepedia, place this code anywhere in your userspace: [[pagename::rating]]
I have to work out how to do more complex ratings; it will probably involve user-created subpages.
I also need to write the code to aggregate the votes, since I don't think SMW's existing functionality is smart enough to do this properly.
For now, I'm putting all my votes on this page and dividing it up into sections; later, I may split them into subpages.
More Technical Explanation
Any simple vote is a triad: [voter] rates [thing] with [value]. SMW lets you specify a key and a value for a given page, so we have to use key and page to handle [voter] and [thing]. Since users are voters, and each user already has a page, the obvious solution is to let users place votes on their userpage -- or on any page within their userspace, to allow for better organization of votes.
More complex votes are a tetrad: [voter] rates [attribute] of [thing] with [value]. Examples:
- Attributes that might apply to a blog post include whether the logic makes sense, how well written it is, and whether you agree with it
- Attributes that might apply to a person include how highly you rate their integrity, whether you know them in person, and how happy you'd be if they won an election
While it is possible to represent tetrads in SMW through the use of subpages, e.g. [[thing/attribute::value]] on a user's page, it is difficult to do this in a way that is user-friendly and easily maintainable.
It is at this point that a specialized syntax and interface for voting becomes clearly necessary, although we can use standard SMW as a support tool.
- [[page type::vote question]] tags a page as a question in need of resolution
- Questions should show up in various lists, which can be categorized, filtered, sorted, etc. based on other tags and meta-information on the question's page.
- [[list as::text]] indicates how the question should be listed, overriding the page's title
- [[page type::vote answer]][[responds to::question page]] tags a page as a possible answer to the question
- [[list as::text]] indicates how the answer should be listed, overriding the page's title
- Possible answers to a given question can be displayed in a list on the question's page, for users to vote on
- [[page type::vote attribute]] tags a page as describing an attribute for voting
- [[want attribute::attribute page]] (on a question page) lets the creator of a question suggest one or more attributes that should be voted on by default
- <vote thing=answer attr=attribute page value=value> represents a hard-coded tetrad vote