We just hit 7000 packages (it’s IsotopicCalc.jl) and 49 more waiting in the package pipeline. Would be good to get relevant sites updated, Julialang.org, JuliaComputing.com; and Modulecounts.com which shows a blank line plus “0/day”.
Package 8000 is:
A 1000 new packages from one JuliaCon to the next is great!
one intriguing registered recently:
It would be interesting to have a bit of stats regarding these 8000 packages. How many are still maintained? How many are compatible with the last Julia version? How many are working on all platforms? How many of them are really used?..etc
Personally, I 'd rather have 10 high quality packages than 1000 poor quality packages hence the reason of having a bit of stats on the julia package ecosystem would be interesting…
I agree with this sentiment, and this idea was mentioned earlier in this thread. But how would be such a thing?
Some interesting facts I would like to see about each package would be the following:
Metric: Quantity
Active: Time of latest commit
It would be pretty cool to see a histogram of all the packages with respect to their time of latest commit. I’d probably expect a flipped bell curve. Not sure tho.
Impact: Number of packages that depend on this package (caveat this discounts user facing packages)
Reliance: Number of packages it depends on
If we are looking at the outneighbors of a package might as well look at the inneighbors, seems like an interesting metric (maybe not particulary useful tho)
idkwhattocallthis: Ratio of open PRs to open Issues (like a contribution to complain ratio?) I think this ratio can provide a bit of information on “activity” as well
Popularity: Stars on Github (this is to account for mature, but inactive packages like Calculus.jl, and also accounts for user facing packages. End users are more likely to star the direct package they are using than a lower level dependency.)
So I think overall the metric usefulness can be a function of impact and popularity
The metric activity could be a function of active and the “PR to issue” ratio.
And what will happen when we reach the 500.000 packages? Will they all still be in regestries\General
? Now General.tar.gz
~4.8 MB but the dir expands to ~28.800 files and 190 MB. Still manageable but is this going to be multipliable by 10, by 100?
the good news is that the tarball doesn’t need to be expanded, and at long as Julia doesn’t grow significantly faster than Moore’s law, we’ll be fine.
But it is expanded.
Not by default from Julia 1.7. If you are using Julia 1.7 or later and have an unpacked registry and don’t want that, just remove it, e.g. with
using Pkg
Pkg.Registry.rm("General")
Yes, I have Julia 1.7 (and aboves). But what that did was to remove the tar ball and left the directory, which is marked with an icon by turtoisegit meaning that is being version controlled.
Well, do Registry.rm
twice in that case. There are three possible registry representations; git clone, unpacked tarball, and tarball. Apparently you had both of the first two at once.
OK, running it twice deleted everything but a posterior ] up
brought back that tarball only. Let’s see how it behaves.
Thanks.
For some more numerology, Julia’s number of GitHub stars hit 40 K today. It was displayed as 39.9 K yesterday, but now it’s at 39.95 K and gets rounded up to 40 K in the display.
Julia has now over 900 packages registered, and package nr. 9000 is @ChrisRackauckas’
It (like other similar packages) seems intriguing.I THINK it does actually have nothing to do with SciML, just put under that umbrella, despite the ODEProblem example.
I don’t know much Ruby, but I still posted such code in my comment there to get the current count (using wget), can anyone help make a PR there (and maybe more idiomatic Ruby code, without wget…):
https://github.com/edebill/modulecounts/issues/58#issuecomment-1523455679
We’re up to 48% the size of the CRAN (R) package system.
We’re likely the 14th largest package ecosystem of any language, and not like we can’t use packages from others, e.g. Python.
It would be great to get modulecounts.com working again, some time ago we were fastest growing package system (according to Reddit thread). Would be interesting to know if still true. By new packages (or even new versions).
Package 9300 is HorizonsEphemeris.jl and if I recall the exiting new PrecompileTools.jl at 9296, I had to scroll through a lot of pages to find the number (i.e. over JLL packages), it’s great so see how many new versions are registered, even in just one day.
We actually have over 10,000 packages already, but the next one up to be registered as nr. 10,000 is VibrationalAnalysis.jl That package is now number 10001 since another slipped in.
[Nr. 9999 is PeriodicHiddenMarkovModels.jl]
EDIT: CIFTI.jl got unblocked and registered as package 10,000:
This Julia package supplies a basic function
CIFTI.load
for reading files of the CIFTI-2 format https://www.nitrc.org/projects/cifti for fMRI data, along with some convenience functions for indexing into the data matrix.The intended use case is for simple, fast reading of CIFTI data.
CIFTI (Connectivity Informatics Technology Initiative) standardizes file formats for the storage of connectivity data. These formats are developed by the Human Connectome Project and other interested parties.
Which is a cool project, so far we only have the full connectome of three organisims, first the C. elegans worm, and by now the (“brain”) nervous system of the fruit fly D. melanogaster, most complex so far, only mapped in 2023 (I assume both with help of the file format/spec):
Dense connectomes have been completed for the female adult brain,[3] the male nerve cord,[4] and the female larval stage.[5] The available connectomes show only chemical synapses - other forms of inter-neuron communication such as gap junctions or neuromodulators are not represented. Drosophila is the most complex creature with a connectome, which had only been previously obtained for three other simpler organisms, first C. elegans. […]
- The brain contains about 135,000 neurons,[6] small enough to be currently reconstructed.[7]
- The fruit fly exhibits many complex behaviors. Hundreds of different behaviors (feeding, grooming, flying, mating, learning, and so on) have been qualitatively and quantitatively studied over the years.
[…]In 2023, using the data from 2017 (above), the full brain connectome (for a female) was published, containing roughly 5x10^7 chemical synapses between ~130,000 neurons.[3] A projectome, a map of projections between regions, can be derived from the connectome. In parallel, a consensus cell type atlas for the Drosophila brain was published, produced based on this ‘FlyWire’ connectome and the prior ‘hemibrain’.[20] This resource includes 4,552 cell types: 3,094 as rigorous validations of those previously proposed in the hemibrain connectome; 1,458 new cell types
And more trivia on (fruit) flies, XY chromosomes always means “Normal Male” (unlike in birds), while XX can mean “Normal Female”, or intersex if there’s an extra autosome, and X (only) means a “Normal Male (sterile)” or if there’s an extra autosome a metamale (also called supermale), and XXX and XXXX can be superfemale (or normal).
Unlike humans, the Y chromosome does not confer maleness; rather, it encodes genes necessary for making sperm. Sex is instead determined by the ratio of X chromosomes to autosomes. […] Furthermore, each cell “decides” whether to be male or female independently of the rest of the organism, resulting in the occasional occurrence of gynandromorphs.
Three major genes are involved in determination of Drosophila sex. These are sex-lethal, sisterless, and deadpan.
We are not strictly yet at “Over 10,000 registered packages”, so if anyone wants to compete for package 10001 (still a cool number), please do:
Unless some other package beats it too it, by unblocking their registration.
Instead of simply waiting for the package to be merged, then announcing, I’m seeing if we can have a race for some worthy package.
I’m not sure if some admin should hand-pick a nr. 10,000… any suggestion from the queue?
first come first serve, strictly !
You have to wait 3 days to qualify for registration, yes. Of the 69 packages waiting to be registered, at least 69-18= 51 packages are blocked after more than 3 days, and can be unblocked at any time in case people figure out how. So suggesting a package, and helping with that is possible, to have a change at 10001.
We are up to 10391 registered packages, there of 9016 non-JLL/pure-Julia packages.*
I believe this one is nr. 9000 of those:
*
All the JLL packages DO strictly speaking contain Julia code also, a module, or rather a baremodule
, but all the Julia code is autogenerated as far as I know. See e.g. this one:
I believe a wrapper for Fortran compiled code. Usually for C or C++ code. Sometimes Rust and others. [In theory a JLL could be wrapping Julia code, i.e. it CAN be compiled into a library, though I don’t know any to be wrapped as such as a JLL, since would be redundant, though could be helpful for use from other languages and then not in a JLL form.]
FYI: All the JLL packages are backed by Yggrasil, and there you’ll see non-auto-generated Julia code:
I see despite the .jl file, and Julia code, most of it is actually an embedded shell script, and the rest is trivial Julia code (for URL location): Yggdrasil/H/HDF5/build_tarballs.jl at master · JuliaPackaging/Yggdrasil · GitHub
Do only of you register “GPL-v2-only” package, not just GPLv2 (“or later”). Because of GPLv3 packages such as:
If all packages in the queue to be registered will be we are at 9995 (non-JLL) packages. More if some stuck will get unstuck.
It will be fun to see who hits nr. 10,000. Maybe your package if you register?!
The 10,000th package (excluding JLLs) is SIRIUS.jl. But since it’s:
a Julia package providing wrappers for the C-style API of the SIRIUS library, a domain specific library for electronic structure calculations.
The package relies on the SIRIUS binary distributed as SIRIUS_jll.jl
I.e. basically for a JLL, then I also announce the next one registered:
We are up to 10,057 non-JLL packages, plus 1492 JLL packages for a total of 11549 registered packages. To be fair, some (most?) JLL packages have corresponding packages like the one above. And many non-JLL packages depend on some (one or more) JLLs directly or indirectly, but that’s also perfectly fine. I just wanted to exclude the jll packages to sort of see how many pure Julia packages there might me.