FEP-9967: Polls

So finally. After releasing my WordPress Polls for ActivityPub plugin (link will be working in the next days, Source Code) I find some time.

  • I would like to see a general notice, maybe in the summary, that this FEP is only covering text based polls and is not intending to cover other things, like image polls, or should it?
  • Maybe the history section could add a conclusion sentence what this FEP is aiming to do: writing guides about how to implement polls so that we have a common denominator about the way polls are currently handled widely in the Fediverse due to early implementations by Mastodon? (… okey, this sentence was bad).
  • Voters count: I would argue that this should be change to a MUST (the current ‘can’ is ambiguous anyway), at least for multiple choice polls, because otherwise remote applications have no way of showing correct percentages of the results.
  • Receiving a vote: What I see missing is a validation/verification that an actor has not voted already. Or is the argument: a remote server that can construct arbitrary id’s could also construct arbitrary actors? Another open question for me is: what is about receiving deletes or updates on votes? I think a short guidance would be helpful for new implementers. Should we ignore, Delete or Updates on “vote replies”? Should we indicate that we do?
  • Updating updated: I am unsure, I would maybe love to have both information: when has either the question/poll-type/option/or start and endTime been last updated, and when has the last vote been received. For me the former is the more important information. What does Mastodon actually do?
  • Publishing results I advice to remote the MUST here. I even ask myself whether we should remove sending updates on incoming votes completely. Cause every remote application that received a vote can define it’s own refresh cycles.
  • Closing a poll: so no boolean MUST be used on closed? Or if endTime is present and closed is true, should the endTime be able to serve as a “closed time”? I think this could be written more precisely, I encourage not to be afraid to just use a MUST here because it’s something easy to implement and I guess will never be a blocking issue for someone to implement it.
  • Editing Options: I would be more precise: Post-Hum ignore of all previous receive vote replies, emptying all replies collection of all anyOf or oneOf options and setting the votersCount to 0.
  • Question object – updated property: Why not make this a MUST? I see no reason not to.
  • Re-opening closed polls: This is something I would like to have guidance. Should a poll object keep track when being closed and re-opened again? Idea: if poll votes are not reset poll MUST keep the information when the poll was open and when not. Or say once a poll has been closed. Re-Opening causes the votes to reset?

Addition 2026-06-26:

  • Re-opening closed polls: When votes are reset should be sent Reject or Undo activities to already accepted votes? Or should we have a specific votesReset action or indicaiton in the updated object (so that remote server know, that their actors might vote again?!).
1 Like