# Citation principles of Julia packages

**URL:** <https://discourse.julialang.org/t/citation-principles-of-julia-packages/101321>\
**Category:** Community\
**Tags:** community, academia\
**Created:** [July 7, 2023, 5:21pm UTC](https://discourse.julialang.org/t/citation-principles-of-julia-packages/101321 "2023-07-07T17:21:49Z")\
**Posts on this page:** 15\
**Page:** 1

<div class="post-metadata">

**Author:** ![Atiyah](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/atiyah/32/46462_2.png) [@Atiyah](https://discourse.julialang.org/u/Atiyah)\
**Post date:** [July 7, 2023, 5:21pm UTC](https://discourse.julialang.org/t/citation-principles-of-julia-packages/101321/1 "2023-07-07T17:21:49Z")

</div>

**Question**

Is there (an attempt) for establishing a (sub-)community (semi-)standards regarding citations and paper-independent publications of Julia packages?

**Context**

After browsing few papers in recent Julia conference proceedings, it seems that most of the software-based publications are usually combined with a conference or journal papers. Additionally, papers that cite software simply place a link to github website of this software.

From one side, software shall be usually automatically archived and updated within software public archives such as [Software Heiratage](https://www.softwareheritage.org/) which is useful in many directions, but on the other side there is additionally an increasing tendency and recommended guidelines to view a software itself as an independent piece of research and make it independently publishable and citiable according to provided guidelines, cf. [Software Citations Principles, PeerJ CS 2016](https://force11.org/info/software-citation-principles-published-2016/). As a quick ad-hoc lists of advantages but only, such separation further helps in

- simplifying collaboration among developers and users of packages
  - different research or development lines can be separately and flexibly distinguished by different research groups

- distinguishing a particular version, branch or even fork
- use case example: novel feature F is being added to an existing package X.jl
- highlighting a specific software artefact that is employed in an academic paper
- use case example: significant outcomes of an academic paper change after a bug in package X.jl V1.4 has been fixed in X.jl version V1.5 (i.e. traceability)
- So many use cases can be further consulted in the referenced paper

**further suggested readings / examples**

- [The FAIR guiding principles for scientific data management and stewardship. Sci. Data, (2016)](https://www.nature.com/articles/sdata201618)
- Just as an example for code base: [CoMSES computational model library](https://www.comses.net/about/): Code base for models in social computational sciences ([here](https://www.comses.net/codebases/)). Interestingly, peer-review can be optionally conducted on submitted code. Unfortunately, at the moment it does not seem that there is a Julia community at least over there.

A bit different topics but interesting:

- [Open science is a research accelerator. Nature chemistry 3 (2011)](https://www.nature.com/articles/nchem.1149)

- [GitHub repositories with links to academic papers: public access, traceability and evolution, J. of Systems and Softwares, Jan. 2022](https://www.sciencedirect.com/science/article/pii/S0164121221002144):

- [Automating Software Citation using GitCite, IEEE ICDE 2020](https://ieeexplore.ieee.org/abstract/document/9101712)

---

<div class="post-metadata">

**Author:** ![zdenek\_hurak](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/zdenek_hurak/32/53118_2.png) [@zdenek\_hurak](https://discourse.julialang.org/u/zdenek_hurak)\
**Post date:** [July 7, 2023, 6:04pm UTC](https://discourse.julialang.org/t/citation-principles-of-julia-packages/101321/2 "2023-07-07T18:04:12Z")

</div>

“The Journal of Open Source Software is a **developer friendly** , open access journal for research software packages.” – [https://joss.theoj.org](https://joss.theoj.org)

---

<div class="post-metadata">

**Author:** ![mkitti](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/mkitti/32/12459_2.png) [@mkitti](https://discourse.julialang.org/u/mkitti)\
**Post date:** [July 9, 2023, 7:22am UTC](https://discourse.julialang.org/t/citation-principles-of-julia-packages/101321/3 "2023-07-09T07:22:30Z")

</div>

For software projects that I actively maintain and may be of academic interest, I usually use Zenodo. For example, see rhe following for Interpolations.jl version 0.14.7

> **[JuliaMath/Interpolations.jl: v0.14.7](https://zenodo.org/record/8066550)**
>
> What's Changed Allow a tuple to be passed with scale, Fix #528, #535 by @mkitti in https://github.com/JuliaMath/Interpolations.jl/pull/534 Pending for Next Version add missing docstring for Free BC by @jorgepz in...

---

<div class="post-metadata">

**Author:** ![sylvaticus](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/sylvaticus/32/203883_2.png) [@sylvaticus](https://discourse.julialang.org/u/sylvaticus)\
**Post date:** [July 9, 2023, 12:41pm UTC](https://discourse.julialang.org/t/citation-principles-of-julia-packages/101321/4 "2023-07-09T12:41:56Z")

</div>

Yes, most “important” julia packages use JOSS, but it’s a pity it doesn’t have (yes for good reasons, but still…) the impact factor…  
Also never understood why they provide only rhe PDF and not the article as HTML page…

---

<div class="post-metadata">

**Author:** ![stevengj](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/stevengj/32/71_2.png) [@stevengj](https://discourse.julialang.org/u/stevengj)\
**Post date:** [July 9, 2023, 4:58pm UTC](https://discourse.julialang.org/t/citation-principles-of-julia-packages/101321/5 "2023-07-09T16:58:18Z")

</div>

> [@sylvaticus](#):
>
> Yes, most “important” julia packages use JOSS, but it’s a pity it doesn’t have (yes for good reasons, but still…) the impact factor…

Impact factor seems to me to be irrelevant for publications about FOSS software. In such cases, the software is the advertisement for the paper and not the other way around. If you write software that is widely used in academic papers, it will eventually become highly cited regardless of where it is published.

---

<div class="post-metadata">

**Author:** ![kellertuer](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kellertuer/32/220707_2.png) [@kellertuer](https://discourse.julialang.org/u/kellertuer)\
**Post date:** [July 9, 2023, 5:45pm UTC](https://discourse.julialang.org/t/citation-principles-of-julia-packages/101321/6 "2023-07-09T17:45:43Z")

</div>

I prefer to use Zenodo for specific versions, also because these can be set up to be automatically generated – and a JOSS paper for general reference.

If a package is mature enough one can also check whether other Journals might be nice for a larger overview paper, but the reference in general is nice enough I think.  
Zenodo is also the good opportunity to make your numerics you do reproducible, which I still see less often than I would like to, i.e. that paper authors publish their code (in a reproducible way).

---

<div class="post-metadata">

**Author:** ![Atiyah](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/atiyah/32/46462_2.png) [@Atiyah](https://discourse.julialang.org/u/Atiyah)\
**Post date:** [July 11, 2023, 1:34pm UTC](https://discourse.julialang.org/t/citation-principles-of-julia-packages/101321/7 "2023-07-11T13:34:53Z")

</div>

Looks great!  
Is there a peer-review process?

---

<div class="post-metadata">

**Author:** ![Atiyah](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/atiyah/32/46462_2.png) [@Atiyah](https://discourse.julialang.org/u/Atiyah)\
**Post date:** [July 11, 2023, 1:57pm UTC](https://discourse.julialang.org/t/citation-principles-of-julia-packages/101321/8 "2023-07-11T13:57:58Z")

</div>

Sounds a good combination!

For understanding:

1. Does a JOSS paper correspond only to a specific version, say X.jl V2.0 while Zenodo generates citations for arbitrary versions, e.g. the most actual versions , say X.jl V2.3?
2. What would be a typical process for generating citations of a software in an incremental development process? (My understanding, Zenodo shall be used for arbitrary vesions Y.jl, V0.1, V0.2, V0.3, etc. and say if V1.1 correspond to a mature state , one can go for a JOSS paper?

Is my understanding correct?

---

<div class="post-metadata">

**Author:** ![kellertuer](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kellertuer/32/220707_2.png) [@kellertuer](https://discourse.julialang.org/u/kellertuer)\
**Post date:** [July 11, 2023, 2:08pm UTC](https://discourse.julialang.org/t/citation-principles-of-julia-packages/101321/9 "2023-07-11T14:08:43Z")

</div>

While parts of the JOSS paper might be a bit outdated, I would consider that (and it is used in my case like that) as the general reference (in a citation sense) for the package. So that would be the generic “I use Package X” citation (and a paper)  
That’s why accompanying it with the zenodo DOI (for the specific version) makes it more precise. That is it refers to the zip file of the exact version used in the paper citing said DOI of zenodo.

I would prefer if people always cite _both_ since the zenodo doi does usually not count into the magic: I have N citations (with a hopefully large hence capital N).

---

<div class="post-metadata">

**Author:** ![Atiyah](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/atiyah/32/46462_2.png) [@Atiyah](https://discourse.julialang.org/u/Atiyah)\
**Post date:** [July 11, 2023, 2:36pm UTC](https://discourse.julialang.org/t/citation-principles-of-julia-packages/101321/10 "2023-07-11T14:36:30Z")

</div>

Do you think this could improve traceability?

For example

- paper P uses X.jl V2.1
- X.jl V2.2 major (or even minor) bug is corrected
- the outcome and hence conclusion with V2.2 is significantly different
- Note paper (possibly with the same title) is updated with the revision of the outcome

---

<div class="post-metadata">

**Author:** ![kellertuer](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kellertuer/32/220707_2.png) [@kellertuer](https://discourse.julialang.org/u/kellertuer)\
**Post date:** [July 11, 2023, 2:43pm UTC](https://discourse.julialang.org/t/citation-principles-of-julia-packages/101321/11 "2023-07-11T14:43:08Z")

</div>

Then I would have written maybe 46 papers last year.

---

<div class="post-metadata">

**Author:** ![gdalle](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/gdalle/32/27854_2.png) [@gdalle](https://discourse.julialang.org/u/gdalle)\
**Post date:** [July 11, 2023, 10:25pm UTC](https://discourse.julialang.org/t/citation-principles-of-julia-packages/101321/12 "2023-07-11T22:25:15Z")

</div>

No peer review on Zenodo, archival is automatic from GitHub

---

<div class="post-metadata">

**Author:** ![Atiyah](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/atiyah/32/46462_2.png) [@Atiyah](https://discourse.julialang.org/u/Atiyah)\
**Post date:** [July 12, 2023, 5:16pm UTC](https://discourse.julialang.org/t/citation-principles-of-julia-packages/101321/13 "2023-07-12T17:16:42Z")

</div>

Papers here won’t be viewed as extra publications. They are devoted for correcting the conclusions based on wrong results.

---

<div class="post-metadata">

**Author:** ![kellertuer](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/kellertuer/32/220707_2.png) [@kellertuer](https://discourse.julialang.org/u/kellertuer)\
**Post date:** [July 12, 2023, 8:11pm UTC](https://discourse.julialang.org/t/citation-principles-of-julia-packages/101321/14 "2023-07-12T20:11:35Z")

</div>

Yes, my answer was a bit sarcastic, sorry. The only problem is, you would have to first invent a journal that allows for that.

---

<div class="post-metadata">

**Author:** ![Atiyah](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/atiyah/32/46462_2.png) [@Atiyah](https://discourse.julialang.org/u/Atiyah)\
**Post date:** [July 13, 2023, 7:14am UTC](https://discourse.julialang.org/t/citation-principles-of-julia-packages/101321/15 "2023-07-13T07:14:40Z")

</div>

According to my understanding (and I don’t really remember where I read it or whether it is a recommendation or a standard solution) that say if the accepted version of the paper is V3 on [arxiv.org](http://arxiv.org), then V4 shall be uploaded on [arxiv.org](http://arxiv.org) with the corrected conclusions
