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
strip
go 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