Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

over 1000 packages starting with S #104451

Open
oxinabox opened this issue Apr 8, 2024 · 5 comments
Open

over 1000 packages starting with S #104451

oxinabox opened this issue Apr 8, 2024 · 5 comments

Comments

@oxinabox
Copy link
Contributor

oxinabox commented Apr 8, 2024

#78672 happened again. About 1 year later
We once again have over 1000 packages starting with S causing github not to display all folders

Options from #78672

  1. Move to 2 layers of folders: A/B/Abacus.jl
  2. Move to 2 letter prefixes: Ab/Abacus.jl
  3. Move all JLLs to own folder (done)

Either of these options would shunt the problem down the road for a few more years

Here is break down of the states for counting up packages by the first two letters of their names:
(ignoring cases where there are none)

julia> using DataStructures, StatsBase

julia> packages = sort([lowercase(x["name"]) for (_,x) in TOML.parsefile("Registry.toml")["packages"] if dirname(dirname(x["path"]))!="jll"]);

julia> summarystats(collect(values(counter(x[1:2] for x in packages))))
Summary Stats:
Length:         486
Missing Count:  0
Mean:           19.197531
Std. Deviation: 35.549154
Minimum:        1.000000
1st Quartile:   2.000000
Median:         4.000000
3rd Quartile:   19.000000
Maximum:        302.000000

julia> for (x,y) in counter(x[1:2] for x in packages)
           y>100 && println("$x=>$y")
       end
sp=>134
bi=>116
te=>106
mo=>127
di=>173
co=>302
se=>101
qu=>122
si=>167
pr=>111
ge=>150
re=>205
in=>156
mi=>101
gr=>103
st=>224
li=>125
po=>164
ma=>162
da=>103
pa=>128
tr=>110
fi=>108
me=>110
@oxinabox
Copy link
Contributor Author

oxinabox commented Apr 8, 2024

Mose pointed out that cargo does 2 layers of 2 letter prefixes, populated on registration.
(so combo of option 2)
https://github.com/rust-lang/crates.io-index

"If in doubt, copy Cargo" is always good advise for a package management I think

@tecosaur
Copy link
Contributor

tecosaur commented May 7, 2024

For the sake of still being able to still see the readme without excessive scrolling, what about A/BA/Abacus.jl?

@PallHaraldsson
Copy link
Contributor

PallHaraldsson commented May 8, 2024

what about A/BA/Abacus.jl?

Rust/Crate seems to plan on having way more packages then Julia with ab/ac/abacus... :-/ [and only support lower-case] But at least since we are changing I support as you proposed, forced to upper case, not A/ba/abacus, maybe even just A/B/Abacus enough(?), because while we have ASCIIbetical ordering A-Za-z, and Aa-Zz is better, I think we can't work against it except as you suggested:

https://github.com/JuliaRegistries/General/tree/master/jll/B

@DilumAluthge
Copy link
Member

I do think we need to do something here. I personally don't care which specific naming convention we pick, as long as the user is able to reach the README by scrolling down.

Does anyone feel strongly about the approach we should pick?

@fingolfin
Copy link
Contributor

If the concern is that the user should see the README when visiting the repository, then one could also add yet one more level at the top, and have a directory that contains all the A, B, etc. directories (or whatever they are called). The top then would only contain a handful of files. (And perhaps jll would stay at the top -- so then there would be a nice symmetry between that dir and the new dir with the "regular" packages).

I'd be happy with copying cargo's approach, it would put off further problems for a long time. Though I wonder what it would do in case of packages with names with less than four characters (I maintain GAP.jl...). Makes me wonder how many package names have 3 or less characters...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants