majority-judgment-cli

command module
v0.0.0-...-93177db Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 18, 2026 License: Apache-2.0 Imports: 1 Imported by: 0

README

Majority Judgment CLI tool

MIT Release Build Status Code Quality Discord Chat

Rank proposals according to Majority Judgment, using a command-line interface.

Download

Automated builds for Windows and Linux/Mac are provided in the Assets of each Release.

[!TIP] You might need to enable the execution bit: chmod u+x ./mj

Usage

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

Merit profiles in ASCII art, with colors

You probably want to --sort the proposals by their rank as well:

./mj example.csv --sort

Merit profiles in ASCII art, with colors, and sorted

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
Balancing

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.

Formats

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

Linear merit profiles okf the proposals of a poll

You can specify the kind of chart you want:

./mj example.csv --format gnuplot --chart opinion | gnuplot

Opinion chart, the cumulative amounts of judgments per grade

Available charts:

  • merit (default)
  • opinion

Install

Copy the binary somewhere in your PATH, for example /usr/local/bin/.

Or don't, and use it from anywhere. You do you.

Build

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
make build
./mj
./mj example/example.csv --sort
Build distributables

We have a convenience Makefile that will handle version embedding from git, using the clever govvv.

make release

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 --ultra-brute mj
For Windows
GOOS=windows GOARCH=amd64 go build -ldflags "-s -w" -o mj.exe

Sometimes, Go builds for Windows are falsely detected by antiviral software.

Run tests

go test -v

Documentation

The Go Gopher

There is no documentation for this package.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL