# Making Fortran projects easier to discover

**URL:** <https://fortran-lang.discourse.group/t/making-fortran-projects-easier-to-discover/2619>\
**Category:** Uncategorized\
**Created:** [January 19, 2022, 2:37pm UTC](https://fortran-lang.discourse.group/t/making-fortran-projects-easier-to-discover/2619 "2022-01-19T14:37:00Z")\
**Posts on this page:** 10\
**Page:** 1

<div class="post-metadata">

**Author:** ![Beliavsky](https://avatars.discourse-cdn.com/v4/letter/b/ba8739/32.png) [@Beliavsky](https://fortran-lang.discourse.group/u/Beliavsky)\
**Post date:** [January 19, 2022, 2:37pm UTC](https://fortran-lang.discourse.group/t/making-fortran-projects-easier-to-discover/2619/1 "2022-01-19T14:37:00Z")

</div>

Having modern Fortran code available and easily discoverable for common tasks and problem domains is a perennial goal. An underused feature of GitHub is the topic list in the About section. Many repos have no topics listed. It should be possible to search

[language:fortran topic:numerical-integration](https://github.com/search?q=language%3Afortran+topic%3Anumerical-integration)

and find relevant repos. GitHub infers the programming language from the source file suffixes in a repo, but the topic must be supplied by the repo author. There could be a community effort to define standard topics, although topics that already have many entries should be preferred. Topics are lower case and have hyphens instead of spaces. If you have a repo, please add relevant topics, and if you use a repo, consider nudging the author with an issue if no topics are listed.

The [Fortran Package Index](https://fortran-lang.org/packages/) has Featured Topics, but in many cases the GitHub repo does not list that topic. Looking at my [categorized repo list](https://github.com/Beliavsky/Fortran-code-on-GitHub), here are possible topics for some categories.

Astronomy and Astrophysics projects should have `astronomy` or `astrophysics` and perhaps a specialized topic.

Benchmarks: `benchmark` and `benchmarks`

Biology and Medicine: `biology`, `medicine`, and specialized topics

Climate and Weather: `climate`, `weather`, `nwp`, `numerical-weather-prediction`, `meteorology`, `wind`

Code Tools: `automatic-differentiation`, `preprocessor`

Computational Chemistry: `chemistry`, `computational-chemistry`

Computational Fluid Dynamics: `cfd`, `computational-fluid-dynamics`, `fluid-dynamics`, `fluid-mechanics`, `turbulence`, `navier-stokes`, `particle-in-cell`, `pic`, `lattice-boltzmann`, `aerodynamics`

Earth Science: `earth-science`, `geospatial`, `geophysics`, `geoscience`, `ocean`, `atmosphere`, `erosion`, `ionosphere`, `earthquake`, `seismology`, `shallow-water-equations`

Economics: `economics`, `econometrics`, `finance`, `dsge`

Fast Fourier Transform: `fast-fourier-transform`, `fft`

File I/O: `hdf5`, `json`, `netcdf`, `toml`, `yaml`

Finite Elements: `fem`, `finite-elements`

I’ll stop here.

---

<div class="post-metadata">

**Author:** ![ivanpribec](https://yyz2.discourse-cdn.com/free1/user_avatar/fortran-lang.discourse.group/ivanpribec/32/3290_2.png) [@ivanpribec](https://fortran-lang.discourse.group/u/ivanpribec)\
**Post date:** [January 19, 2022, 4:11pm UTC](https://fortran-lang.discourse.group/t/making-fortran-projects-easier-to-discover/2619/2 "2022-01-19T16:11:01Z")

</div>

> [@Beliavsky](#):
>
> There could be a community effort to define standard topics, although topics that already have many entries should be preferred. Topics are lower case and have hyphens instead of spaces. If you have a repo, please add relevant topics, and if you use a repo, consider nudging the author with an issue if no topics are listed.

That’s a great suggestion. Would it be possible to derive topics from the [GAMS taxonomy](https://gams.nist.gov/)?

I would even suggest adding this to the criteria on [“how to get your package listed”](https://github.com/fortran-lang/fortran-lang.org/blob/HEAD/PACKAGES.md) in the Fortran-lang package index.

Maybe one of the moderators can break this into a new Discourse thread.

---

<div class="post-metadata">

**Author:** ![Beliavsky](https://avatars.discourse-cdn.com/v4/letter/b/ba8739/32.png) [@Beliavsky](https://fortran-lang.discourse.group/u/Beliavsky)\
**Post date:** [January 19, 2022, 4:52pm UTC](https://fortran-lang.discourse.group/t/making-fortran-projects-easier-to-discover/2619/3 "2022-01-19T16:52:40Z")

</div>

> [@Fortran goals for 2022](https://fortran-lang.discourse.group/t/fortran-goals-for-2022/2473/39):
>
> > [@Beliavsky](#):
> >
> > There could be a community effort to define standard topics, although topics that already have many entries should be preferred. Topics are lower case and have hyphens instead of spaces. If you have a repo, please add relevant topics, and if you use a repo, consider nudging the author with an issue if no topics are listed.
> 
> That’s a great suggestion. Would it be possible to derive topics from the [GAMS taxonomy](https://gams.nist.gov/)?

For mathematical domains such as linear algebra or optimization, yes, although the GAMS classifications need updating. For example the [statistics category](https://gams.nist.gov/cgi-bin/serve.cgi/Class/L) would now include machine learning topics such as the lasso.

For scientific domains such as earth science, classification is outside the scope of GAMS.

---

<div class="post-metadata">

**Author:** ![ivanpribec](https://yyz2.discourse-cdn.com/free1/user_avatar/fortran-lang.discourse.group/ivanpribec/32/3290_2.png) [@ivanpribec](https://fortran-lang.discourse.group/u/ivanpribec)\
**Post date:** [January 20, 2022, 11:42am UTC](https://fortran-lang.discourse.group/t/making-fortran-projects-easier-to-discover/2619/4 "2022-01-20T11:42:51Z")

</div>

The main GAMS classification scheme:

| Class | Description |
| --- | --- |
| A | Arithmetic, error analysis |
| B | Number theory |
| C | Elementary and special functions |
| D | Linear Algebra |
| E | Interpolation |
| F | Solution of nonlinear equations |
| G | Optimization |
| H | Differentiation, integration |
| I | Differential and integral equations |
| J | Integral transforms |
| K | Approximation |
| L | Statistics, probability |
| M | Simulation, stochastic modeling |
| N | Data handling |
| O | Symbolic computation |
| P | Computational geometry |
| Q | Graphics |
| R | Service routines |
| S | Software development tools |
| Z | Other |

Each class is associated with key-words and divided into sub-classes, e.g. for Class F: Solution of nonlinear equations:

Keywords: Continuation, Dynamical systems, Fixed points, Homotopy, Nonlinear equations, Roots, Zeros

Subclasses:

| Label | Description |
| --- | --- |
| [F1](https://gams.nist.gov/cgi-bin/serve.cgi/Class/F1) | Single equation |
| [F2](https://gams.nist.gov/cgi-bin/serve.cgi/Class/F2) | System of equations |
| [F3](https://gams.nist.gov/cgi-bin/serve.cgi/Class/F3) | Service routines (e.g., check user-supplied derivatives) |

The classification tree goes two levels deeper, but for GitHub topics, I think already adding the first two levels would be an improvement.

---

<div class="post-metadata">

**Author:** ![urbanjost](https://avatars.discourse-cdn.com/v4/letter/u/0ea827/32.png) [@urbanjost](https://fortran-lang.discourse.group/u/urbanjost)\
**Post date:** [January 21, 2022, 11:11pm UTC](https://fortran-lang.discourse.group/t/making-fortran-projects-easier-to-discover/2619/5 "2022-01-21T23:11:18Z")

</div>

I am surprised how literal the matches are. I see no options for globbing or regular expressions,  
and searches for random, pseudorandom, and pseudo-random produce different results, appearing to only show exact matches (even pluralization appears to be significant). Unless I missed it this is a bit disappointing. It does strengthen the arguments for suggesting specific keywords and rules like “never|always use plurals”. I thing it would be useful if there were a standard suggested for indicating support of the fortran fpm packaging utility.

---

<div class="post-metadata">

**Author:** ![nbehrnd](https://avatars.discourse-cdn.com/v4/letter/n/e0b2c6/32.png) [@nbehrnd](https://fortran-lang.discourse.group/u/nbehrnd)\
**Post date:** [January 25, 2022, 10:07am UTC](https://fortran-lang.discourse.group/t/making-fortran-projects-easier-to-discover/2619/6 "2022-01-25T10:07:02Z")

</div>

You already started to tag the entries with a [controlled vocabulary](https://en.wikipedia.org/wiki/Controlled_vocabulary). Thus, a suggestion would be to use [Library of Congress Classification](http://www.loc.gov/catdir/cpso/lcco/) down to the second level (_vide infra_) to complement this approach as seen e.g., in the [English list](https://github.com/EbookFoundation/free-science-books/blob/master/free-science-books.md) of [EbookFoundation/free-science-books](https://github.com/EbookFoundation/free-science-books) by Eric Hellman _et al._

Second level hereby means to go beyond the first character (e.g., `Q` about science), i.e. `QA` (mathematics), `QB` (astronomy), `QC` (physics), `QD` (chemistry), `QE` (geology) as seen and used to use in libraries. Thus, publications (e.g., books) about a topic related to what the program/project aims to address may serve as a reference here. One may argue if going further into next levels of the system (e.g., anything in the range of `QD146` till `QD197` is about _inorganic_ chemistry, `QD241` till `QD441` then about _organic_ chemistry, etc) for a primary tag demands too much effort to curate the entries (after all, in this example, these entries’ pedigree `QD == chemistry` remains visible).

Going further along «for each thing one place in the list», the assignment of a second, third keyword from this controlled set may be deemed suitable, like some publishers in chemistry do (example [Wiley-VCH](https://application.wiley-vch.de/vch/journals/keyword.php)). This however possibly consumes too much work effort for too little in return, though such a catalogue-like approach is seen elsewhere (e.g., [JOSS](https://joss.theoj.org/papers) on GitHub, or CTAN’s [topic cloud](https://ctan.org/topics/cloud)).

---

<div class="post-metadata">

**Author:** ![Beliavsky](https://avatars.discourse-cdn.com/v4/letter/b/ba8739/32.png) [@Beliavsky](https://fortran-lang.discourse.group/u/Beliavsky)\
**Post date:** [February 12, 2022, 3:42am UTC](https://fortran-lang.discourse.group/t/making-fortran-projects-easier-to-discover/2619/7 "2022-02-12T03:42:51Z")

</div>

Some GitHub projects that use “our” fpm use the `fpm` topic, but that topic is also used for [many unrelated projects](https://github.com/topics/fpm). So I suggest that the topic `fortran-package-manager` also be used so that Fortran codes that use fpm can easily be found with a topic search.

One can also use [this search](https://github.com/search?o=desc&q=path%3A%2F+filename%3Afpm.toml&s=indexed&type=Code) to find projects that use fpm, as @awvwgk showed me, but someone browsing GitHub may not know this.

---

<div class="post-metadata">

**Author:** ![Beliavsky](https://avatars.discourse-cdn.com/v4/letter/b/ba8739/32.png) [@Beliavsky](https://fortran-lang.discourse.group/u/Beliavsky)\
**Post date:** [April 5, 2023, 1:47pm UTC](https://fortran-lang.discourse.group/t/making-fortran-projects-easier-to-discover/2619/8 "2023-04-05T13:47:38Z")

</div>

ChatGPT can suggest repo topics:

> Q. What are some good topic tags to use for the GitHub repo [GitHub - JorgeG94/HFSzaboOstlund: Hartree-Fock program as showed by Szabo and Ostlund in Modern Quantum Chemistry](https://github.com/JorgeG94/HFSzaboOstlund) . A topic tag is all lower case, without spaces, possibly with hyphens.
> 
> A. Here are some good topic tags that could be used for the GitHub repo [https://github.com/JorgeG94/HFSzaboOstlund:](https://github.com/JorgeG94/HFSzaboOstlund:)
> 
> - quantum-chemistry
> - computational-physics
> - hartree-fock
> - szabo-ostlund
> - python
> - scientific-computing
> - electronic-structure
> - molecular-orbital-theory
> - density-functional-theory
> - quantum-mechanics
> 
> Remember to choose topic tags that are relevant and descriptive of the content of the repository.

The 1st and 3rd tags are those I had in mind for the repo before asking ChatGPT.

---

<div class="post-metadata">

**Author:** ![urbanjost](https://avatars.discourse-cdn.com/v4/letter/u/0ea827/32.png) [@urbanjost](https://fortran-lang.discourse.group/u/urbanjost)\
**Post date:** [April 5, 2023, 8:53pm UTC](https://fortran-lang.discourse.group/t/making-fortran-projects-easier-to-discover/2619/9 "2023-04-05T20:53:27Z")

</div>

If you are on the github fpm site [GitHub - fortran-lang/fpm: Fortran Package Manager (fpm)](https://github.com/fortran-lang/fpm)  
my favorite way of searching for packages is to go to the **About** section on the RHS and click on [fortran-package-manager](https://github.com/topics/fortran-package-manager). I hope more projects start including that topic tag.

Note that github can give suggestions when you are selecting topics. It would be interesting to give chatbot a question about github like “list all the projects that have an fpm manifest file fpm.toml and their suggested Library of Congress classification code”. IF it cannot do that, could it do the example site you used and give a good classification code? That might be a useful additional topic to add.

---

<div class="post-metadata">

**Author:** ![vmagnin](https://yyz2.discourse-cdn.com/free1/user_avatar/fortran-lang.discourse.group/vmagnin/32/28_2.png) [@vmagnin](https://fortran-lang.discourse.group/u/vmagnin)\
**Post date:** [April 6, 2023, 7:20am UTC](https://fortran-lang.discourse.group/t/making-fortran-projects-easier-to-discover/2619/10 "2023-04-06T07:20:48Z")

</div>

> [@urbanjost](#):
>
> click on [fortran-package-manager](https://github.com/topics/fortran-package-manager)

It’s also cool to see that many fpm projects show a nice logo when we click on that tag, especially @jacobwilliams projects. They look more attractive.
