Portal/TA1/guidelines/referees: Difference between revisions

From MaRDI portal
Made a page
 
LKastner (talk | contribs)
m LKastner moved page Portal/TA1/guidelines/referees to Portal/TA1/guidelines/referees: Make consistent with other TA pages
 
(One intermediate revision by one other user not shown)
Line 1: Line 1:
= Guidelines for peer reviewing software =
= Guidelines for peer reviewing software =
Here is a list of potential criteria one could look at when reviewing mathematical papers with a software component. This list contains mostly of ideas. Only through sufficient experimenting and collaboration with journals, editors, conferences and researchers will we be able to determine suitable standards that are not too taxing on authors, but do increase the reliability of the code and ability of future researchers to reuse published software.
As [[Portal/T1|TA1]] one of our tasks is improving the peer reviewing process of mathematical papers with a software component. Here is a list of potential criteria one could consider when doing such a review. This list consists mostly of suggestions. Only through sufficient experimenting and collaboration with journals, editors, conferences and researchers will we be able to determine suitable standards that are not too taxing on authors, but do increase the reliability of the code and ability of future researchers to reuse published software.


== Importance of the code in the publication ==
== Importance of the code in the publication ==
 
Every paper is different. Sometimes code plays a major role in determining whether the results are correct, but it can also happen that the code is only used for some small examples. It is therefore good to indicate how much of the paper is dependent on software.
* The paper only uses a small bit of code for simple computations
* The paper only uses a small bit of code for simple computations
* The results of the paper depend heavily on computations
* The results of the paper depend heavily on computations
Line 10: Line 10:


== Availability of the code ==
== Availability of the code ==
 
It should be possible for someone a 100 years from now on to still be able to find, reuse and maybe improve the software that was written. It is therefore important to check whether the code is available somewhere and if a good storage solution is being used.
* Code unavailable: No link to the code is provided and the code can also not be found on the website of the author.
* Code unavailable: No link to the code is provided and the code can also not be found on the website of the author.
* Code is available on the website of the author.
* Code is available on the website of the author.
Line 17: Line 17:


== Files provided ==
== Files provided ==
 
Just a check list of which files are being included in the publication.
* Notebook (Jupyter, IPython, Sage notebooks,etc.)
* Notebook (Jupyter, IPython, Sage notebooks,etc.)
* Source Code
* Source Code
Line 28: Line 28:
* Is there a license for the code. If yes, which one?
* Is there a license for the code. If yes, which one?


== Reproducability of the code and ease of installation ==
== Reproducibility of the code and ease of installation ==
 
It should be as easy as possible for someone to reuse the code. It is therefore good to check how easy it is too install the software and repeat the performed experiments/tests. The most ideal solution is some kind of Docker file or virtual machine that one is able to exactly reproduce the same conditions the authors used for there experiments. Even if it is 100 years later and all used programming languages are outdated.
* Specifications of hardware used to run the code in a reasonable amount of time
* Specifications of hardware used to run the code in a reasonable amount of time
* Installation instructions available?
* Installation instructions available?
Line 40: Line 40:


== Correctness and reliability ==
== Correctness and reliability ==
 
There will always be bugs in software. It is therefore good to introduce rigorous testing and comparisons to other systems to see if the code performs as intended.
* Does the code give the results listed in the paper?
* Does the code give the results listed in the paper?
* How does the code react to different examples other than the ones listed in the paper?
* How does the code react to different examples other than the ones listed in the paper?
Line 49: Line 49:


== Readability ==
== Readability ==
 
It should be possible for someone else to read the code and figure out what it does.
* Indentation and formatting consistent
* Indentation and formatting consistent
* Naming of variables is consistent, meaningful and distinctive.
* Naming of variables is consistent, meaningful and distinctive.
* Program has a clear structure and split up in functions and files
* Program has a clear structure and split up in functions and files
* Code is annotated
* Code is annotated

Latest revision as of 14:40, 6 December 2023

Guidelines for peer reviewing software

As TA1 one of our tasks is improving the peer reviewing process of mathematical papers with a software component. Here is a list of potential criteria one could consider when doing such a review. This list consists mostly of suggestions. Only through sufficient experimenting and collaboration with journals, editors, conferences and researchers will we be able to determine suitable standards that are not too taxing on authors, but do increase the reliability of the code and ability of future researchers to reuse published software.

Importance of the code in the publication

Every paper is different. Sometimes code plays a major role in determining whether the results are correct, but it can also happen that the code is only used for some small examples. It is therefore good to indicate how much of the paper is dependent on software.

  • The paper only uses a small bit of code for simple computations
  • The results of the paper depend heavily on computations
  • The paper develops new algorithms and the code is part of the publication
  • The data output is part of the publication

Availability of the code

It should be possible for someone a 100 years from now on to still be able to find, reuse and maybe improve the software that was written. It is therefore important to check whether the code is available somewhere and if a good storage solution is being used.

  • Code unavailable: No link to the code is provided and the code can also not be found on the website of the author.
  • Code is available on the website of the author.
  • Code is available on a long term storage solution. (e.g. Github, Zenodo)
  • Code is available on the website of the journal.

Files provided

Just a check list of which files are being included in the publication.

  • Notebook (Jupyter, IPython, Sage notebooks,etc.)
  • Source Code
  • Example files and documentation
  • Computed data
  • Code that verifies computed data

Licensing

  • Is there a license for the code. If yes, which one?

Reproducibility of the code and ease of installation

It should be as easy as possible for someone to reuse the code. It is therefore good to check how easy it is too install the software and repeat the performed experiments/tests. The most ideal solution is some kind of Docker file or virtual machine that one is able to exactly reproduce the same conditions the authors used for there experiments. Even if it is 100 years later and all used programming languages are outdated.

  • Specifications of hardware used to run the code in a reasonable amount of time
  • Installation instructions available?
  • Docker file or virtual machine included?
  • Specification of the datasets used (including links, versions)
  • Specification of dependencies on algorithms developed by others
  • Hardware and software environment used
  • Instructions for repeating the computations performed to obtain the results in the paper.
  • Documentation and examples

Correctness and reliability

There will always be bugs in software. It is therefore good to introduce rigorous testing and comparisons to other systems to see if the code performs as intended.

  • Does the code give the results listed in the paper?
  • How does the code react to different examples other than the ones listed in the paper?
  • Computing the data/performing the same experiments using different software packages increases the reliability of the data.
  • Comparing the output in a bunch of "easier" cases of more complicated algorithms with the output of slower, but less error-sensitive algorithms increases reliability
  • Were any methods used to test if the computed output was correct? (e.g. if the inverse B of a matrix A was computed, one could test if AB is the identity matrix)
  • Is the code still being maintained? How often is it updated?

Readability

It should be possible for someone else to read the code and figure out what it does.

  • Indentation and formatting consistent
  • Naming of variables is consistent, meaningful and distinctive.
  • Program has a clear structure and split up in functions and files
  • Code is annotated