blog

12020-05-11

SEAN K.H. LIAO

go module survey

Biases:

Process:

Download and run go/scanner.Scan on all available versions took approx 12h on Intel(R) Xeon(R) CPU E3-1240L v5 @ 2.10GHz (4 core / 8 hyperthread) with 16GB ram (max ~10GB used).

basic

Ever wondered how those versions are distributed?

availability

by versions

What kind of parsing errors are there?

time

When do people pull in new code through the proxy?

hosting

domains

What domains do modules live under?

vcs extension

do people use vanity domains or .$vcs extension for their repos?

latest

the following stats only count the latest version of every module

modfile

go directive

apparently documentation isn't good enough and people try to use invalid versions

require directive

who requires so many things?

todo: split by direct / indirect

replace directive

todo: split by replace type

exclude directive

the exclude directive feels excluded

code scan

Since go.mod doesn't include all imports and I neglected to record the imports per package / file I don't think I can do tokens - imports graph (and find the left-pad equivalent in go)

tokens per module

10000 tokens is not too much, not too little

(the labels should be between the previous label and x)

token popularity

ever wondered which operator was the most popular?

identifiers per module

how many different identifiers do you need? a-z 26?

identifier popularity

err??????

i have some doubts about this since who uses TRUE, FALSE,iNdEx, dAtA, autorest

ans: iNdEx and dAtA are from generated code, specifically from github.com/gogo/protobuf