Distributed polls on your personal website

Published on under the IndieWeb category.

An IndieWeb poll asking the question 'How much coffee do you drink in a day?'

In the Bonus Homebrew Website Club meeting last weekend, I was reminded of the IndieWeb social polls idea I had a while back. I cannot quite remember what reminded me of the idea but I mentioned it in the meeting anyway. My idea was to use webmentions to support social polling. By using Webmentions, I could accept votes to a poll from individual personal websites. My site, or perhaps a third-party service I create, would then aggregate those polls and produce a clean report showing the number and percentage of votes each option in the poll had earned.

I am fascinated by this idea because polling is one aspect of social networks the IndieWeb hasn’t explored to a great extent. I have used Instagram’s polling feature dozens of times (although I admit I am quite partial to the plain text question-answer box, too). The workflow I have in mind is:

  1. Create a poll on my site. That poll contains an arbitrary body of text (most likely phrased as a question) and a list of options identified by their name.
  2. Allow Webmentions to be sent to the page on my site.
  3. Have a service that: (i) validates all Webmentions; (ii) produces an up-to-date score of all of the votes for each option.

The main considerations that come to mind are:

  1. How do we preserve the integrity of votes? The service that handles polling should ensure that if someone has already sent a vote and sends another one for the same option, the second vote is not saved. If someone sends a vote for a different option to the one for which they have already voted, their option should be changed to reflect their new preference.
  2. How do we get the poll numbers on someone’s personal website? It feels arduous and redundant to ask every site owner who wants to run a poll to implement logic to tally votes and calculate the percentage of the vote for each option. I think a JavaScript helper function could be in order, or perhaps even some kind of embed should a third-party service implement this.

While I like the idea of a third-party service offering this logic, I am more interested in seeing how I could do it on my website.

An example prompt would be:

“What is your favourite microformat?”

Whose options would be:

- h-entry

- h-card

- h-feed

- Other

There is no need for there to be a limit to options. Because I own my site, I should be able to specify as many options to a poll as possible.

People could then send a Webmention that only contains their answer to the question. If an answer is provided that is not provided in the list of options, the vote would not be counted. If I sent a Webmention that said “h-entry” then I would have voted for “h-entry.”

There would need to be a mechanism to support the end of a poll, too. I could specify this on my site and say “At [specified date], this poll will be terminated and no more votes will be counted.” Perhaps there is a way to stop accepting webmentions on a page? If there is not – as such a method is not presently coming to my mind – then there would need to be some logic to ensure votes cannot be accepted forever. This is important for polls that are time-bound, where letting the poll continue for an arbitrary amount of time would skew the results.

I am interested in this idea both as an exploration of the social web but also so I can start asking poll questions on my own site. I don’t have any in mind right now but I would love to be able to ask one and get some vote responses.

Also posted on IndieNews.

Go Back to the Top