Resolve Majority Judgment polls and compute the rank of each proposal.
Hand-made builds for Windows and Linux/Mac are provided in the Assets of each Release.
Remember to enable the execution bit:
chmod u+x ./mj
Say you have a tally CSV like so:
, reject, poor, fair, good, very good, excellent
Pizza, 3, 2, 1, 4, 4, 2
Chips, 2, 3, 0, 4, 3, 4
Pasta, 4, 5, 1, 4, 0, 2
You can run
./mj example.csv
and get
You probably want to --sort the proposals by their rank as well:
./mj example.csv --sort
or use - to read from stdin:
cat example.csv | mj - --sort
You can also disable color with the flag --no-color:
./mj example.csv --no-color
#2 Pizza 000000000000011111111222233333333|333333334444444444444444455555555
#1 Chips 000000001111111111111333333333333|333344444444444445555555555555555
#3 Pasta 000000000000000001111111111111111|111122223333333333333333355555555
Legend: 0=reject 1=poor 2=fair 3=good 4=very good 5=excellent
Majority Judgment, to stay fair, requires tallies to be balanced ; all proposals must have received the same amount of judgments.
If your tally is not balanced, you may use a default judgment strategy:
mj example.csv --default 0
mj example.csv --default excellent
mj example.csv --default "très bien" --judges 42
mj example.csv --default majority
mj example.csv --normalize
The default balancing strategy is to replace missing votes with the "worst", most conservative vote, that is --default 0.
You can specify the format of the output:
./mj example.csv --format json > results.json
./mj example.csv --format csv > results.csv
./mj example.csv --format yml > results.yml
./mj example.csv --format svg > merit.svg
And even format gnuplot scripts that render charts:
./mj example.csv --sort --format gnuplot | gnuplot
You can specify the kind of chart you want:
./mj example.csv --format gnuplot --chart opinion | gnuplot
Available charts:
-
merit(default) -
opinion - …
- a LOT more would be possible with ballot data per participant
Copy the binary somewhere in your PATH.
Or don't, and use it from anywhere.
You can also grab the source and build it:
git clone https://github.com/MieuxVoter/majority-judgment-cli
Install golang.
Example:
- Ubuntu:
sudo snap install go --classic
Then go into this project directory and run:
go get
go run .
go run . example/example.csv --sort
go build -o mj
./mj
./mj example/example.csv --sort
We have a convenience script build.sh that will handle version embedding from git,
using the clever govvv.
But basically, it's:
go build -ldflags "-s -w" -o mj
Yields a mj binary of about 5 Mio.
They say we should not
stripgo builds.
You can run upx on the binary to reduce its size:
upx mj
GOOS=windows GOARCH=amd64 go build -ldflags "-s -w" -o mj.exe
Sometimes, Go builds for Windows are falsely detected by antiviral software.
go test -v