-
Notifications
You must be signed in to change notification settings - Fork 173
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
stdlib group with separate but related repositories? #105
Comments
That structure does seem to work well for a lot of projects in other languages. It could help ensure each part is kept to high quality while keeping agility of development. It could also facilitate the continuum of such efforts as many projects will probably be affiliated and API compatible, like the Numpy stack, h5py, xarray, pandas, etc. For example w.r.t. file I/O, some libraries will simply have an iso_c_binding interface, some will be shims to polymorphic Fortran interfaces, some will be pure Fortran modules, etc. |
So having a rich ecosystem of Fortran packages is something we need. But we need #44 to make that approach work well. Languages like Julia first started with richer standard library, but lately it seems their approach is to use separate packages for functionality and a smaller standard library. This part of a blog post argues this point also: http://cliffle.com/blog/m4vga-in-rust/#rust-has-a-package-manager But: even if we succeed and in few years we have a rich ecosystem of packages and a large community and easy to create your own package, I think there is large value in having As an example of this how it can work, see the issue #101. I think |
I would personally prefer a leaner standard library focused on generic "computer science" operations such as sorting and I/O, and rely on custom libraries for numerical work, perhaps provided by a robust distribution (if not packaging) system. There's only a few variations in output when sorting a list (stable and unstable, for example) but many ways to do an interpolation. |
Good points. I never really thought about the importance of the package manager and its influence on project development. This probably goes without saying but I might suggest that repo organization follows an approach where we are splitting the code base into well defined sections such that. If in the future a package manager makes it feasible, the code base could be split at a later date if it makes sense. |
I think the target audience is a factor. Python started out as a general-purpose language and its stdlib reflects that. This exercise is interesting to do with any language that has a stdlib. Try Python, C, C++, Haskell, Go, Rust, Nim. The result: Every stdlib has different scope. If we look at Fortran's target audience (read: who uses Fortran?), then the functionality covered by numpy and scipy is largely in the center, not on the outskirts. Based on this, I'd argue that numpy+scipy stuff is more in scope of Fortran's stdlib than collections and sorting (though I think they are very much in scope too). |
Sorry, I didn't answer the question. I think yes (for more specialized stuff), but only eventually down the road. Splitting by functionality would be counterproductive this early. We're still learning who uses Fortran, how they use it, and what do they want. |
To add to @milancurcic's answer --- everything in Update: to be even more specific, let's do steps 1. - 4. from https://github.com/fortran-lang/stdlib/blob/master/WORKFLOW.md in this |
Here is a nice blog post from somebody learning Rust: https://hackernoon.com/programming-in-rust-the-good-the-bad-the-ugly-d06f8d8b7738 and he has an excellent point near the end:
So I suggest we keep trying to agree on common functionality that we all want, and agree an an API and put into experimental. At the same time, let's work on |
Cool yeah these are all great reasons and ideas to get moving! |
Stdlib is currently a single repository with no plans to split into sub-packages. If a need comes up, let's revisit it. |
There is quite a wide variety of proposals.
Does it make sense ahead of time to split the stdlib into defined parts like numpy and scipy have done?
I can see maths, sorting, random numbers, linalg etc. going into NumFortran?
KdTrees, interpolation, splines, etc. going into SciFortran? (Theres already a SciFortran but you get what I mean)
Meshing? Python has a package called Discretize, but something similar could be handled in Fortran.
They could all be under the umbrella of the stdlib.
If i'm missing the point of anything stdlib related, please let me know!
The text was updated successfully, but these errors were encountered: