How to know if a package is good?

In principle yes, but depends on the discipline, the students, and what types of bushes they have to push.

100%. I want economics students spending almost all their time on learning economics. The coding is the tool where we want them to struggle a little to learn (especially if the struggle is related to the economics), but it is not the primary goal.

The other thing that experienced coders who spend all day on computers forget is that when things go wrong, students have no idea if it is because they are (1) using the language wrong; (2) using the package wrong; (3) that the package itself has bugs; or (4) that a particular combination of package versions has bugs because the [compat] of both was imperfect. It takes a lot of experience to be able to triage those and matlab/fortran (and, largely, python in practice) don’t have this issue to the same extent.

Sure, but CSV.jl was also broken for weeks with a precompile bug earlier this year. It wasn’t even really practical to pin the version to an old one because the dependency graph of CSV overlapped with other key dependencies and held them up. I ended up getting so frustrated that I changed all my code to use DelimitedFiles instead but can’t imagine a student figuring that out on their own.

As always, not blaming individual developers here since I know how hard they are working without pay, but something is holding up either the community from coordinating on what are essential packages to keep working flawlessly, or the language itself makes fixing bugs especially difficult (e.g., maybe dependencies are especially fragile). That said, things are much less fragile than they use to be.

And while CSV is somewhat obvious one to google, try something likes splines or interpolation in julia. The Interpolations.jl seems like a good first choice via google, but doesn’t support irregular grids for cubic splines, doesn’t support AD, and may not have consistent benchmarking to ensure it remains high performance. After that, there are a huge number of other interpolation packages that users are forced to choose between. And they have no idea which ones are maintained, which ones were really just a side-project for someone learning julia, which ones were written for no good reason because alternatives already existed, etc.

This doesn’t happen in python because you just go to Interpolation (scipy.interpolate) — SciPy v1.11.4 Manual as your default. Since having a monolithic package just doesn’t work for julia, I tend to agree with Chris that the best solution in the SciML approach where you have a consistent wrapper (which can be more easily coordinated on) which then calls out to other algorithms. e.g. GitHub - SciML/Optimization.jl: Mathematical Optimization in Julia. Local, global, gradient-based and derivative-free. Linear, Quadratic, Convex, Mixed-Integer, and Nonlinear Optimization in one simple, fast, and differentiable interface. and others. But for this to work, people need to contribute and maintain those wrappers since the SciML developers can’t do it all on their own.

11 Likes