Most common topics of GitHub Fortran projects

I wrote Python functions to get data for a GitHub repo by scraping the landing page. GitHub does have an API to get such data, but I was hitting rate limits. For my list of Fortran codes, below are the topics that 5 or more repos listed, with the full list here. Topics (listed in the About section of a repo) are an under-used feature on GitHub, with many repos not specifying any topics. The handling of topics is quite literal, with fortran-2008 and fortran2008 considered distinct. A list of repos for each topic is here. We knew lots of Fortranners were doing CFD :). The numbers do not reflect projects not in my list. Given a list of topics, one could query GitHub with language:fortran topic:foo to get overall numbers.

Eventually I would like to create a web site for my list of codes, so that they can be filtered by topic, stars, license etc. There are about 2600 projects in the list, and scraping their data takes about 40 minutes. This could be done daily and saved, so that query results would be immediate.

615 fortran
186 fortran-package-manager
49 cfd
49 modern-fortran
48 fpm
48 python
45 mpi
42 simulation
41 linear-algebra
39 fortran2008
38 fortran-library
35 astrophysics
33 quantum-chemistry
30 fortran90
30 hpc
29 numerical-optimization
28 numerical-methods
27 optimization
27 physics
26 statistics
23 fortran2003
22 c
22 interpolation
21 computational-chemistry
21 high-performance-computing
21 scientific-computing
20 openmp
19 astronomy
19 chemistry
19 gpu
19 parallel-computing
18 density-functional-theory
18 fortran-tutorial
17 machine-learning
17 materials-science
17 molecular-dynamics
16 computational-fluid-dynamics
16 fluid-dynamics
16 library
16 ode
16 oop
15 geophysics
15 numerical-integration
14 atmospheric-modelling
14 fem
14 hdf5
14 lapack
14 parallel
14 seismology
13 blas
13 climate
13 electronic-structure
13 rng
13 turbulence
12 coarray-fortran
12 eigenvalues
12 finite-element-methods
12 navier-stokes
12 netcdf
12 plotting
11 constrained-optimization
11 earth-science
11 finite-difference
11 graphics
11 hydrology
11 matlab
11 modeling
11 monte-carlo
11 strings
11 unit-testing
10 automatic-differentiation
10 climate-model
10 cuda
10 differential-equations
10 finite-volume
10 fortran-2018
10 quantum-mechanics
10 special-functions
10 svd
10 tight-binding
9 coarray
9 deep-learning
9 dft
9 finite-elements
9 fortran-language
9 fortran95
9 hartree-fock
9 openacc
9 particle-physics
9 quadrature
9 random
8 benchmark
8 bindings
8 computational-physics
8 julia
8 least-squares
8 linux
8 monte-carlo-simulation
8 neural-network
8 nuclear-physics
8 plot
8 r
8 radiative-transfer
8 regex
7 cpp
7 database
7 f2py
7 fft
7 finite-element-analysis
7 fluid-simulation
7 fortran-modules
7 geodesy
7 gpu-computing
7 hydrodynamics
7 interoperability
7 matrix
7 molecular-modeling
7 music
7 nonlinear-equations
7 nonlinear-optimization
7 nwp
7 object-oriented
7 plasma-physics
7 regression
7 root-finding
7 runge-kutta
7 science
7 solver
7 sparse-matrix
7 spectroscopy
7 string-manipulation
7 thermodynamics
7 timer
7 vasp
7 weather
6 compiler
6 condensed-matter-physics
6 eigenvectors
6 finite-difference-method
6 fortran77
6 large-eddy-simulation
6 linear-equations
6 magnetohydrodynamics
6 numerical-weather-prediction
6 ode-solver
6 optimization-algorithms
6 parser
6 probability-distribution
6 quantum-espresso
6 sparse-linear-systems
6 splines
5 ab-initio
5 abaqus
5 astrodynamics
5 atmosphere
5 atmospheric-science
5 cmake
5 command-line
5 cplusplus
5 delaunay-triangulation
5 derivative-free-optimization
5 direct-numerical-simulation
5 fortran2018
5 gfortran
5 gpu-acceleration
5 hacktoberfest
5 linked-list
5 mesh
5 meteorology
5 model
5 molecular-simulation
5 numerical-analysis
5 numpy
5 object-oriented-fortran
5 object-oriented-programming
5 oceanography
5 parsing
5 pde-solver
5 performance
5 petsc
5 physics-simulation
5 random-number-generator
5 regular-expressions
5 solar-physics
5 string
5 tensor
5 testing
5 time-series
5 umat
5 unstructured-meshes
5 vector

2 Likes

Perfect!

Is there a way to figure out when a given repository was created? One way is to look at the first commit (although the commit might be older if the repo lived somewhere else first, such as locally on the author’s computer).

I would like to plot some statistics in time, like the number of new github repositories created per month.

Yes, the API can return the created_at field. The Python script

from github_util import repo_info

dd = repo_info("Reference-LAPACK", "lapack")
keys = ["description", "created_at", "updated_at", "pushed_at", "size",
    "watchers_count", "language", "forks_count", "open_issues", "topics"]
for key in keys:
    print(key, dd[key])

calling this module gives

Successfully fetched data for Reference-LAPACK/lapack
description LAPACK development repository
created_at 2016-04-29T03:19:39Z
updated_at 2025-03-07T15:04:26Z
pushed_at 2025-03-07T15:04:21Z
size 34183
watchers_count 1595
language Fortran
forks_count 450
open_issues 153
topics ['blas', 'eigenvalues', 'eigenvectors', 'lapack', 'lapacke', 'linear-algebra', 'linear-equations', 'matrix-factorization', 'singular-values', 'svd']
1 Like

I never got that to work a long while back, so I have been using curl to grab the info as JSON via commands like

 curl 'https://api.github.com/users/urbanjost/repos?per_page=1000'

but seeing your results I think I need to revisit how to best query the repository date.

One can create a list of the repos with the most stars for each topic, given data for individual repos and lists of repos by topic. A Python script gives output such as the following, with the full output here. The license and the other topics of a repo are also shown on the same line. Only projects in my list are included, so the list is incomplete.

Topic: fortran
--------------------------------------------------
1300 https://github.com/wrf-model/WRF - License: License - Additional Topics: weather, simulation, climate, model, forecast, nwp, wrf
1100 https://github.com/fortran-lang/stdlib - License: MIT license - Additional Topics: sorting, statistics, numpy, strings, stdlib, linear-algebra, hash, probability-distribution, blas, rng, quadrature, numerical-methods, lapack, fortran-library, fortran-package-manager, fortran-stdlib
1000 https://github.com/lfortran/lfortran - License: License - Additional Topics: library, jupyter, compiler, interactive, repl, jupyter-notebook, jupyter-kernels, fortran-compiler
808 https://github.com/mapmeld/fortran-machine - License: BSD-3-Clause license - Additional Topics: None
424 https://github.com/wavebitscientific/functional-fortran - License: BSD-3-Clause license - Additional Topics: functional-programming
422 https://github.com/modern-fortran/neural-fortran - License: MIT license - Additional Topics: machine-learning, deep-learning, neural-network, parallel, cnn

Topic: cfd
--------------------------------------------------
399 https://github.com/Nek5000/Nek5000 - License: License - Additional Topics: flow, hpc, fluid, spectral, navier-stokes, high-order, sem, anl
272 https://github.com/ucns3d-team/UCNS3D - License: GPL-3.0 license - Additional Topics: simulation, compressible-fluid-dynamics, computational-fluid-dynamics, unstructured-meshes, compressible-flows
242 https://github.com/code-saturne/code_saturne - License: GPL-2.0 license - Additional Topics: c, fortran, finite-volume, navier-stokes, mpi-applications, pyqt, turbulence, hpc-applications
235 https://github.com/CGNS/CGNS - License: License - Additional Topics: c, fortran, hdf5, fluid-dynamics, cgns, parallel-io, cfd-general-notation
220 https://github.com/p-costa/CaNS - License: MIT license - Additional Topics: fortran, gpu, high-performance-computing, gpu-computing, turbulence, fluid-dynamics, computational-fluid-dynamics, fluid-simulation

Topic: machine-learning
--------------------------------------------------
422 https://github.com/modern-fortran/neural-fortran - License: MIT license - Additional Topics: deep-learning, neural-network, fortran, parallel, cnn
284 https://github.com/cdslaborg/paramonte - License: UnknownLICENSE.md - Additional Topics: python, c, cpp, fortran, monte-carlo, matlab, machine-learning-algorithms, openmp, mpi, markov-chain, adaptive-learning, machine-learning-library, sampling, bayesian-inference, mcmc, monte-carlo-simulations, numerical-integration, bayesian-statistics
269 https://github.com/rouyang2017/SISSO - License: Apache-2.0 license - Additional Topics: compressed-sensing, symbolic-regression, material-science, big-data-analytics
101 https://github.com/Cambridge-ICCS/FTorch - License: MIT license - Additional Topics: python, deep-learning, fortran, torch, pytorch, interoperability, hacktoberfest
39 https://github.com/BerkeleyLab/inference-engine - License: License - Additional Topics: deep-learning, neural-network, inference, artificial-intelligence, neural-networks, artificial-neural-networks, feedforward-neural-network, ann, fortran-2023

Topic: optimization
--------------------------------------------------
331 https://github.com/libprima/prima - License: BSD-3-Clause license - Additional Topics: python, matlab, constrained-optimization, numerical-optimization, nonlinear-optimization, unconstrained-optimization, prima, powell, blackbox-optimization, modern-fortran, cobyla, derivative-free-optimization, simulation-based-optimization, bobyqa, newuoa, uobyqa, lincoa, zeroth-order-method
113 https://github.com/stfc/PSyclone - License: BSD-3-Clause license - Additional Topics: python, compiler, fortran, parallel-computing, high-performance-computing, finite-elements, finite-difference, finite-volume, hacktoberfest
100 https://github.com/pdfo/pdfo - License: BSD-3-Clause license - Additional Topics: python, fortran, simulation, matlab, constrained-optimization, numerical-optimization, nonlinear-optimization, optimization-algorithms, unconstrained-optimization, powell, blackbox-optimization, cobyla, derivative-free-optimization, zeroth-order-optimization, simulation-based-optimization, bobyqa, newuoa, uobyqa, lincoa
94 https://github.com/jacobwilliams/slsqp - License: License - Additional Topics: fortran, constrained-optimization, numerical-optimization, sqp, fortran-package-manager, nnls