DueCredit was conceived to address the problem of inadequate citation of scientific software and methods, and limited visibility of donation requests for open-source software. It provides a simple framework (at the moment for Python only) to embed publication or other references in the original code so they are automatically collected and reported to the user at the necessary level of reference detail, i.e. only references for actually used functionality will be presented back if software provides multiple citeable implementations. It is already known to be used by over 10 projects, but have not seen active development recently and some already prototyped features were not finalized. The goal of this GSoC project would be to provide boost to DueCredit development and enhance it with:
- Serialize collection of citations into textual .json or .yaml format (instead of current Python pickle file) (Use json instead of pickle to save references ยท Issue #112 ยท duecredit/duecredit ยท GitHub)
- Provide rendering templating/flexibility ([wishlist] interface to templating engines (e.g. ninja) to provide users a flexible way to render reports ยท Issue #163 ยท duecredit/duecredit ยท GitHub)
- Provide export functionality for integration with sphinx (and other, like mkdocs) documentation systems (initial prototype development available in collectall: collect/embed into sphinx docs all references found in the project for inclusion in the docs etc by yarikoptic ยท Pull Request #183 ยท duecredit/duecredit ยท GitHub)
- Provide Jupyter notebooks support/rendering (Improve usage in Jupyter ยท Issue #180 ยท duecredit/duecredit ยท GitHub)
- Make mode of operation to not inject by default but to trace by default (Enable duecredit by default, but without injections ยท Issue #168 ยท duecredit/duecredit ยท GitHub)
- Long desired facelifts: bugs triaging, Python ecosystem/testing updates etc
Skill level: Intermediat/advanced
Required skills: Software development in Python, familiarity with GitHub and its CI. Good to have: documentation composition/building using sphinx, familiarity with citation formats e.g BibTeX/RIS, knowledge of working with types and data structures in Python in particular using pydantic.
Time commitment: Flexible (175/350 h)
Lead mentor: Yaroslav Halchenko
Project website: duecredit.org
Backup mentors: Isaac To
Tech keywords: Python, Bibliography, Sphinx, Software citations