About JCP
Get Involved
Community Resources
Community News
FAQ
Contact Us
|
|
When the Java Community votes to elect members to serve on the Executive Committee (EC), there is a chance that more than one candidate will receive the same number of votes for the same seat: namely, a tie. This page describes the process that is in place for resolving ties in the EC Elections, as well as previous processes that were prepared for resolving ties throughout the history of the Java Community Process. Just as the JCP document is a living document that gets revised over time, the tiebreaker process has changed multiple times since the creation of the JCP Executive Committee. The current version of the process is labeled "2024," and the tiebreaker process used previously is labeled "2017."
2024 process | 2017 process
In the case of a tie in the Executive Committee Elections, the JCP Program Management Office will use the SHA-512 algorithm to determine the winner. In order for the drawing to be as random as possible, the PMO will take the following steps:
- Number assignment
On the Tuesday at 10 AM PST following the last day of the ballot, the PMO will assign a number (1, 2, 3, etc) to each of the tied candidates in alphabetical order (by last name for individuals). Then we will take the whole number (ignoring any factional part) of the closing value of the NASDAQ Composite Index (as shown on http://quotes.wsj.com/index/NASDAQ/historical-prices) for the last day of the ballot, and divide that value by the number of tied candidates in that category. We will then take the remainder of that division and add that to the originally assigned numbers. Any number greater than the number of ties will have the number of ties subtracted from those numbers.
Thus, the original + NASDAQ division remainder = new value.
For each candidate, if the new value is greater than X (where X is the number of tied candidates), then subtract X from the new value.
For example, if the closing value of the NASDAQ Composite Index is 14201 and there are three candidates tied, then we divide 14201 by 3, which gives us 4733 and a remainder of 2. Thus:
The candidate initially assigned number 1 would have position 3 (1 + 2 = 3).
The candidate initially assigned number 2 would have position 1 (2 + 2 = 4, 4 - 3 = 1).
The candidate initially assigned number 3 would have position 2 (3 + 2 = 5, 5 - 3 = 2).
- On 10 AM PST of the first day after the last day of the ballot that we have all of the "random" numbers (described below), the PMO will use the SHA-512 algorithm, using the commonly available sha512sum command.
First, the PMO would use three "random" (unknown in advance) whole number values as a single line input to sha512sum, with the three numbers determined as described below:
a) First, the closing value of the S&P 500 Index (truncated to the whole number) as shown on http://quotes.wsj.com/index/SPX/historical-prices for the Tuesday following the last day of the ballot
b) Second, the closing value of Dow Jones Industrial Average (truncated to the whole number) as shown on http://quotes.wsj.com/index/DJIA/historical-prices for the Tuesday following the last day of the ballot
c) Third, the final, winning score of the first basketball game played (started and completed) after the last day of the ballot by the NBA's Golden State Warriors, as shown on http://www.nba.com/scores#/
- The output (hashed result) of the sha512sum command will be a sequence of 132 characters. The first number that corresponds to a tied candidate that appears in the sequence will determine the winner. If more than one candidate is to be chosen as a winner, then the first numbers that correspond to the tied candidates that appear in the sequence will determine the winners.
Example: Megacorp, S-Mart, and Samuel Johnson are all tied, each receiving an equal number of votes for one seat in an EC election's final tally. Numbers are initially assigned to the candidates in alphabetic order, thus: Samuel Johnson (1), Megacorp (2), and S-Mart (3).
The NASDAQ Composite Index closed at 13,790.98 on the last day of the ballot.
This truncates to 13790; dividing 13790 by 3 yields 4,596 with a remainder of 2.
Thus the numbers assigned to the tied candidates become:
Samuel Johnson: 3 (1 + 2 = 3)
Megacorp: 1 (2 + 2 = 4, 4 - 3 = 1)
S-Mart: 2 (3 + 2 = 5, 5 - 3 = 2)
Our three numbers are:
- 4538 (the truncated SPX closing value from last day of the ballot)
- 35088 (the truncated DJIA closing value from the last day of the ballot)
- 123 (the winning score of the Golden State Warriors, who beat their opponents on the first game after the end of the ballot)
Therefore, at 10 AM PST on the day after that basketball game, those three numbers would be used to determine the winner. As is commonly available on Unix/Linux systems, sha512sum (or its algorithmic equivalent output) will be used with the input numbers to determine the outcome of the tiebreaker:
$ echo 4538 35088 123 | sha512sum
which gives the hashed result of:
cab44ec33db319adb6d25f8b2abf84d6c56f5ad4a2d905771dd9582f29cf72e2a65b229446b016d1ad61693bb1ab9ba6866d71bc95ade72127625c2c9106278d
If the input values are to be read from a file, the values must be on a single line, in the order specified, separated with a single space with no leading or trailing spaces, with the line ending with a single newline (\n) character (ASCII decimal value: 10) only. The above example and result can be used to compare and verify any specified usage.
In our example, we're looking for 1, 2, or 3. The number 3 appears first in the sequence, therefore Samuel Johnson would have won the seat.
|