Our app's icon dates back to when shiny gradients were cool, so we asked users to design a new one, and about 20 different designs have been submitted.

A particular user submitted a very nice design, and several people asked her to make slight variations, so now she has 3 very similar variations of the same icon. If we do a simple "Choose the one your prefer" vote, then votes that would have gone to her concept will be divided by 3 (the 3 variations are evenly liked it seems), so her concept will loose, whereas without the variations her concept would probably win (see https://en.wikipedia.org/wiki/Independence_of_clones_criterion).

It is actually more complex than that: all submitters have reused ideas each other's ideas, so all icons share similarities. For instance, the icon(s) I talked about in the last paragraph have been forked and slightly edited and submitted as new candidates by other users.

It is great that everyone forks and that we get many variations, but this open source way of doing things means a simple voting protocol will not work.

QUESTION: What voting method would work the best in this case?
By "the best", I mean the method which will result in the choice that most voters are happy with.

Usage examples by actual open source projects (with the same goals) appreciated.

  • The fact that your app is open source is really irrelevant to the question of the best voting method, so I don't think this is on-topic. – curiousdannii Nov 17 '15 at 6:40
  • 1
    @curiousdannii: It is extremely relevant, no other projects face this forking problem. Actually, most voting methods that would answer this question have been invented by open source teams. Also have a look at en.wikipedia.org/wiki/Schulze_method#Users : This voting method is used almost exclusively by open source projects (and pirate party organizations). – Nicolas Raoul Nov 17 '15 at 6:44
  • 4
    I'm voting to close this question as off-topic because the open source status of your project is irrelevant to the question. – curiousdannii Dec 12 '15 at 22:58

Don't vote. Come to consensus informally through discussion, and leave the final decision to the maintainers.

Every voting mechanism has downsides. In general, it is impossible to have a voting system that meet the criteria:

  • If every voter prefers alternative X over alternative Y, then the group prefers X over Y.
  • If every voter's preference between X and Y remains unchanged, then the group's preference between X and Y will also remain unchanged (even if voters' preferences between other pairs like X and Z, Y and Z, or Z and W change).
  • There is no "dictator": no single voter possesses the power to always determine the group's preference.

(taken from Wikipedia)

This is known as Arrow's impossibility theorem.

Being open source doesn't mean being a democracy. It's up to the maintainer(s) to determine what's best for the project. Endless discussions about a logo usually isn't the best way to spend your resources/time, and avoiding that can be a good choice for a maintainer.

I would advice to either

  • Let the maintainers pick, possibly advised by a vote, preferably advised by a discussion.
  • If you insist on doing a vote, let the maintainers pick between the top 3 outcomes of some sort of vote. If you want to go with a consensus model, I'd go with approval voting or range voting.

All voting mechanisms are susceptible to strategic voting.

| improve this answer | |

Not the answer you're looking for? Browse other questions tagged or ask your own question.