Threshold Voting Workshops in Action


While maintaining our development infrastructure, we regularly have to deal with a plethora of feature and plugin wishes. Because balancing all these different wishes, requirements and purposes is so time-consuming, we considered how we might increase our performance in this area. We designed and tested a method for this in the context of a Jenkins upgrade. We then invested some more time to create a sample HTML5 presentation that you may like to use yourself to try out threshold voting workshops in action.

The following describes how you can integrate a timer and several voting sections in your next presentation. The latter will make your presentation a lot more interactive than usual. As you present each item, the audience makes a decision about the presented item right then and there. An item might be a requirement, a feature, a plugin, a method, a tool, or similar. Alternatively, you can use this style of presentation to get immediate feedback from your audience about how useful they find particular parts of your presentation. This would help you to select and arrange the information in your presentation more appropriately the next time. In both usage variants, the votes generate supporting information if you relate them to a threshold. If you use the Threshold Voting Approach in usage variant A “transparent, democratic group decision process support” (workshop style), you will probably define the thresholds together with the voters, i.e., the audience, right at the beginning of your workshop. Type B (presentation style) does not necessarily require a threshold determination in advance, because it may be useful for deriving presentations of different sizes, e.g. for a presentation time of 15 minutes you would just include the parts with the best feedback, while a 30-minute-presentation may additionally contain parts that got less positive feedback in terms of their usefulness.

Basic Workflow

The basic workflow of a Threshold Voting Workshop or Threshold Voting Presentation consists of six main steps:

  1. prepare your slides and decide which voting options you are going to offer (optionally: determine the maximum time you would like to spend on each item)
  2. define the thresholds according to the voting options on offer and the objectives of the workshop/presentation
  3. present each item (optionally: during the defined timespan) and let the audience vote
  4. generate the results as part of your final summary
  5. derive decisions from the vote results
  6. ensure that the audience agrees to the derived, bundled decisions


Obviously, you’re going to need tooling support to be able to generate results at the time of presentation (if you present more than two items and have more than two voters). To get things working, you may want to use an HTML-presentation prototype, which we have developed. Therefore you need to know a bit of HTML, CSS, JavaScript and PHP, and how to set up and use a webserver with PHP-support. We used CoffeeScript, JavaScript and PHP to create our template. You need to set up a web server and install CoffeeScript on your own. The following description does not cover that because it may differ according to your individual preferences, your operating system, etc. If you know a bit more about the named technologies you may also modify the layout, the slide size, the slide effects and the voting options on offer according to your needs. But let’s start with the template and a simple example use case first.

Of course, you could also try to realize something similar with another technology combination. But it’s probably harder to do that with PowerPoint, Prezi or other fancy presentation tools.

Get the template project working on your machine

First of all, clone the git-repository that contains the template project into your www-directory: git clone

Run the command “coffee -c” inside the $PROJECT_HOME/js directory. It creates an impress.js-variant that supports slide addition on the fly through browser interactions. This is required to be able to present the accumulated results in an appropriate view format.

Ensure that the standard directories named in $PROJECT_HOME/php// are createable and writeable by the user that runs the web server, or modify the file paths in the * files according to your system environment. By default, everything is written to “/opt/templateProject”. Thus, you probably have to modify the paths if you work with Windows or Mac.

Open your web browser, type http://localhost/pr/impress-js-articles-extensions in the address bar, and press Enter. Boom! You now have the template project up and running. Why do you see Jenkins Plugins as the title? Well, that’s the use case on which we first applied the Threshold Voting Workshop concept.

The timer feature

The timer feature is usually controlled by the speaker, thus his/her slide changes cause the defined timers to count down.

To control the timer type “saheba” in the token field on the title slide and then switch to an item that is time limited. You will see the timer counting down:

To stop the timers counting down, just type anything else in the token field. You can change the token word by adding the desired token in the file “/opt/templateProject/token-data/leadToken.txt”. If you want to place the token file somewhere else (e.g. if you use Windows as your operating system) you have to modify the path in “$PROJECT_HOME/php/timer/” (property to change: $leadTokenFromFile).

The voting feature

Before you can really vote (well, you can try of course, but you will get a red voting section in response), you need to define which users can do that. The easiest way is to write the auth.conf. By default, the auth.conf is expected to be placed at “/opt/templateProject/login-data/auth.conf”. If you want to change it, feel free to modify “$PROJECT_HOME/php/auth/”.

An example auth.conf may look like this (the number is the timestamp stating when the password was set, if you let users set their password with their first vote):

saheba passwd 125634
user1 notyetset notyetset
user2 passwd 12324536

There are two ways to set user passwords: by the speaker in advance, or by the users themselves with their first vote. The latter happens, for example, in the case of user1’s first vote. The password user1 provides with his/her first vote will be the password for all of his/her votes. If the first vote was successful, the voting section turns green. A yellow background indicates that the user has changed his/her mind and updated his/her vote. A red box is either the result of a wrong password or something else.

The voting report feature

You can check the results of the vote by using the voting report feature. Just click on generate (“Generieren”) on the result summary slide (“Ergebnisse”).

Going deeper

The template project ships with an initAuth module that allows you to generate an auth.conf through an LDAP connection to an Active Directory. Lucky you, if you can

  1. fill the file ldap.conf placed under “/opt/templateProject/ldap-data/” with appropriate connection settings (please note that the key-value pairs inside the file must be separated by “=>” instead of the standard “=” because ldap connection settings contain simple “=”). The configuration parameters are: ldap-user, ldap-pass, ldap-url, ldap-basedn and ldap-filter. You are welcome to enhance the module with more settings to be interpreted, if you need more to connect to your authorization tool.
  2. create multiple voting accounts by just calling http://localhost/pr/impress-js-articles-extensions/php/initAuth/initAuth_LDAP_AD.php

If you are know more than just the basics of PHP and JavaScript, you may want to change the available voting options. For this purpose, go ahead and modify votereport.js, vote.js and the php/vote-module as well as the php/votereport-module.

In Action: assembling the set of Jenkins plugins to test and install

We walked through a set of about 50 plugins that we needed to discuss during our Jenkins upgrade (30 had been defined as must-haves due to administrative or basic feature-support requirements such as SVN and git connections). It took us about 60 minutes, including the introduction to the threshold voting workshop concept. This was the fastest that we have ever covered and decided upon such a large amount of features. However, it should be noted that we kept the election open for several days just in case anyone wanted to change their votes. All in all, this was a very good approach for us to allow a lot of end users to participate in the process of a system upgrade.

Don’t believe it?

Then contact us for a booking, and we help you to prepare a fast, effective, participative workshop according to your needs.

One thought on “Threshold Voting Workshops in Action

Comments are closed.