Giter Site home page Giter Site logo

Comments (43)

certik avatar certik commented on June 5, 2024 3

I don't want to maintain the list of projects at the wiki anymore. I want to port all of them to https://fortran-lang.org/packages/ and remove the wiki. We can implement sorting by stars at https://fortran-lang.org/packages/ or any other statistics that we need.

from stdlib.

ivan-pi avatar ivan-pi commented on June 5, 2024 2

It will be painful to sort them in the right positions. I'll see what I can do.

Edit: The list is updated! With the help of some Sublime multi-cursor magic it turned out to be easier than expected.

from stdlib.

milancurcic avatar milancurcic commented on June 5, 2024 1

I added over a dozen more projects, some of them heavy-hitters.

Some comments:

  • As Ondrej mentioned, stars aren't indicative of how popular or used a project is. Instead, stars are a measure of how much a project page was visited + how interesting or cool it seems. Some of my projects (functional-fortran, tcp-client-server) have many stars for the Fortran standard (hur hur), but that is only because I posted them on Hacker News and they happened to be upvoted and discussed, and brought in traffic.
  • Most big Fortran projects, including the ones on this list, are developed and maintained at big labs. The GitHub repo is in many cases only a mirror (WRF, FV3-GFS, ROMS, probably many others). Such repos may have one or few GitHub contributors, but behind the curtains have contributions from dozens or hundreds of people.
  • Most big Fortran projects started many years ago (before git or GitHub), and many simply didn't transition to development on GitHub yet, and likely won't soon.
  • People that program Fortran (scientists, engineers, and a few oddballs) are a somewhat different culture from web developers that follow the latest trends in technology. Communities that started early on GitHub (10 years ago) had much more runway to grow. When I first started datetime-fortran in 2013, there weren't this many Fortran projects on GitHub.

from stdlib.

milancurcic avatar milancurcic commented on June 5, 2024 1

Relevant article by Nick from few years back: https://medium.com/@mapmeld/fortran-culture-on-github-a257dd595061

from stdlib.

ivan-pi avatar ivan-pi commented on June 5, 2024 1

These codes all have more than 30 stars and are not yet in the list. Some have only one or two contributors though.

Node-Fortran
https://github.com/IonicaBizau/node-fortran
https://github.com/IonicaBizau/node.fortran
DBCSR: Distributed Block Compressed Sparse Row matrix library
https://github.com/cp2k/dbcsr
Starlink software collection:
https://github.com/Starlink/starlink
Particle-in-Cell Skeleton Codes
https://github.com/UCLA-Plasma-Simulation-Group/PIC-skeleton-codes
CompDam - Deformation Gradient Decomposition (DGD)
https://github.com/nasa/CompDam_DGD
Flexi - Open Source High-Order Unstructured Discontinuous Galerkin Fluid Dynamics Solver
https://github.com/flexi-framework/flexi
specfem3d
https://github.com/geodynamics/specfem3d
kdtree2
https://github.com/jmhodges/kdtree2
ADflow - finite volume RANS solver tailored for gradient-based aerodynamic design optimization
https://github.com/mdolab/adflow
clfortran - Open source implementation of a Fortran interface to Khronos OpenCL API
https://github.com/cass-support/clfortran
MODFLOW6
https://github.com/MODFLOW-USGS/modflow6
Nek5000
https://github.com/Nek5000/Nek5000
fds - Fire Dynamics Simulator
https://github.com/firemodels/fds
ElmerFEM
https://github.com/ElmerCSC/elmerfem
arpack-ng
https://github.com/opencollab/arpack-ng
GALAHAD - A library of modern Fortran modules for nonlinear optimization
https://github.com/ralna/GALAHAD
fgsl - Fortran interface to the GNU Scientific Library
https://github.com/reinh-bader/fgsl
FortranPatterns - Popular design patterns implemented in Fortran
https://github.com/farhanjk/FortranPatterns
LaGriT - Los Alamos Grid Toolbox
https://github.com/lanl/LaGriT
fluidity
https://github.com/FluidityProject/fluidity
fortranlib
https://github.com/astrofrog/fortranlib
ogpf - Object based interface to GnuPlot from Fortran 2003, 2008 and later
https://github.com/kookma/ogpf
coretran
https://github.com/leonfoks/coretran
sigma - Fortran 2003 library for sparse matrix algebra
https://github.com/danshapero/sigma
aenet - Atomic interaction potentials based on artificial neural networks
https://github.com/atomisticnet/aenet
IAMR - A parallel, adaptive mesh refinement (AMR) code
https://github.com/AMReX-Codes/IAMR
PoisFFT - Free parallel fast Poisson solver
https://github.com/LadaF/PoisFFT
OpenSWPC
https://github.com/tktmyd/OpenSWPC

from stdlib.

ivan-pi avatar ivan-pi commented on June 5, 2024 1

From what I can see it is mostly codes for computational chemistry, sparse and dense linear algebra (including eigenvalue problems), computational fluid dynamics and solid mechanics, computational seismology, reservoir simulation, nonlinear optimization, and the rest are general Fortran utilities (file I/O, containers, patterns, plotting...).

from stdlib.

urbanjost avatar urbanjost commented on June 5, 2024 1

Yeah. The 30 stars on github is reasonable in a lot of ways, but some of those sites have been up
for years. I have a fledgling one whose goal was exactly to promote something like the functionality
of a standard utility library that only has a few stars that I still thought was a good fit as a seed for discussion in this project, which I would like to move towards contributing to.

Previously I was trying to start a group of github repositories with a similar goal relatively recently but I was primarily concentrating on setting up an automated process to extract codes from my heavily personalized development environment to a simple release format ( hopefully requiring others to have no need for more than a modern Fortran compiler and make(1)) so I could reduce the issues I had with putting something on github.

After this project started I wanted to switch to contributing to it and felt some of the materials I started were a good fit at least as part of discussion points about various utilities, various documentation methods, what APIs should look like, what compiler requirements should be for
experimental codes ... (ie good for part 2 and 3).

But, since I do not have thirty stars, is there still an approved way to have others give the materials a look and let me know if there is anything there that would be a good candidate for moving to this project?

after looking at this sites' documenation:

I started by opening an issue here for a topic covered by one of the modules I thought would be a
simple starting point; but that did not seem to elicit any response(but I'm not sure I have figured out how this all works yet).

So before surrendering I thought I would try directly eliciting feedback. Does anyone find anything worth discussing at

https://github.com/urbanjost?tab=repositories

So If no one finds anything interesting there that's fine and I can do my own thing; but there are some things on date and time, strings, and a POSIX interface I have seen discussed here that I
thought were a good fit.

Mine has some basic PD self-contained modules that anyone here can feel free to use for anything they want for discussion or use. The larger GPF development repository has some mixed MIT, GNU, ... licensing in it so even though it has a lot more stuff in it, it is not 100% unencumbered at this point (working on that).

So for something that does not meet the "github thirty stars" criteria should I have

  • waited for 30 stars before asking anyone to look at this,
  • try to start related issues here from scratch and just use my stuff as anyone would if it was not even on github,
  • make a one-time solicitation to have it looked over? There does not seem to be an "official" way to
    ask for something not meeting the gold standard to be evaluated.
  • try contributing my stuff to one of the sites that has 30 stars to piggyback on a more successful project
    -???

This project has all the goals and more collaborators and stars than I could reasonably hope for at this point, so I was basically hoping to contribute any generic functions to this project and just leave mine for some esoteric stuff that would not fit into a standard library.

from stdlib.

jvdp1 avatar jvdp1 commented on June 5, 2024 1

@urbanjost thanks for the info. Many of your things are of interest for stdlib.
You could probably start an issue similar to #103 or #104, and listing all the things that could contribute to stdlib

from stdlib.

milancurcic avatar milancurcic commented on June 5, 2024 1

@urbanjost I agree with @jvdp1. Much of what you have is in scope in my opinion, and the issue you opened for dates and times (#106) is the correct approach. Don't worry if there hasn't been feedback yet. I will write there soon and request feedback from others. We should handle dates and times with stdlib, we just need to work toward an API that most of the community will agree upon.

The 30 stars mentioned in this thread is arbitrary and meant only to keep the list of projects in the Wiki manageable. These projects are not meant as projects for transition to stdlib, but more as reference projects for us to learn how if Fortran used in real-life applications.

from stdlib.

certik avatar certik commented on June 5, 2024

Everybody, can you please help find Fortran projects at GitHub that have more than let's say ~30 stars, so that we have a complete list above? I will update the issue description. GitHub makes this really hard to find for some reason.

from stdlib.

marshallward avatar marshallward commented on June 5, 2024

Maybe activate the wiki for this?

Also I feel obliged to link MOM6: https://github.com/NOAA-GFDL/MOM6

(The GFDL framework almost hits the threshold at 29: https://github.com/NOAA-GFDL/FMS)

from stdlib.

jacobwilliams avatar jacobwilliams commented on June 5, 2024

Here are mine:

from stdlib.

certik avatar certik commented on June 5, 2024

I am moving this to a wiki so that we can all edit. Give me a second.

from stdlib.

milancurcic avatar milancurcic commented on June 5, 2024

I added a few more of mine (neural-fortran, tsunami, tcp-client-server).

Awesome Fortran is a useful list.

from stdlib.

certik avatar certik commented on June 5, 2024

Done: https://github.com/fortran-lang/stdlib/wiki/List-of-popular-open-source-Fortran-projects

@marshallward, @jacobwilliams would you mind putting the codes you mentioned into the wiki please?

from stdlib.

certik avatar certik commented on June 5, 2024

@marshallward We can lower the threshold. I set it at 30 to make the number of codes manageable, but it looks like there is not that many. We can lower it to 25 or 20.

from stdlib.

certik avatar certik commented on June 5, 2024

@milancurcic there is lots of Fortran codes out there, but if it is not on GitHub, not even a GitHub mirror (like I've done for LFortran), then I feel those codes are pretty much not developed anymore (or not open source). So restricting to only codes at GitHub I think is a proxy for codes that are "modern enough". (There are some codes however that didn't get a single commit in 5 or more years...)

from stdlib.

marshallward avatar marshallward commented on June 5, 2024

I couldn't see a way to edit the wiki, might need a permissions change?

from stdlib.

certik avatar certik commented on June 5, 2024

@marshallward try again, I made the wiki editable by any GitHub user.

from stdlib.

marshallward avatar marshallward commented on June 5, 2024

Thanks, working now.

from stdlib.

certik avatar certik commented on June 5, 2024

I found a nice list here: https://github.com/topics/fortran, again, not all the codes, but quite a few listed above are there plus more. Let's keep the number of stars at 29 or more, and we'll see how many codes we get.

from stdlib.

certik avatar certik commented on June 5, 2024

I extracted all projects that I was able to find so far. The github page https://github.com/topics/fortran as well as the various searches do not actually show all the projects for some reason, but I think the list is starting to get quite accurate. Here is some statistics:

# of contributors, # of projects
1 - 10
2 - 5
3 - 5
4 - 4
5 - 5
6 - 2
7 - 1
8 - 2
9 - 0
10 - 0
...
13 - 1
14 - 1
22 - 1
23 - 1
25 - 1
27 - 1
30 - 1
41 - 2
43 - 1
46 - 1

Total: 45

In particular, if we require at least 3 contributors to exclude one man projects, then there are only ~ 30 projects with at least 29 stars. And there is only 11 projects with more than 8 contributors.

from stdlib.

rweed avatar rweed commented on June 5, 2024

Don't know if its still actively maintained but Fortranwiki (fortranwiki.org/fortran/show/HomePage)
used to have some lists of codes/projects broken down by application type etc. I would guess some of the links though are stale or broken.

from stdlib.

certik avatar certik commented on June 5, 2024

@rweed thanks! You are right, the links there are broken, but the names of packages are correct. I will go through it soon. I already found one (it's on GitLab, not GitHub, that's why I didn't find it before): https://gitlab.com/octopus-code/octopus, which looks healthy. For LFortran, the GitLab / GitHub star ratio is 52 to 113. So Octopus has 22 stars on GitLab, so that could have been something like 50 on GitHub, which is not bad.

There will be more codes like that, no doubt.

from stdlib.

certik avatar certik commented on June 5, 2024

@milancurcic thank you so much for adding more projects --- indeed some of them are doing well.
Can you add your comments into the Wiki?

This has been very helpful to get an overview how the opensource Fortran landscape looks like.

from stdlib.

milancurcic avatar milancurcic commented on June 5, 2024

Interesting that fortran-machine (web server) by @mapmeld has Arjen's flibs as a dependency (for the CGI and SQL pieces if I recall correctly). That dependency could be stdlib for some similar future project.

from stdlib.

septcolor avatar septcolor commented on June 5, 2024

(Edit: Both have been added to Wiki)

Are these packages also candidates?
HANDE (QMC code)
https://github.com/hande-qmc/hande
DFTB+ (density functional tight-binding code)
https://github.com/dftbplus/dftbplus

from stdlib.

certik avatar certik commented on June 5, 2024

from stdlib.

milancurcic avatar milancurcic commented on June 5, 2024

Yes! Nek5000, how could I've missed that! :)

@ivan-pi Can you please add these to the wiki?

from stdlib.

certik avatar certik commented on June 5, 2024

@ivan-pi thanks a lot for this! The list looks a lot better than when I first started. It's revealing to see these different Fortran projects and see how people use Fortran.

from stdlib.

rweed avatar rweed commented on June 5, 2024

Obviously we have LOTs of open source/public domain software to choose from, I think we should stick to the things a standard library to support Fortran programming should be focused on. That is what functions/capabilities that don't current exist in Fortran that Matlab, NumPy/SciPy, and the C++ STL provide that reduce the amount of code you need to generate a CFD, FEM, sparse/dense matrix code etc. My priority list is as follows

Containers/ADTs
I would draw (because I already have) from Ruegers FTL project, Arjen's FLIBS, and implementation ideas outlined in a few books. However, if someone can point to a better approach I'm all in on that to.

Commonly used mathematical/statistical functions not current part of Fortran
Things like mean and standard deviations. Probability Density Functions, Cumlative Distribution Functions (CDF) and their siblings, normal (Gaussian) distributions, (ie better support for random distributions and perturbations), factorials, and binomial coefficients and a host of other functions in this area. A feature comparison of what is supported in Fortran and what NumPi/SciPy provides would probably be a good first step. We can then cherry pick all of the current and old implementations of these functions as candidates for the library.

Better support for creating, modifying, and manipulating arrays and matrices (which I remind everyone are not the same thing. one is a container, the other is a mathematical entity)
These include things like identity matrix (eye), linspace, meshgrid, the ability to generate real or integer sequences based on an fixed increment, dynamically adding rows and columns to a matrix
dynamically, sorting rows and/or columns, and a form of reallocate or resize that wraps MOVE_ALLOC to allow a dynamic reallocations capability.

Finally, sorting.
There are lots of implementations of all most commonly used sorting algorithms (quicksort, mergesort, heapsort, hashsort etc). The trick is to find a way to make them generic.

from stdlib.

certik avatar certik commented on June 5, 2024

@rweed would you mind posting your last comment into #1? The issue here is about looking at the Fortran landscape of what (opensource) projects use Fortran, so that we can see what conventions they use and these projects can end up depending on stdlib. Your comment seemed to indicate that we can choose these projects as dependencies for stdlib, which is not the intention, and that's why I think your comment belongs into #1.

from stdlib.

rweed avatar rweed commented on June 5, 2024

@certik no problem. I just thought when we start listing CFD codes etc we were straying from what I thought the intent of the library was. My comments were an attempt to get the discussion focused back on what I thought the purpose of the library was.

from stdlib.

certik avatar certik commented on June 5, 2024

I think the intent of the library, as discussed in #1, is to provide basic functionality, for example along the lines of your comment, so that stdlib can be used in codes such as listed in this issue #28, including the CFD codes.

from stdlib.

certik avatar certik commented on June 5, 2024

I added stdlib to the list. ;) With 47 stars and 7 contributors, we now belong there too.

from stdlib.

rjfarmer avatar rjfarmer commented on June 5, 2024

Do you want non-github open-source fortran projects listed?

from stdlib.

certik avatar certik commented on June 5, 2024

from stdlib.

awvwgk avatar awvwgk commented on June 5, 2024

The of popular Fortran projects in the wiki got quite out of date, in case it should still be maintained, one could automate at least the way meta data is fetched, a hacky example to do so using shields.io is in the details below.

Project Stars Contributors
ABINIT stars contributors
ADflow stars contributors
aenet stars contributors
arpack-ng stars contributors
bandup stars contributors
bspline-fortran stars contributors
Castro stars contributors
CFD stars contributors
CFL3D stars contributors
clfortran stars contributors
CompDam stars contributors
coretran stars contributors
cp2k stars contributors
CTSM stars contributors
datetime-fortran stars contributors
DBCSR stars contributors
DFTB+ stars contributors
ElmerFEM stars contributors
fdict stars contributors
fds stars contributors
FEconv stars contributors
fgsl stars contributors
FLAP stars contributors
Flexi stars contributors
fluidity stars contributors
FMS stars contributors
FOODIE stars contributors
forpy stars contributors
fortran2018-examples stars contributors
Fortran-Astrodynamics-Toolkit stars contributors
fortran-csv-module stars contributors
fortranlib stars contributors
fortran-machine stars contributors
FortranPatterns stars contributors
fortran-utils stars contributors
fox stars contributors
freeCappuccino stars contributors
ftl stars contributors
functional-fortran stars contributors
FV3-GFS stars contributors
GALAHAD stars contributors
GFR stars contributors
gtk-fortran stars contributors
h5fortran stars contributors
HANDE-QMC stars contributors
IAMR stars contributors
ICAR stars contributors
json-fortran stars contributors
kdtree2 stars contributors
LaGriT stars contributors
LAPACK stars contributors
lesgo stars contributors
MODFLOW6 stars contributors
MOM6 stars contributors
MPAS stars contributors
NASTRAN-93 stars contributors
NASTRAN-95 stars contributors
Nek5000 stars contributors
NetCDF-Fortran stars contributors
neural-fortran stars contributors
node-fortran stars contributors
node.fortran stars contributors
numerical-methods-fortran stars contributors
NWChem stars contributors
OFF stars contributors
ogpf stars contributors
OpenBLAS stars contributors
OpenCMISS stars contributors
OpenCoarrays stars contributors
OpenSWPC stars contributors
pFUnit stars contributors
PIC Skeleton Codes stars contributors
PoisFFT stars contributors
pyplot-fortran stars contributors
Quantum ESPRESSO stars contributors
ROMS stars contributors
SciFortran stars contributors
SHTOOLS stars contributors
sigma stars contributors
slsqp stars contributors
SNAP stars contributors
specfem3d stars contributors
Starlink stars contributors
stdlib stars contributors
StringiFor stars contributors
tcp-client-server stars contributors
TRACMASS stars contributors
Truchas stars contributors
tsunami stars contributors
VTKFortran stars contributors
WAVEWATCH III stars contributors
WPS stars contributors
wrf_hydro_nwm_public stars contributors
WRF stars contributors

from stdlib.

ivan-pi avatar ivan-pi commented on June 5, 2024

I found one more large Fortran project: https://github.com/MITgcm/MITgcm (the MIT General Circulation Model, homepage: http://mitgcm.org/)

from stdlib.

ivan-pi avatar ivan-pi commented on June 5, 2024

@awvwgk: is it possible to sort the list by the number of stars?

from stdlib.

ivan-pi avatar ivan-pi commented on June 5, 2024

These projects are not meant as projects for transition to stdlib, but more as reference projects for us to learn how if Fortran used in real-life applications.

Speaking of real-life applications, I also found this huge list of programs from the Radiation Safety Information Computational Center: https://rsicc.ornl.gov/Catalog.aspx?c=CCC

I'm sure there are several other government agencies, where Fortran is(was) the go-to language ;)

from stdlib.

awvwgk avatar awvwgk commented on June 5, 2024

Not without accessing the GH API directly, I'm currently cheating by using shields.io to access to GH API.

My suggestion would be to add all the packages from this list to the package index on fortran-lang and than we can figure out how to get this functionality into the package index.

from stdlib.

milancurcic avatar milancurcic commented on June 5, 2024

Closing in favor of https://fortran-lang.org/packages.

from stdlib.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.