[ { "id": "PVTI_lADOA3TSm84A81yHzgcKyC8", "content": { "title": "Non-Argo Data used by the software are explicitly identified and traceable with a persistent identifier (DOI) when available", "url": "https://github.com/euroargodev/software_guidelines/issues/17", "body": "", "state": "OPEN", "assignees": { "nodes": [] } }, "fieldValues": { "nodes": [ { "repository": { "id": "R_kgDOPGM65g", "url": "https://github.com/euroargodev/software_guidelines" } }, { "labels": { "nodes": [ { "id": "LA_kwDOPGM65s8AAAACEX1fwg", "name": "guideline" } ] } }, { "text": "Non-Argo Data used by the software are explicitly identified and traceable with a persistent identifier (DOI) when available", "id": "PVTFTV_lQDOA3TSm84A81yHzgcKyC_OFMiY0Q", "updatedAt": "2026-01-19T11:15:31Z", "creator": { "url": "https://github.com/gmaze" } }, { "field": { "name": "Software Development Model (SDM)" }, "name": "Open-Source", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKyC_OFMifnw" }, { "field": { "name": "Skill level" }, "name": "2 - Beginner", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKyC_OFMiqFg" }, { "field": { "name": "Scope" }, "name": "General guideline", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKyC_OFMi8Pw" }, { "field": { "name": "SDM requirement level" }, "name": "3 - Best effort", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKyC_OFMj3Yw" }, { "field": { "name": "FAIR4RS" }, "name": "Interoperable", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKyC_OFMkwlw" }, { "field": { "name": "Project Aspects" }, "name": "Documentation and Outreach", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKyC_OFQDjGg" }, { "field": { "name": "Status" }, "name": "To do", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKyC_OIqz2hg" } ] } }, { "id": "PVTI_lADOA3TSm84A81yHzgcKyhw", "content": { "title": "The project acknowledges Argo data papers and/or DOIs", "url": "https://github.com/euroargodev/software_guidelines/issues/6", "body": "The project, basically the repository, should mention the Argo data papers and/or DOIs. \nThis is an effective way to promote the Argo dataset and acknowledge the AST/ADMT work.\n\nThis can simply be done for instance in the README.md file of the repository, by adding a section like:\n\n### Argo acknowledgments example\n\nThis software the Argo data[1] that were collected and made freely available by the International Argo Program and the national programs that contribute to it. (https://argo.ucsd.edu, [https://www.ocean-ops.org](https://www.ocean-ops.org/board/?t=argo)). The Argo Program is part of the Global Ocean Observing System. \n\n[1] Wong, A. P. S., et al. (2020), Argo Data 1999\u20132019: Two Million Temperature-Salinity Profiles and Subsurface Velocity Observations From a Global Array of Profiling Floats, Frontiers in Marine Science, 7(700), doi: https://doi.org/10.3389/fmars.2020.00700\n\n```markdown\n### Argo acknowledgments example\n\nThis software the Argo data[1] that were collected and made freely available by the International Argo Program and the national programs that contribute to it. (https://argo.ucsd.edu, [https://www.ocean-ops.org](https://www.ocean-ops.org/board/?t=argo)). The Argo Program is part of the Global Ocean Observing System. \n\n[1] Wong, A. P. S., et al. (2020), Argo Data 1999\u20132019: Two Million Temperature-Salinity Profiles and Subsurface Velocity Observations From a Global Array of Profiling Floats, Frontiers in Marine Science, 7(700), doi: https://doi.org/10.3389/fmars.2020.00700\n```\n\n\n", "state": "OPEN", "assignees": { "nodes": [] } }, "fieldValues": { "nodes": [ { "repository": { "id": "R_kgDOPGM65g", "url": "https://github.com/euroargodev/software_guidelines" } }, { "labels": { "nodes": [ { "id": "LA_kwDOPGM65s8AAAACEX1fwg", "name": "guideline" } ] } }, { "text": "The project acknowledges Argo data papers and/or DOIs", "id": "PVTFTV_lQDOA3TSm84A81yHzgcKyhzOFMieUA", "updatedAt": "2026-05-27T10:54:24Z", "creator": { "url": "https://github.com/gmaze" } }, { "field": { "name": "Software Development Model (SDM)" }, "name": "Open-Source", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKyhzOFMif2g" }, { "field": { "name": "Scope" }, "name": "Argo specific", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKyhzOFMijAw" }, { "field": { "name": "Skill level" }, "name": "2 - Beginner", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKyhzOFMioCw" }, { "field": { "name": "SDM requirement level" }, "name": "3 - Best effort", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKyhzOFMiwVw" }, { "field": { "name": "FAIR4RS" }, "name": "Findable", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKyhzOFMk_YA" }, { "field": { "name": "Argo FAIR tools" }, "name": "Findable", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKyhzOFMlFwA" }, { "field": { "name": "Project Aspects" }, "name": "Argo compliance", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKyhzOFQDiyQ" }, { "field": { "name": "Status" }, "name": "Documented", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKyhzOIpTOEA" } ] } }, { "id": "PVTI_lADOA3TSm84A81yHzgcKzFA", "content": { "title": "The software has been presented to an Argo community", "url": "https://github.com/euroargodev/software_guidelines/issues/50", "body": "Once your software is stable and well-documented, it is ready for a broader diffusion throughout the Argo community: therefore it needs to be presented to an Argo-related group: national-program meeting, ADMT meeting or ADMT/AST working group.\n\nThis guideline follows from #26 ", "state": "OPEN", "assignees": { "nodes": [] } }, "fieldValues": { "nodes": [ { "repository": { "id": "R_kgDOPGM65g", "url": "https://github.com/euroargodev/software_guidelines" } }, { "labels": { "nodes": [ { "id": "LA_kwDOPGM65s8AAAACEX1fwg", "name": "guideline" } ] } }, { "text": "The software has been presented to an Argo community", "id": "PVTFTV_lQDOA3TSm84A81yHzgcKzFDOFMikpw", "updatedAt": "2026-05-26T20:05:40Z", "creator": { "url": "https://github.com/gmaze" } }, { "field": { "name": "Scope" }, "name": "Argo specific", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKzFDOFMiluQ" }, { "field": { "name": "Software Development Model (SDM)" }, "name": "Open-Source", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKzFDOFMil6A" }, { "field": { "name": "SDM requirement level" }, "name": "3 - Best effort", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKzFDOFMimNQ" }, { "field": { "name": "Skill level" }, "name": "2 - Beginner", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKzFDOFMimxQ" }, { "field": { "name": "Project Aspects" }, "name": "Argo compliance", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKzFDOFQDjRw" }, { "field": { "name": "Status" }, "name": "Documented", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKzFDOInugIQ" } ] } }, { "id": "PVTI_lADOA3TSm84A81yHzgcIMPc", "content": { "title": "The software documentation includes usage guidelines and examples", "url": "https://github.com/euroargodev/software_guidelines/issues/47", "body": "The documentation should include examples of the software features and guidelines on how to use it.\n\nIn the early stage of a software project, or for novice and beginners, this guideline is useful to precisely define the application scope of a codebase.\n\nWhen the software will gain in maturity, and developers in expertise, the documentation will improve accordingly.\n\nIt also a good practice that advanced and expert maintainers, or for software seeking a viable, structured, robust (and above) research software maturity level to produce/publish tutorial material (eg: notebooks, presentation, video, etc.).\n", "state": "OPEN", "assignees": { "nodes": [] } }, "fieldValues": { "nodes": [ { "repository": { "id": "R_kgDOPGM65g", "url": "https://github.com/euroargodev/software_guidelines" } }, { "labels": { "nodes": [ { "id": "LA_kwDOPGM65s8AAAACEX1fwg", "name": "guideline" } ] } }, { "text": "The software documentation includes usage guidelines and examples", "id": "PVTFTV_lQDOA3TSm84A81yHzgcIMPfOFMC_EQ", "updatedAt": "2025-07-03T13:47:01Z", "creator": { "url": "https://github.com/gmaze" } }, { "field": { "name": "Software Development Model (SDM)" }, "name": "Open-Source", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIMPfOFMC_2g" }, { "field": { "name": "SDM requirement level" }, "name": "2 - Recommended", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIMPfOFMDAAw" }, { "field": { "name": "Scope" }, "name": "General guideline", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIMPfOFMDAHw" }, { "field": { "name": "Skill level" }, "name": "2 - Beginner", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIMPfOFMD1NQ" }, { "field": { "name": "FAIR4RS" }, "name": "Reusable", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIMPfOFMlaKQ" }, { "field": { "name": "Project Aspects" }, "name": "Documentation and Outreach", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIMPfOFQDiHQ" }, { "field": { "name": "Status" }, "name": "Documented", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIMPfOIQ75Ug" } ] } }, { "id": "PVTI_lADOA3TSm84A81yHzgcIBPY", "content": { "title": "The software uses an open-source programming language", "url": "https://github.com/euroargodev/software_guidelines/issues/59", "body": "A list of open-source programming languages can be found here:\nhttps://en.wikipedia.org/wiki/List_of_open-source_programming_languages\n\n\u25b6 If you don't know where to start, or considering to move to a new language, have a look to the related guideline #58 . This shall ensure a wider user base and possibly collaborative development with the Argo community.\n\n#### \u203c\ufe0f About the Matlab language\n\nAlthough Matlab remains popular in oceanography and academic, _Matlab is not a programming language released under an open-source license_. Therefore any Matlab codebase cannot fulfil the present guideline.\n\nIf you'd rather categorise your Matlab codebase as an **[Octave](https://en.wikipedia.org/wiki/GNU_Octave)** language codebase to make it _open source_, you need to ensure that your codebase is indeed functional with the free [Octave software](https://octave.org/download) which cannot be taken for granted.\nSince:\n> Octave treats incompatibility with MATLAB as a bug.\n\nMatlab code developers are encouraged to migrate to Octave.\n", "state": "OPEN", "assignees": { "nodes": [] } }, "fieldValues": { "nodes": [ { "repository": { "id": "R_kgDOPGM65g", "url": "https://github.com/euroargodev/software_guidelines" } }, { "labels": { "nodes": [ { "id": "LA_kwDOPGM65s8AAAACEX1fwg", "name": "guideline" }, { "id": "LA_kwDOPGM65s8AAAAClD93aA", "name": "auto-checked-guideline" } ] } }, { "text": "The software uses an open-source programming language", "id": "PVTFTV_lQDOA3TSm84A81yHzgcIBPbOFMA7GQ", "updatedAt": "2026-05-20T15:13:54Z", "creator": { "url": "https://github.com/gmaze" } }, { "field": { "name": "Software Development Model (SDM)" }, "name": "Open-Source", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIBPbOFMCVHw" }, { "field": { "name": "Scope" }, "name": "General guideline", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIBPbOFMCVNQ" }, { "field": { "name": "SDM requirement level" }, "name": "2 - Recommended", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIBPbOFMCkkQ" }, { "field": { "name": "Skill level" }, "name": "1 - Novice", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIBPbOFMDu9w" }, { "field": { "name": "FAIR4RS" }, "name": "Reusable", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIBPbOFMkvGw" }, { "field": { "name": "Project Aspects" }, "name": "Codebase", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIBPbOFQDdxA" }, { "field": { "name": "Status" }, "name": "Documented", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIBPbOIiVamA" } ] } }, { "id": "PVTI_lADOA3TSm84A81yHzgcIBSw", "content": { "title": "The software should use a programming language adopted by the Argo community (Python, R, Java, Julia, Matlab/Octave)", "url": "https://github.com/euroargodev/software_guidelines/issues/58", "body": "To date, such languages are: Matlab/Octave, Java, Python, R and Julia.\n\nIn order to let the community adopt or experiment with new programming languages in the Argo community, this guideline is considered a \"Best Effort\".\n\nHowever, fully embracing the open-source and collaborative software development models, you are encourage to follow guideline #59 \n\nAlso check #59 description if you're considering Matlab.", "state": "OPEN", "assignees": { "nodes": [] } }, "fieldValues": { "nodes": [ { "repository": { "id": "R_kgDOPGM65g", "url": "https://github.com/euroargodev/software_guidelines" } }, { "labels": { "nodes": [ { "id": "LA_kwDOPGM65s8AAAACEX1fwg", "name": "guideline" }, { "id": "LA_kwDOPGM65s8AAAAClD93aA", "name": "auto-checked-guideline" } ] } }, { "text": "The software should use a programming language adopted by the Argo community (Python, R, Java, Julia, Matlab/Octave)", "id": "PVTFTV_lQDOA3TSm84A81yHzgcIBSzOFMA7pQ", "updatedAt": "2026-05-27T14:58:30Z", "creator": { "url": "https://github.com/gmaze" } }, { "field": { "name": "Software Development Model (SDM)" }, "name": "Open-Source", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIBSzOFMCVjA" }, { "field": { "name": "Scope" }, "name": "Argo specific", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIBSzOFMCVpg" }, { "field": { "name": "SDM requirement level" }, "name": "3 - Best effort", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIBSzOFMCkzQ" }, { "field": { "name": "Skill level" }, "name": "1 - Novice", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIBSzOFMDvNA" }, { "field": { "name": "FAIR4RS" }, "name": "Reusable", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIBSzOFMkqBA" }, { "field": { "name": "Project Aspects" }, "name": "Codebase", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIBSzOFQDdnA" }, { "field": { "name": "Status" }, "name": "Documented", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIBSzOIiVaNg" } ] } }, { "id": "PVTI_lADOA3TSm84A81yHzgcII90", "content": { "title": "The codebase includes comments and is documented following referenced standards (e.g. numpy style docstrings in Python)", "url": "https://github.com/euroargodev/software_guidelines/issues/21", "body": "This guideline goal is to lead to an improved, more robust, and standardised content with regard to what can be done at the \"Novice\" level from #22 ", "state": "OPEN", "assignees": { "nodes": [] } }, "fieldValues": { "nodes": [ { "repository": { "id": "R_kgDOPGM65g", "url": "https://github.com/euroargodev/software_guidelines" } }, { "labels": { "nodes": [ { "id": "LA_kwDOPGM65s8AAAACEX1fwg", "name": "guideline" } ] } }, { "text": "The codebase includes comments and is documented following referenced standards (e.g. numpy style docstrings in Python)", "id": "PVTFTV_lQDOA3TSm84A81yHzgcII93OFMCXNQ", "updatedAt": "2025-07-03T13:44:42Z", "creator": { "url": "https://github.com/gmaze" } }, { "field": { "name": "Software Development Model (SDM)" }, "name": "Open-Source", "id": "PVTFSV_lQDOA3TSm84A81yHzgcII93OFMCXYg" }, { "field": { "name": "Scope" }, "name": "General guideline", "id": "PVTFSV_lQDOA3TSm84A81yHzgcII93OFMCXcA" }, { "field": { "name": "SDM requirement level" }, "name": "1 - Required", "id": "PVTFSV_lQDOA3TSm84A81yHzgcII93OFMClLQ" }, { "field": { "name": "Skill level" }, "name": "2 - Beginner", "id": "PVTFSV_lQDOA3TSm84A81yHzgcII93OFMDvvA" }, { "field": { "name": "FAIR4RS" }, "name": "Accessible", "id": "PVTFSV_lQDOA3TSm84A81yHzgcII93OFMkopA" }, { "field": { "name": "Project Aspects" }, "name": "Documentation and Outreach", "id": "PVTFSV_lQDOA3TSm84A81yHzgcII93OFQDgLA" }, { "field": { "name": "Status" }, "name": "Documented", "id": "PVTFSV_lQDOA3TSm84A81yHzgcII93OIQ6tuQ" } ] } }, { "id": "PVTI_lADOA3TSm84A81yHzgcIJCE", "content": { "title": "The codebase is formatted following referenced standards (e.g. black in Python)", "url": "https://github.com/euroargodev/software_guidelines/issues/25", "body": "Coding standards are guidelines that ensures consistency, readability, and maintainability in code. Following these standards can make a software codebase easier to understand and maintain for everyone.\n\nRecommended coding standards and/or formatter:\n- Python: [Black](https://black.readthedocs.io/en/stable/), [Flake8](https://flake8.pycqa.org/en/latest/)\n- GNU Octave/Matlab: [MissHit](https://misshit.org)\n- R: [Tidyverse](https://style.tidyverse.org/), [StyleR](https://styler.r-lib.org/), [LintR](https://lintr.r-lib.org/)\n- Julia: [Runic](https://github.com/fredrikekre/Runic.jl#formatting-specification)\n- Java: [Oracle Legacy Convention](https://www.oracle.com/technetwork/java/codeconventions-150003.pdf)\n- ?", "state": "OPEN", "assignees": { "nodes": [] } }, "fieldValues": { "nodes": [ { "repository": { "id": "R_kgDOPGM65g", "url": "https://github.com/euroargodev/software_guidelines" } }, { "labels": { "nodes": [ { "id": "LA_kwDOPGM65s8AAAACEX1fwg", "name": "guideline" }, { "id": "LA_kwDOPGM65s8AAAAClD93aA", "name": "auto-checked-guideline" } ] } }, { "text": "The codebase is formatted following referenced standards (e.g. black in Python)", "id": "PVTFTV_lQDOA3TSm84A81yHzgcIJCHOFMCYEg", "updatedAt": "2025-07-03T13:45:05Z", "creator": { "url": "https://github.com/gmaze" } }, { "field": { "name": "Software Development Model (SDM)" }, "name": "Open-Source", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIJCHOFMCYMA" }, { "field": { "name": "Scope" }, "name": "General guideline", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIJCHOFMCYVg" }, { "field": { "name": "SDM requirement level" }, "name": "1 - Required", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIJCHOFMClSg" }, { "field": { "name": "Skill level" }, "name": "3 - Intermediate", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIJCHOFMDwAg" }, { "field": { "name": "FAIR4RS" }, "name": "Accessible", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIJCHOFMkozw" }, { "field": { "name": "Project Aspects" }, "name": "Codebase", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIJCHOFQDnLw" }, { "field": { "name": "Status" }, "name": "Documented", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIJCHOIQ8Mig" } ] } }, { "id": "PVTI_lADOA3TSm84A81yHzgcIJTQ", "content": { "title": "The project is hosted on a web-based development platform (e.g., GitHub or GitLab).", "url": "https://github.com/euroargodev/software_guidelines/issues/39", "body": "This is self-explanatory.\n\n\ud83d\ude80 When doing so, guideline #1 is automatically followed.\n\nWe further recommend to follow guideline #40 whatever the size or ambition of your project: this will make it easier to discover by the Argo community.", "state": "OPEN", "assignees": { "nodes": [] } }, "fieldValues": { "nodes": [ { "repository": { "id": "R_kgDOPGM65g", "url": "https://github.com/euroargodev/software_guidelines" } }, { "labels": { "nodes": [ { "id": "LA_kwDOPGM65s8AAAACEX1fwg", "name": "guideline" }, { "id": "LA_kwDOPGM65s8AAAAClD93aA", "name": "auto-checked-guideline" } ] } }, { "text": "The project is hosted on a web-based development platform (e.g., GitHub or GitLab).", "id": "PVTFTV_lQDOA3TSm84A81yHzgcIJTTOFMCbTA", "updatedAt": "2026-01-19T13:14:48Z", "creator": { "url": "https://github.com/gmaze" } }, { "field": { "name": "Software Development Model (SDM)" }, "name": "Collaborative", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIJTTOFMCbnQ" }, { "field": { "name": "SDM requirement level" }, "name": "1 - Required", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIJTTOFMCofA" }, { "field": { "name": "Scope" }, "name": "General guideline", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIJTTOFMCrrg" }, { "field": { "name": "Skill level" }, "name": "2 - Beginner", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIJTTOFMDwfA" }, { "field": { "name": "FAIR4RS" }, "name": "Accessible", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIJTTOFMklUw" }, { "field": { "name": "Project Aspects" }, "name": "Location", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIJTTOFNLvcg" }, { "field": { "name": "Status" }, "name": "Documented", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIJTTOIPf7UQ" } ] } }, { "id": "PVTI_lADOA3TSm84A81yHzgcIJls", "content": { "title": "The software provides a clear description of its dependencies", "url": "https://github.com/euroargodev/software_guidelines/issues/57", "body": "Dependencies are third party softwares or libraries that the user must make available (install) in the software [executing environment](https://github.com/euroargodev/software_guidelines/issues/57) to be fully functional.\n\nEg:\n- for a Python library: Argopy 1.4.0, Numpy 2.0.1, \u2026\n- for a Matlab package: GSW-Matlab 3.0, ...\n\nIt is further recommended to provide a machine readable description file of these dependencies (eg: requirements.txt, poetry.lock, renv.lock, Project.toml, etc \u2026).\n\n\nTo specify the executing environment (eg Python or Matlab versions), check guideline #44 \n\nThis guideline also comes as a complement to the operating system definition #46 \n\n## Examples\n\nCheck this resource with examples for Python, R and Matlab (possibly):\n- https://coderefinery.github.io/reproducible-research/dependencies/\n", "state": "OPEN", "assignees": { "nodes": [] } }, "fieldValues": { "nodes": [ { "repository": { "id": "R_kgDOPGM65g", "url": "https://github.com/euroargodev/software_guidelines" } }, { "labels": { "nodes": [ { "id": "LA_kwDOPGM65s8AAAACEX1fwg", "name": "guideline" }, { "id": "LA_kwDOPGM65s8AAAAClD93aA", "name": "auto-checked-guideline" } ] } }, { "text": "The software provides a clear description of its dependencies", "id": "PVTFTV_lQDOA3TSm84A81yHzgcIJlvOFMCemw", "updatedAt": "2025-07-03T13:47:56Z", "creator": { "url": "https://github.com/gmaze" } }, { "field": { "name": "Software Development Model (SDM)" }, "name": "Open-Source", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIJlvOFMCgAg" }, { "field": { "name": "SDM requirement level" }, "name": "1 - Required", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIJlvOFMClrg" }, { "field": { "name": "Scope" }, "name": "General guideline", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIJlvOFMCmfg" }, { "field": { "name": "Skill level" }, "name": "2 - Beginner", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIJlvOFMDw5Q" }, { "field": { "name": "FAIR4RS" }, "name": "Interoperable", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIJlvOFMkx7w" }, { "field": { "name": "Project Aspects" }, "name": "Documentation and Outreach", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIJlvOFQDgkg" }, { "field": { "name": "Status" }, "name": "Documented", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIJlvOIPSdFg" } ] } }, { "id": "PVTI_lADOA3TSm84A81yHzgcIJrw", "content": { "title": "The software is released under an open-source license", "url": "https://github.com/euroargodev/software_guidelines/issues/56", "body": "**A license file is essential to clearly define how others can legally use, modify, and share your software, protecting both users and contributors while fostering open collaboration.**\n\nTo be coherent with the Argo research infrastructure principle of open-data and FAIR principles, it is required that your Argo software is also released under an open-source license.\n\nThere exist many open-source licenses (check [this comparator](https://choosealicense.com/licenses/) for instance), but for Euro-Argo project, the typical and strongly recommended license is the [EUPL v1.2](https://eupl.eu/1.2/en/), see below.\n\n## How to ?\n\nInclude a `LICENSE.md` file at the root level of the project repository with the text of an open-source license (see example below).\n\n## Example\n\n### EUPL v1.2 LICENSE.md\n\n```markdown\n EUROPEAN UNION PUBLIC LICENCE v. 1.2\n EUPL \u00a9 the European Union 2007, 2016\n\nThis European Union Public Licence (the \u2018EUPL\u2019) applies to the Work (as defined\nbelow) which is provided under the terms of this Licence. Any use of the Work,\nother than as authorised under this Licence is prohibited (to the extent such\nuse is covered by a right of the copyright holder of the Work).\n\nThe Work is provided under the terms of this Licence when the Licensor (as\ndefined below) has placed the following notice immediately following the\ncopyright notice for the Work:\n\n Licensed under the EUPL\n\nor has expressed by any other means his willingness to license under the EUPL.\n\n1. Definitions\n\nIn this Licence, the following terms have the following meaning:\n\n- \u2018The Licence\u2019: this Licence.\n\n- \u2018The Original Work\u2019: the work or software distributed or communicated by the\n Licensor under this Licence, available as Source Code and also as Executable\n Code as the case may be.\n\n- \u2018Derivative Works\u2019: the works or software that could be created by the\n Licensee, based upon the Original Work or modifications thereof. This Licence\n does not define the extent of modification or dependence on the Original Work\n required in order to classify a work as a Derivative Work; this extent is\n determined by copyright law applicable in the country mentioned in Article 15.\n\n- \u2018The Work\u2019: the Original Work or its Derivative Works.\n\n- \u2018The Source Code\u2019: the human-readable form of the Work which is the most\n convenient for people to study and modify.\n\n- \u2018The Executable Code\u2019: any code which has generally been compiled and which is\n meant to be interpreted by a computer as a program.\n\n- \u2018The Licensor\u2019: the natural or legal person that distributes or communicates\n the Work under the Licence.\n\n- \u2018Contributor(s)\u2019: any natural or legal person who modifies the Work under the\n Licence, or otherwise contributes to the creation of a Derivative Work.\n\n- \u2018The Licensee\u2019 or \u2018You\u2019: any natural or legal person who makes any usage of\n the Work under the terms of the Licence.\n\n- \u2018Distribution\u2019 or \u2018Communication\u2019: any act of selling, giving, lending,\n renting, distributing, communicating, transmitting, or otherwise making\n available, online or offline, copies of the Work or providing access to its\n essential functionalities at the disposal of any other natural or legal\n person.\n\n2. Scope of the rights granted by the Licence\n\nThe Licensor hereby grants You a worldwide, royalty-free, non-exclusive,\nsublicensable licence to do the following, for the duration of copyright vested\nin the Original Work:\n\n- use the Work in any circumstance and for all usage,\n- reproduce the Work,\n- modify the Work, and make Derivative Works based upon the Work,\n- communicate to the public, including the right to make available or display\n the Work or copies thereof to the public and perform publicly, as the case may\n be, the Work,\n- distribute the Work or copies thereof,\n- lend and rent the Work or copies thereof,\n- sublicense rights in the Work or copies thereof.\n\nThose rights can be exercised on any media, supports and formats, whether now\nknown or later invented, as far as the applicable law permits so.\n\nIn the countries where moral rights apply, the Licensor waives his right to\nexercise his moral right to the extent allowed by law in order to make effective\nthe licence of the economic rights here above listed.\n\nThe Licensor grants to the Licensee royalty-free, non-exclusive usage rights to\nany patents held by the Licensor, to the extent necessary to make use of the\nrights granted on the Work under this Licence.\n\n3. Communication of the Source Code\n\nThe Licensor may provide the Work either in its Source Code form, or as\nExecutable Code. If the Work is provided as Executable Code, the Licensor\nprovides in addition a machine-readable copy of the Source Code of the Work\nalong with each copy of the Work that the Licensor distributes or indicates, in\na notice following the copyright notice attached to the Work, a repository where\nthe Source Code is easily and freely accessible for as long as the Licensor\ncontinues to distribute or communicate the Work.\n\n4. Limitations on copyright\n\nNothing in this Licence is intended to deprive the Licensee of the benefits from\nany exception or limitation to the exclusive rights of the rights owners in the\nWork, of the exhaustion of those rights or of other applicable limitations\nthereto.\n\n5. Obligations of the Licensee\n\nThe grant of the rights mentioned above is subject to some restrictions and\nobligations imposed on the Licensee. Those obligations are the following:\n\nAttribution right: The Licensee shall keep intact all copyright, patent or\ntrademarks notices and all notices that refer to the Licence and to the\ndisclaimer of warranties. The Licensee must include a copy of such notices and a\ncopy of the Licence with every copy of the Work he/she distributes or\ncommunicates. The Licensee must cause any Derivative Work to carry prominent\nnotices stating that the Work has been modified and the date of modification.\n\nCopyleft clause: If the Licensee distributes or communicates copies of the\nOriginal Works or Derivative Works, this Distribution or Communication will be\ndone under the terms of this Licence or of a later version of this Licence\nunless the Original Work is expressly distributed only under this version of the\nLicence \u2014 for example by communicating \u2018EUPL v. 1.2 only\u2019. The Licensee\n(becoming Licensor) cannot offer or impose any additional terms or conditions on\nthe Work or Derivative Work that alter or restrict the terms of the Licence.\n\nCompatibility clause: If the Licensee Distributes or Communicates Derivative\nWorks or copies thereof based upon both the Work and another work licensed under\na Compatible Licence, this Distribution or Communication can be done under the\nterms of this Compatible Licence. For the sake of this clause, \u2018Compatible\nLicence\u2019 refers to the licences listed in the appendix attached to this Licence.\nShould the Licensee's obligations under the Compatible Licence conflict with\nhis/her obligations under this Licence, the obligations of the Compatible\nLicence shall prevail.\n\nProvision of Source Code: When distributing or communicating copies of the Work,\nthe Licensee will provide a machine-readable copy of the Source Code or indicate\na repository where this Source will be easily and freely available for as long\nas the Licensee continues to distribute or communicate the Work.\n\nLegal Protection: This Licence does not grant permission to use the trade names,\ntrademarks, service marks, or names of the Licensor, except as required for\nreasonable and customary use in describing the origin of the Work and\nreproducing the content of the copyright notice.\n\n6. Chain of Authorship\n\nThe original Licensor warrants that the copyright in the Original Work granted\nhereunder is owned by him/her or licensed to him/her and that he/she has the\npower and authority to grant the Licence.\n\nEach Contributor warrants that the copyright in the modifications he/she brings\nto the Work are owned by him/her or licensed to him/her and that he/she has the\npower and authority to grant the Licence.\n\nEach time You accept the Licence, the original Licensor and subsequent\nContributors grant You a licence to their contributions to the Work, under the\nterms of this Licence.\n\n7. Disclaimer of Warranty\n\nThe Work is a work in progress, which is continuously improved by numerous\nContributors. It is not a finished work and may therefore contain defects or\n\u2018bugs\u2019 inherent to this type of development.\n\nFor the above reason, the Work is provided under the Licence on an \u2018as is\u2019 basis\nand without warranties of any kind concerning the Work, including without\nlimitation merchantability, fitness for a particular purpose, absence of defects\nor errors, accuracy, non-infringement of intellectual property rights other than\ncopyright as stated in Article 6 of this Licence.\n\nThis disclaimer of warranty is an essential part of the Licence and a condition\nfor the grant of any rights to the Work.\n\n8. Disclaimer of Liability\n\nExcept in the cases of wilful misconduct or damages directly caused to natural\npersons, the Licensor will in no event be liable for any direct or indirect,\nmaterial or moral, damages of any kind, arising out of the Licence or of the use\nof the Work, including without limitation, damages for loss of goodwill, work\nstoppage, computer failure or malfunction, loss of data or any commercial\ndamage, even if the Licensor has been advised of the possibility of such damage.\nHowever, the Licensor will be liable under statutory product liability laws as\nfar such laws apply to the Work.\n\n9. Additional agreements\n\nWhile distributing the Work, You may choose to conclude an additional agreement,\ndefining obligations or services consistent with this Licence. However, if\naccepting obligations, You may act only on your own behalf and on your sole\nresponsibility, not on behalf of the original Licensor or any other Contributor,\nand only if You agree to indemnify, defend, and hold each Contributor harmless\nfor any liability incurred by, or claims asserted against such Contributor by\nthe fact You have accepted any warranty or additional liability.\n\n10. Acceptance of the Licence\n\nThe provisions of this Licence can be accepted by clicking on an icon \u2018I agree\u2019\nplaced under the bottom of a window displaying the text of this Licence or by\naffirming consent in any other similar way, in accordance with the rules of\napplicable law. Clicking on that icon indicates your clear and irrevocable\nacceptance of this Licence and all of its terms and conditions.\n\nSimilarly, you irrevocably accept this Licence and all of its terms and\nconditions by exercising any rights granted to You by Article 2 of this Licence,\nsuch as the use of the Work, the creation by You of a Derivative Work or the\nDistribution or Communication by You of the Work or copies thereof.\n\n11. Information to the public\n\nIn case of any Distribution or Communication of the Work by means of electronic\ncommunication by You (for example, by offering to download the Work from a\nremote location) the distribution channel or media (for example, a website) must\nat least provide to the public the information requested by the applicable law\nregarding the Licensor, the Licence and the way it may be accessible, concluded,\nstored and reproduced by the Licensee.\n\n12. Termination of the Licence\n\nThe Licence and the rights granted hereunder will terminate automatically upon\nany breach by the Licensee of the terms of the Licence.\n\nSuch a termination will not terminate the licences of any person who has\nreceived the Work from the Licensee under the Licence, provided such persons\nremain in full compliance with the Licence.\n\n13. Miscellaneous\n\nWithout prejudice of Article 9 above, the Licence represents the complete\nagreement between the Parties as to the Work.\n\nIf any provision of the Licence is invalid or unenforceable under applicable\nlaw, this will not affect the validity or enforceability of the Licence as a\nwhole. Such provision will be construed or reformed so as necessary to make it\nvalid and enforceable.\n\nThe European Commission may publish other linguistic versions or new versions of\nthis Licence or updated versions of the Appendix, so far this is required and\nreasonable, without reducing the scope of the rights granted by the Licence. New\nversions of the Licence will be published with a unique version number.\n\nAll linguistic versions of this Licence, approved by the European Commission,\nhave identical value. Parties can take advantage of the linguistic version of\ntheir choice.\n\n14. Jurisdiction\n\nWithout prejudice to specific agreement between parties,\n\n- any litigation resulting from the interpretation of this License, arising\n between the European Union institutions, bodies, offices or agencies, as a\n Licensor, and any Licensee, will be subject to the jurisdiction of the Court\n of Justice of the European Union, as laid down in article 272 of the Treaty on\n the Functioning of the European Union,\n\n- any litigation arising between other parties and resulting from the\n interpretation of this License, will be subject to the exclusive jurisdiction\n of the competent court where the Licensor resides or conducts its primary\n business.\n\n15. Applicable Law\n\nWithout prejudice to specific agreement between parties,\n\n- this Licence shall be governed by the law of the European Union Member State\n where the Licensor has his seat, resides or has his registered office,\n\n- this licence shall be governed by Belgian law if the Licensor has no seat,\n residence or registered office inside a European Union Member State.\n\nAppendix\n\n\u2018Compatible Licences\u2019 according to Article 5 EUPL are:\n\n- GNU General Public License (GPL) v. 2, v. 3\n- GNU Affero General Public License (AGPL) v. 3\n- Open Software License (OSL) v. 2.1, v. 3.0\n- Eclipse Public License (EPL) v. 1.0\n- CeCILL v. 2.0, v. 2.1\n- Mozilla Public Licence (MPL) v. 2\n- GNU Lesser General Public Licence (LGPL) v. 2.1, v. 3\n- Creative Commons Attribution-ShareAlike v. 3.0 Unported (CC BY-SA 3.0) for\n works other than software\n- European Union Public Licence (EUPL) v. 1.1, v. 1.2\n- Qu\u00e9bec Free and Open-Source Licence \u2014 Reciprocity (LiLiQ-R) or Strong\n Reciprocity (LiLiQ-R+).\n\nThe European Commission may update this Appendix to later versions of the above\nlicences without producing a new version of the EUPL, as long as they provide\nthe rights granted in Article 2 of this Licence and protect the covered Source\nCode from exclusive appropriation.\n\nAll other changes or additions to this Appendix require the production of a new\nEUPL version.\n```", "state": "OPEN", "assignees": { "nodes": [] } }, "fieldValues": { "nodes": [ { "repository": { "id": "R_kgDOPGM65g", "url": "https://github.com/euroargodev/software_guidelines" } }, { "labels": { "nodes": [ { "id": "LA_kwDOPGM65s8AAAACEX1fwg", "name": "guideline" }, { "id": "LA_kwDOPGM65s8AAAAClD93aA", "name": "auto-checked-guideline" } ] } }, { "text": "The software is released under an open-source license", "id": "PVTFTV_lQDOA3TSm84A81yHzgcIJrzOFMCfuw", "updatedAt": "2026-05-05T14:00:25Z", "creator": { "url": "https://github.com/gmaze" } }, { "field": { "name": "Software Development Model (SDM)" }, "name": "Open-Source", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIJrzOFMCgIg" }, { "field": { "name": "SDM requirement level" }, "name": "1 - Required", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIJrzOFMCl5g" }, { "field": { "name": "Scope" }, "name": "General guideline", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIJrzOFMCmow" }, { "field": { "name": "Skill level" }, "name": "1 - Novice", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIJrzOFMDxGQ" }, { "field": { "name": "FAIR4RS" }, "name": "Accessible", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIJrzOFMknMw" }, { "field": { "name": "Project Aspects" }, "name": "Content", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIJrzOFQDO6Q" }, { "field": { "name": "Status" }, "name": "Documented", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIJrzOIPfQDw" } ] } }, { "id": "PVTI_lADOA3TSm84A81yHzgcIKfQ", "content": { "title": "The project includes a basic documentation", "url": "https://github.com/euroargodev/software_guidelines/issues/36", "body": "\ud83c\uddec\ud83c\udde7 Remember that the documentation must be in english (see #41 ) !\n\n## **Basic** documentation\n\nThe project must, from the very beginning, includes a documentation with **basic** information: \n- a **name** (eg: \"pydox\")\n- a **title** (eg: \"A Python library dedicated to Argo Oxygen data Calibration and Adjustment\")\n- and a **description** (eg: \"Pydox is designed to compute oxygen calibration for Argo floats during Delayed-Mode Quality Control (DMQC). It helps users: Calculate gain, drift, and other calibration parameters with several methodology (in-air, climatology and reference CTD measurements), Determine if adjustments are needed (via plots and metrics), Apply calibrations to raw float data, Save adjusted data as DAC-ready Argo NetCDF files (BD files).\")\n\nYou can also mention sponsors and supporting projects if any.\n \nThe basic documentation must be located in a **README.md** file at the root level of the repository.\n\n## Complementing the documentation\n\n_As the project will gain in maturity_, here is a non-exhaustive list of other information that will be included in the **README.md** file:\n- link with the Argo dataset (e.g. read index file, calibrate salinity, plot trajectory, assess BGC variables,...), see #66 \n- list of contributors, see #10 \n- software unique identifiers, see #49 and #28 \n- continuous integration badges, see #52 \n- software distribution services and last released versions, see #53 \n- list of supported systems and environment, see #44 and #46 \n\n## Help\n\n#### Writing README and documentation\n\nFurther guideline on writing a good README at: \nhttps://github.com/hackergrrl/art-of-readme#key-elements\n\nMore software documentation guidelines at: \nhttps://carpentries-incubator.github.io/better-research-software/07-software-documentation.html\n\n#### Where to put your documentation ?\n\nShort answer: your repository must have a **README.md** file at the root level. So this is where to put basic information.\n\nFor a more technical documentation, in the early stage of a project, it also possible to place more documentation:\n - as a markdown cell in a notebook, \n- in the commented header of a single module/function project.\n\nAs the project will gain in maturity, a full documentation system will be adopted (eg: readthedocs.com, mkdocs, ...). check guidelines #48 .\nIf you don't know when to start a full documentation system, just check at the length of your README file, when it requires too much scrolling, then it's time !\n\n\n\n", "state": "OPEN", "assignees": { "nodes": [] } }, "fieldValues": { "nodes": [ { "repository": { "id": "R_kgDOPGM65g", "url": "https://github.com/euroargodev/software_guidelines" } }, { "labels": { "nodes": [ { "id": "LA_kwDOPGM65s8AAAACEX1fwg", "name": "guideline" }, { "id": "LA_kwDOPGM65s8AAAAClD93aA", "name": "auto-checked-guideline" } ] } }, { "text": "The project includes a basic documentation", "id": "PVTFTV_lQDOA3TSm84A81yHzgcIKfTOFMCpxA", "updatedAt": "2026-05-05T13:34:31Z", "creator": { "url": "https://github.com/gmaze" } }, { "field": { "name": "Software Development Model (SDM)" }, "name": "Open-Source", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIKfTOFMCqYA" }, { "field": { "name": "SDM requirement level" }, "name": "1 - Required", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIKfTOFMCrFg" }, { "field": { "name": "Scope" }, "name": "General guideline", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIKfTOFMCrOw" }, { "field": { "name": "Skill level" }, "name": "1 - Novice", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIKfTOFMDy3g" }, { "field": { "name": "FAIR4RS" }, "name": "Reusable", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIKfTOFMlYfA" }, { "field": { "name": "Project Aspects" }, "name": "Documentation and Outreach", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIKfTOFQDOpw" }, { "field": { "name": "Status" }, "name": "Documented", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIKfTOIPTdgw" } ] } }, { "id": "PVTI_lADOA3TSm84A81yHzgcILD4", "content": { "title": "The software documentation has an API reference section automatically generated", "url": "https://github.com/euroargodev/software_guidelines/issues/42", "body": "\nSome tools:\n- Python: [Sphynx-autodoc](https://www.sphinx-doc.org/en/master/usage/extensions/autodoc.html)\n- Java: [Javadoc](https://en.wikipedia.org/wiki/Javadoc)\n- ...", "state": "OPEN", "assignees": { "nodes": [] } }, "fieldValues": { "nodes": [ { "repository": { "id": "R_kgDOPGM65g", "url": "https://github.com/euroargodev/software_guidelines" } }, { "labels": { "nodes": [ { "id": "LA_kwDOPGM65s8AAAACEX1fwg", "name": "guideline" } ] } }, { "text": "The software documentation has an API reference section automatically generated", "id": "PVTFTV_lQDOA3TSm84A81yHzgcILD7OFMCwpw", "updatedAt": "2025-07-03T13:46:35Z", "creator": { "url": "https://github.com/gmaze" } }, { "field": { "name": "Software Development Model (SDM)" }, "name": "Open-Source", "id": "PVTFSV_lQDOA3TSm84A81yHzgcILD7OFMCxDg" }, { "field": { "name": "SDM requirement level" }, "name": "2 - Recommended", "id": "PVTFSV_lQDOA3TSm84A81yHzgcILD7OFMCxcw" }, { "field": { "name": "Scope" }, "name": "General guideline", "id": "PVTFSV_lQDOA3TSm84A81yHzgcILD7OFMCxhw" }, { "field": { "name": "Skill level" }, "name": "3 - Intermediate", "id": "PVTFSV_lQDOA3TSm84A81yHzgcILD7OFMDzcw" }, { "field": { "name": "FAIR4RS" }, "name": "Interoperable", "id": "PVTFSV_lQDOA3TSm84A81yHzgcILD7OFMkuBg" }, { "field": { "name": "Project Aspects" }, "name": "Documentation and Outreach", "id": "PVTFSV_lQDOA3TSm84A81yHzgcILD7OFQDrFw" }, { "field": { "name": "Status" }, "name": "To do", "id": "PVTFSV_lQDOA3TSm84A81yHzgcILD7OIqz4zA" } ] } }, { "id": "PVTI_lADOA3TSm84A81yHzgcILP0", "content": { "title": "The software documentation is hosted on the web", "url": "https://github.com/euroargodev/software_guidelines/issues/48", "body": "This a guideline that follows from the early stage of the documentation, once the README file (#36) and/or the codebase becomes too large.\n\nThe software documentation, whatever the format (eg: pdf, markdown, etc...) must be hosted and accessible on the web.\n\nIn practice, it is recommended to use a webpages generating system to host a documentation online. This is fairly easy to implement since many online services can directly be plugged onto a git-based repository content.\n\nSuch online documentation systems are, for instance:\n- [Read The Docs](https://about.readthedocs.com/) (free for open-source project),\n- [Github Pages](https://docs.github.com/en/pages).\n\nThese services can be used to publish online a documentation that is possibly generated from static files located in a dedicated folder of the software repository.\n\nSuch documentation (based on static files like markdown or rst) can be generated with, for instance:\n- [Sphynx](https://www.sphinx-doc.org/en/master/),\n- [Mkdocs](https://www.mkdocs.org/),\n- [Jupyter Books](https://jupyter-book.readthedocs.io/v1/intro.html).\n\n\ud83d\udca1 Euroargodev provides a [repository template for a documentation](https://github.com/euroargodev/online_documentation) that can be used to quickly start your own online documentation.\n", "state": "OPEN", "assignees": { "nodes": [] } }, "fieldValues": { "nodes": [ { "repository": { "id": "R_kgDOPGM65g", "url": "https://github.com/euroargodev/software_guidelines" } }, { "labels": { "nodes": [ { "id": "LA_kwDOPGM65s8AAAACEX1fwg", "name": "guideline" } ] } }, { "text": "The software documentation is hosted on the web", "id": "PVTFTV_lQDOA3TSm84A81yHzgcILP3OFMCyqQ", "updatedAt": "2025-07-03T13:47:06Z", "creator": { "url": "https://github.com/gmaze" } }, { "field": { "name": "Software Development Model (SDM)" }, "name": "Open-Source", "id": "PVTFSV_lQDOA3TSm84A81yHzgcILP3OFMCzPA" }, { "field": { "name": "SDM requirement level" }, "name": "1 - Required", "id": "PVTFSV_lQDOA3TSm84A81yHzgcILP3OFMCzgA" }, { "field": { "name": "Scope" }, "name": "General guideline", "id": "PVTFSV_lQDOA3TSm84A81yHzgcILP3OFMCzlg" }, { "field": { "name": "Skill level" }, "name": "3 - Intermediate", "id": "PVTFSV_lQDOA3TSm84A81yHzgcILP3OFMD0jg" }, { "field": { "name": "FAIR4RS" }, "name": "Findable", "id": "PVTFSV_lQDOA3TSm84A81yHzgcILP3OFMlacg" }, { "field": { "name": "Project Aspects" }, "name": "Documentation and Outreach", "id": "PVTFSV_lQDOA3TSm84A81yHzgcILP3OFQDn5g" }, { "field": { "name": "Status" }, "name": "Documented", "id": "PVTFSV_lQDOA3TSm84A81yHzgcILP3OIpoDxw" } ] } }, { "id": "PVTI_lADOA3TSm84A81yHzgcILZE", "content": { "title": "The software documentation includes installation guidelines", "url": "https://github.com/euroargodev/software_guidelines/issues/43", "body": "From very sucint and descriptive (eg: 'Place the octave file in your path') to more complexe distribution packages instructions (eg: pip with options), the software must document how to be installed.\n\nIn the early stage of a project, this information can be place in the README file of a repository (see #36 )", "state": "OPEN", "assignees": { "nodes": [] } }, "fieldValues": { "nodes": [ { "repository": { "id": "R_kgDOPGM65g", "url": "https://github.com/euroargodev/software_guidelines" } }, { "labels": { "nodes": [ { "id": "LA_kwDOPGM65s8AAAACEX1fwg", "name": "guideline" } ] } }, { "text": "The software documentation includes installation guidelines", "id": "PVTFTV_lQDOA3TSm84A81yHzgcILZHOFMC0fw", "updatedAt": "2025-07-03T13:46:42Z", "creator": { "url": "https://github.com/gmaze" } }, { "field": { "name": "SDM requirement level" }, "name": "1 - Required", "id": "PVTFSV_lQDOA3TSm84A81yHzgcILZHOFMC2KA" }, { "field": { "name": "Scope" }, "name": "General guideline", "id": "PVTFSV_lQDOA3TSm84A81yHzgcILZHOFMC2Xg" }, { "field": { "name": "Software Development Model (SDM)" }, "name": "Open-Source", "id": "PVTFSV_lQDOA3TSm84A81yHzgcILZHOFMC2cQ" }, { "field": { "name": "Skill level" }, "name": "3 - Intermediate", "id": "PVTFSV_lQDOA3TSm84A81yHzgcILZHOFMD07w" }, { "field": { "name": "FAIR4RS" }, "name": "Reusable", "id": "PVTFSV_lQDOA3TSm84A81yHzgcILZHOFMkqlQ" }, { "field": { "name": "Project Aspects" }, "name": "Documentation and Outreach", "id": "PVTFSV_lQDOA3TSm84A81yHzgcILZHOFQDnmQ" }, { "field": { "name": "Status" }, "name": "Documented", "id": "PVTFSV_lQDOA3TSm84A81yHzgcILZHOIpjymQ" } ] } }, { "id": "PVTI_lADOA3TSm84A81yHzgcIM_Y", "content": { "title": "The software is tested and implements continuous integration", "url": "https://github.com/euroargodev/software_guidelines/issues/52", "body": "# Tests\n\nTesting your codebase helps:\n- Improves software quality and research reliability by catching bugs early, validating functionality, and enabling modular, maintainable code.\n- Boosts collaboration and reuse by providing clear expectations, documentation, and confidence for users and contributors.\n\nIf you're still not convinced, have a look to this excellent rational: https://carpentries-incubator.github.io/better-research-software/06-code-correctness.html#why-use-software-testing\n\nTesting is fairly accessible to implement, here are some helps/tools for main languages:\n- Python: \n - https://docs.pytest.org/en/stable/getting-started.html\n - https://carpentries-incubator.github.io/better-research-software/06-code-correctness.html\n- Matlab: https://www.mathworks.com/help/matlab-test/index.html\n- R: https://testthat.r-lib.org/index.html\n- Julia: https://www.julia-vscode.org/docs/dev/userguide/testitems/\n\n# Continuous integration\n\nThis is about:\n- Merge changes back to the main branch as often as possible. \n- Run automated tests against the main branch or new build.\n\nThe web-based platform where your project is hosted is probably offering a Continuous Integration (CI) service to automatically run every test function in the test code suite every time changes are pushed to a remote repository, see below.\n\n## Examples\n\nSome tutorials/helps on implementing CI on:\n\n- Github: https://carpentries-incubator.github.io/better-research-software/ci-for-testing.html\n- Gitlab: https://docs.gitlab.com/ci/testing/", "state": "OPEN", "assignees": { "nodes": [] } }, "fieldValues": { "nodes": [ { "repository": { "id": "R_kgDOPGM65g", "url": "https://github.com/euroargodev/software_guidelines" } }, { "labels": { "nodes": [ { "id": "LA_kwDOPGM65s8AAAACEX1fwg", "name": "guideline" } ] } }, { "text": "The software is tested and implements continuous integration", "id": "PVTFTV_lQDOA3TSm84A81yHzgcIM_bOFMDHvw", "updatedAt": "2026-05-07T07:09:49Z", "creator": { "url": "https://github.com/gmaze" } }, { "field": { "name": "Software Development Model (SDM)" }, "name": "Open-Source", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIM_bOFMDN9Q" }, { "field": { "name": "SDM requirement level" }, "name": "2 - Recommended", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIM_bOFMDOeA" }, { "field": { "name": "Skill level" }, "name": "3 - Intermediate", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIM_bOFMD1dA" }, { "field": { "name": "Scope" }, "name": "General guideline", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIM_bOFMD5NA" }, { "field": { "name": "FAIR4RS" }, "name": "Reusable", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIM_bOFMleOQ" }, { "field": { "name": "Project Aspects" }, "name": "Codebase", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIM_bOFQDr0g" }, { "field": { "name": "Status" }, "name": "Documented", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIM_bOIPQ-mA" } ] } }, { "id": "PVTI_lADOA3TSm84A81yHzgcIRWM", "content": { "title": "Unit tests cover multiple operating systems", "url": "https://github.com/euroargodev/software_guidelines/issues/62", "body": "The test suite of the software must be executed in all supported operating systems reported in guideline #46 .\nEg: Linux, Mac Os, Windows \n\nUsing Continuous Integration on the euroargodev platform, it is fairly easy to implement this guideline by appropriately configuring your github action workflows to be executed on a matrix of operating systems. \n\nSome tutorials/helps on implementing CI on:\n- Github: https://carpentries-incubator.github.io/better-research-software/ci-for-testing.html\n- Gitlab: https://docs.gitlab.com/ci/testing/", "state": "OPEN", "assignees": { "nodes": [] } }, "fieldValues": { "nodes": [ { "repository": { "id": "R_kgDOPGM65g", "url": "https://github.com/euroargodev/software_guidelines" } }, { "labels": { "nodes": [ { "id": "LA_kwDOPGM65s8AAAACEX1fwg", "name": "guideline" } ] } }, { "text": "Unit tests cover multiple operating systems", "id": "PVTFTV_lQDOA3TSm84A81yHzgcIRWPOFMD4Hg", "updatedAt": "2026-01-20T13:06:50Z", "creator": { "url": "https://github.com/gmaze" } }, { "field": { "name": "Skill level" }, "name": "4 - Advanced", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIRWPOFMD4lw" }, { "field": { "name": "Software Development Model (SDM)" }, "name": "Open-Source", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIRWPOFMD4yg" }, { "field": { "name": "SDM requirement level" }, "name": "2 - Recommended", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIRWPOFMD5BQ" }, { "field": { "name": "Scope" }, "name": "General guideline", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIRWPOFMD5IA" }, { "field": { "name": "FAIR4RS" }, "name": "Reusable", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIRWPOFMleXQ" }, { "field": { "name": "Project Aspects" }, "name": "Codebase", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIRWPOFQDwQA" }, { "field": { "name": "Status" }, "name": "Documented", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIRWPOIkFSUQ" } ] } }, { "id": "PVTI_lADOA3TSm84A81yHzgcIRrw", "content": { "title": "The software ensures timely distribution of updates", "url": "https://github.com/euroargodev/software_guidelines/issues/51", "body": "This guideline is inspired by the concept of \"Continuous Deployment\" (CD): every change that passes all stages of the production pipeline is released (no need for a \u201crelease\u201d anymore).\n\nWe recommend that a software new version is released every time significant improvements and/or bug-fixes are merged into the main branch.\n\nThe goal here is to ensure that important software evolutions are distributed when available and not buried into a slow deployment process.\n\nIf your software implements CD, this guideline is automatically followed.", "state": "OPEN", "assignees": { "nodes": [] } }, "fieldValues": { "nodes": [ { "repository": { "id": "R_kgDOPGM65g", "url": "https://github.com/euroargodev/software_guidelines" } }, { "labels": { "nodes": [ { "id": "LA_kwDOPGM65s8AAAACEX1fwg", "name": "guideline" } ] } }, { "text": "The software ensures timely distribution of updates", "id": "PVTFTV_lQDOA3TSm84A81yHzgcIRrzOFMD8MQ", "updatedAt": "2026-05-05T10:36:00Z", "creator": { "url": "https://github.com/gmaze" } }, { "field": { "name": "Skill level" }, "name": "3 - Intermediate", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIRrzOFMEpCQ" }, { "field": { "name": "Software Development Model (SDM)" }, "name": "Open-Source", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIRrzOFMEpNQ" }, { "field": { "name": "SDM requirement level" }, "name": "2 - Recommended", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIRrzOFMEpgQ" }, { "field": { "name": "Scope" }, "name": "General guideline", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIRrzOFMEvbA" }, { "field": { "name": "Project Aspects" }, "name": "Codebase", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIRrzOFQDwCw" }, { "field": { "name": "Status" }, "name": "Documented", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIRrzOIpp4lg" } ] } }, { "id": "PVTI_lADOA3TSm84A81yHzgcIWMs", "content": { "title": "The software is distributed via well-known services (e.g., pip or conda for Python)", "url": "https://github.com/euroargodev/software_guidelines/issues/53", "body": "The software installation for a user should not depend on the repository (except for very specific cases) but rather adopt the packages distribution services for a given environment:\n- Python software: [pypi](https://pypi.org/) (offical, default) and [conda](https://conda-forge.org/)\n- R software: [CRAN](https://cran.r-project.org/)\n- Matlab/Octave: [File Exchange](https://www.mathworks.com/matlabcentral/fileexchange)", "state": "OPEN", "assignees": { "nodes": [] } }, "fieldValues": { "nodes": [ { "repository": { "id": "R_kgDOPGM65g", "url": "https://github.com/euroargodev/software_guidelines" } }, { "labels": { "nodes": [ { "id": "LA_kwDOPGM65s8AAAACEX1fwg", "name": "guideline" } ] } }, { "text": "The software is distributed via well-known services (e.g., pip or conda for Python)", "id": "PVTFTV_lQDOA3TSm84A81yHzgcIWMvOFMEw1Q", "updatedAt": "2025-07-03T13:47:37Z", "creator": { "url": "https://github.com/gmaze" } }, { "field": { "name": "Skill level" }, "name": "3 - Intermediate", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIWMvOFMExpw" }, { "field": { "name": "Software Development Model (SDM)" }, "name": "Open-Source", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIWMvOFMExxA" }, { "field": { "name": "SDM requirement level" }, "name": "2 - Recommended", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIWMvOFMEyHQ" }, { "field": { "name": "Scope" }, "name": "General guideline", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIWMvOFMEyOg" }, { "field": { "name": "Project Aspects" }, "name": "Location", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIWMvOFQDsPA" }, { "field": { "name": "Status" }, "name": "Documented", "id": "PVTFSV_lQDOA3TSm84A81yHzgcIWMvOIppGZg" } ] } }, { "id": "PVTI_lADOA3TSm84A81yHzgcKxto", "content": { "title": "The software has a unique persistent identifier (e.g. DOI, SWHID)", "url": "https://github.com/euroargodev/software_guidelines/issues/49", "body": "### Description\n\nA unique persistent identifier (PID) ensures that your software can be unambiguously cited, referenced, and discovered over time, even if its location (e.g., repository URL) changes. \nPIDs like DOIs (Digital Object Identifiers) or SWHIDs (Software Heritage Identifiers) provide a stable, long-term link to your software, enabling proper credit, reproducibility, and compliance with the \"Findable\" FAIR4RS principle.\n\n**The unique persistent identifier for your software must be visible in the README and CITATION.cff files of your repository**. See guidelines #28 and #32.\n\n### Examples of Persistent Identifiers for Software\n\n#### **1. DOI (Digital Object Identifier)**\n\nWe recommend to use a DOI from a peer-reviewed article, typically from [JOSS, the Journal of Open Source Software](https://joss.theoj.org/) that is a developer friendly, open access journal for research software packages. \nArticle are just 2-to-3 pages long and relates uniquely to the description and rational of the software features. \nThe point is that to submit an article to JOSS, you will have to check a list of requirements that overlap significantly with the present guidelines. **Preparing a JOSS article is thus a nice and efficient method to adopt guidelines.**\n\nHere are a few example of JOSS papers wrt Argo:\n- Maze et al., (2020). argopy: A Python library for Argo ocean data analysis. Journal of Open Source Software, 5(53), 2425, https://doi.org/10.21105/joss.02425\n- Dunnington et al., (2021). argodata: An R interface to oceanographic data from the International Argo Program. Journal of Open Source Software, 6(68), 3659, https://doi.org/10.21105/joss.03659\n\nFor _beginners_ or _intermediate_ users (wrt software development), you can also get a DOI from:\n - **Zenodo**: Automatically assigns a DOI when you publish a software release (integrates with GitHub).\n - **Figshare**: Supports DOIs for software deposits.\n - **Crossref**: For formally published software papers.\n\n#### **2. SWHID (Software Heritage Identifier)**\n- **Where to get it**:\n - **Software Heritage (SWH)**: Automatically archives Git repositories and assigns SWHIDs.\n - Example SWHID: `swh:1:dir:3d568702945207a22ac35e038256e4be88d20f17`\n- **Use case**:\n - Ideal for tracking **specific versions** of code in Git repositories.\n - Example link: [https://archive.softwareheritage.org/swh:1:dir:3d568702945207a22ac35e038256e4be88d20f17](https://archive.softwareheritage.org/swh:1:dir:3d568702945207a22ac35e038256e4be88d20f17)\n\n#### **3. Other Identifiers**\n- **Research Software Directory (RSD) ID**: For software registered in the [Research Software Directory](https://research-software.nl/). Note that Euro-Argo is listed as an organisation on RSD (see [here](https://research-software-directory.org/organisations/euro-argo-eric)). Examples of Argo software listed on RSD:\n - https://research-software-directory.org/software/argopy\n- **GitHub Release Tag**: While not a PID, tags (e.g., `v1.0.0`) can be combined with DOIs/SWHIDs for versioning.\n\n", "state": "OPEN", "assignees": { "nodes": [] } }, "fieldValues": { "nodes": [ { "repository": { "id": "R_kgDOPGM65g", "url": "https://github.com/euroargodev/software_guidelines" } }, { "labels": { "nodes": [ { "id": "LA_kwDOPGM65s8AAAACEX1fwg", "name": "guideline" } ] } }, { "text": "The software has a unique persistent identifier (e.g. DOI, SWHID)", "id": "PVTFTV_lQDOA3TSm84A81yHzgcKxtrOFMiVJg", "updatedAt": "2026-05-13T12:04:01Z", "creator": { "url": "https://github.com/gmaze" } }, { "field": { "name": "Software Development Model (SDM)" }, "name": "Open-Source", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKxtrOFMifaA" }, { "field": { "name": "Skill level" }, "name": "3 - Intermediate", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKxtrOFMitng" }, { "field": { "name": "SDM requirement level" }, "name": "2 - Recommended", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKxtrOFMj1Ug" }, { "field": { "name": "Scope" }, "name": "General guideline", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKxtrOFMkGew" }, { "field": { "name": "FAIR4RS" }, "name": "Findable", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKxtrOFMkMyw" }, { "field": { "name": "Project Aspects" }, "name": "Documentation and Outreach", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKxtrOFQDrfg" }, { "field": { "name": "Status" }, "name": "Documented", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKxtrOIYxyDg" } ] } }, { "id": "PVTI_lADOA3TSm84A81yHzgcKxwc", "content": { "title": "There is a published paper associated with the software (e.g. JOSS article)", "url": "https://github.com/euroargodev/software_guidelines/issues/61", "body": "We recommend to write as soon as possible a peer-reviewed article describing the software.\n\nThis can be done on [JOSS, the Journal of Open Source Software](https://joss.theoj.org/) that is a developer friendly, open access journal for research software packages. \n\nArticle are just 2-to-3 pages long and relates uniquely to the description and rational of the software features. \n\nThe very nice _edge_ effect of publishing on JOSS is that the submission process is based on a check list of requirements that overlap significantly with the present guidelines. Hence, **preparing a JOSS article is a nice and efficient method to adopt guidelines.**\n\nAlso, in publishing to JOSS quite early in your development roadmap (all features do not have to be implemented) you will have a DOI for your software (see guideline #49 ) to be used to properly reference it (see guideline #32 ).\n\nHere are a few example of JOSS papers wrt Argo:\n- Maze et al., (2020). argopy: A Python library for Argo ocean data analysis. Journal of Open Source Software, 5(53), 2425, https://doi.org/10.21105/joss.02425\n- Dunnington et al., (2021). argodata: An R interface to oceanographic data from the International Argo Program. Journal of Open Source Software, 6(68), 3659, https://doi.org/10.21105/joss.03659\n", "state": "OPEN", "assignees": { "nodes": [] } }, "fieldValues": { "nodes": [ { "repository": { "id": "R_kgDOPGM65g", "url": "https://github.com/euroargodev/software_guidelines" } }, { "labels": { "nodes": [ { "id": "LA_kwDOPGM65s8AAAACEX1fwg", "name": "guideline" } ] } }, { "text": "There is a published paper associated with the software (e.g. JOSS article)", "id": "PVTFTV_lQDOA3TSm84A81yHzgcKxwfOFMiVsA", "updatedAt": "2025-07-03T13:48:20Z", "creator": { "url": "https://github.com/gmaze" } }, { "field": { "name": "Software Development Model (SDM)" }, "name": "Open-Source", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKxwfOFMifcw" }, { "field": { "name": "Skill level" }, "name": "3 - Intermediate", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKxwfOFMithg" }, { "field": { "name": "SDM requirement level" }, "name": "2 - Recommended", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKxwfOFMj-mg" }, { "field": { "name": "Scope" }, "name": "General guideline", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKxwfOFMj-pw" }, { "field": { "name": "Project Aspects" }, "name": "Documentation and Outreach", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKxwfOFQDzHw" }, { "field": { "name": "Status" }, "name": "Documented", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKxwfOIY9lAg" }, { "field": { "name": "FAIR4RS" }, "name": "Findable", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKxwfOIY9m3w" } ] } }, { "id": "PVTI_lADOA3TSm84A81yHzgcKx7s", "content": { "title": "Argo Data used by the software are traceable with a persistent identifier (Argo GDAC DOI or snapshot DOIs)", "url": "https://github.com/euroargodev/software_guidelines/issues/4", "body": "For reproducibility, the input Argo data used by the software must have a persistent identifier.\n\nTypically, of the software produces something out of Argo data, these data must be identifiable for other users to reproduce the results.\n\nHow to implement this guideline:\n- You can preserve the Argo DOI in the attributes of your data objects.", "state": "OPEN", "assignees": { "nodes": [] } }, "fieldValues": { "nodes": [ { "repository": { "id": "R_kgDOPGM65g", "url": "https://github.com/euroargodev/software_guidelines" } }, { "labels": { "nodes": [ { "id": "LA_kwDOPGM65s8AAAACEX1fwg", "name": "guideline" } ] } }, { "text": "Argo Data used by the software are traceable with a persistent identifier (Argo GDAC DOI or snapshot DOIs)", "id": "PVTFTV_lQDOA3TSm84A81yHzgcKx7vOFMiXpQ", "updatedAt": "2025-07-03T13:40:21Z", "creator": { "url": "https://github.com/gmaze" } }, { "field": { "name": "Software Development Model (SDM)" }, "name": "Open-Source", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKx7vOFMifhg" }, { "field": { "name": "Scope" }, "name": "Argo specific", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKx7vOFMigQw" }, { "field": { "name": "Skill level" }, "name": "2 - Beginner", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKx7vOFMitUg" }, { "field": { "name": "SDM requirement level" }, "name": "1 - Required", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKx7vOFMj1gA" }, { "field": { "name": "Argo FAIR tools" }, "name": "Findable", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKx7vOFMk7ig" }, { "field": { "name": "Project Aspects" }, "name": "Codebase", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKx7vOFQDfdw" }, { "field": { "name": "Status" }, "name": "Documented", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKx7vOIpWw_g" } ] } }, { "id": "PVTI_lADOA3TSm84A81yHzgcKx98", "content": { "title": "Non-Argo Data used by the software should be accessible online", "url": "https://github.com/euroargodev/software_guidelines/issues/18", "body": "", "state": "OPEN", "assignees": { "nodes": [] } }, "fieldValues": { "nodes": [ { "repository": { "id": "R_kgDOPGM65g", "url": "https://github.com/euroargodev/software_guidelines" } }, { "labels": { "nodes": [ { "id": "LA_kwDOPGM65s8AAAACEX1fwg", "name": "guideline" } ] } }, { "text": "Non-Argo Data used by the software should be accessible online", "id": "PVTFTV_lQDOA3TSm84A81yHzgcKx9_OFMiX_w", "updatedAt": "2026-01-19T11:16:03Z", "creator": { "url": "https://github.com/gmaze" } }, { "field": { "name": "Software Development Model (SDM)" }, "name": "Open-Source", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKx9_OFMiflA" }, { "field": { "name": "Skill level" }, "name": "1 - Novice", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKx9_OFMiqLw" }, { "field": { "name": "Scope" }, "name": "General guideline", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKx9_OFMi8Hg" }, { "field": { "name": "SDM requirement level" }, "name": "2 - Recommended", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKx9_OFMkGFg" }, { "field": { "name": "FAIR4RS" }, "name": "Interoperable", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKx9_OFMkweQ" }, { "field": { "name": "Project Aspects" }, "name": "Codebase", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKx9_OFQDdfA" }, { "field": { "name": "Status" }, "name": "To do", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKx9_OIqzz9A" } ] } }, { "id": "PVTI_lADOA3TSm84A81yHzgcKyLo", "content": { "title": "Data produced by the software respect Argo file formats and conventions wherever relevant (e.g. NetCDF CF-1.7)", "url": "https://github.com/euroargodev/software_guidelines/issues/9", "body": "", "state": "OPEN", "assignees": { "nodes": [] } }, "fieldValues": { "nodes": [ { "repository": { "id": "R_kgDOPGM65g", "url": "https://github.com/euroargodev/software_guidelines" } }, { "labels": { "nodes": [ { "id": "LA_kwDOPGM65s8AAAACEX1fwg", "name": "guideline" } ] } }, { "text": "Data produced by the software respect Argo file formats and conventions wherever relevant (e.g. NetCDF CF-1.7)", "id": "PVTFTV_lQDOA3TSm84A81yHzgcKyLrOFMiaVg", "updatedAt": "2025-07-03T13:43:32Z", "creator": { "url": "https://github.com/gmaze" } }, { "field": { "name": "Software Development Model (SDM)" }, "name": "Open-Source", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKyLrOFMifrw" }, { "field": { "name": "Scope" }, "name": "Argo specific", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKyLrOFMiilA" }, { "field": { "name": "Skill level" }, "name": "2 - Beginner", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKyLrOFMip5w" }, { "field": { "name": "SDM requirement level" }, "name": "1 - Required", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKyLrOFMjXqg" }, { "field": { "name": "FAIR4RS" }, "name": "Interoperable", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKyLrOFMk85g" }, { "field": { "name": "Argo FAIR tools" }, "name": "Findable", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKyLrOFMk9Sg" }, { "field": { "name": "Project Aspects" }, "name": "Codebase", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKyLrOFQDfxA" }, { "field": { "name": "Status" }, "name": "To do", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKyLrOIqz14g" } ] } }, { "id": "PVTI_lADOA3TSm84A81yHzgcKyPo", "content": { "title": "Metadata produced by the software follow Argo conventions (as in reference tables provided by the Argo vocabulary server)", "url": "https://github.com/euroargodev/software_guidelines/issues/16", "body": "This guideline requires that when the software produces some data, the metadata attached should follow the Argo conventions.\n\nFor instance, if a software produces a salinity variable, it should be named `PSAL`.\n\nThe Argo conventions and vocabulary are encoded in a collection of reference tables and associated values (and possible mapping between them). \n\nMore information on these data are available here: https://www.argodatamgt.org/ArgoVocabulary.html\n\nFollowing this guideline can be _hard coded_ in the codebase. However, the software should use the vocabulary server whenever relevant to ensure up-to-date information (see guideline #60 )\n\n", "state": "OPEN", "assignees": { "nodes": [] } }, "fieldValues": { "nodes": [ { "repository": { "id": "R_kgDOPGM65g", "url": "https://github.com/euroargodev/software_guidelines" } }, { "labels": { "nodes": [ { "id": "LA_kwDOPGM65s8AAAACEX1fwg", "name": "guideline" } ] } }, { "text": "Metadata produced by the software follow Argo conventions (as in reference tables provided by the Argo vocabulary server)", "id": "PVTFTV_lQDOA3TSm84A81yHzgcKyPrOFMibAA", "updatedAt": "2026-05-27T11:08:23Z", "creator": { "url": "https://github.com/gmaze" } }, { "field": { "name": "Software Development Model (SDM)" }, "name": "Open-Source", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKyPrOFMifuQ" }, { "field": { "name": "Scope" }, "name": "Argo specific", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKyPrOFMiixg" }, { "field": { "name": "Skill level" }, "name": "2 - Beginner", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKyPrOFMiocw" }, { "field": { "name": "SDM requirement level" }, "name": "2 - Recommended", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKyPrOFMkApw" }, { "field": { "name": "FAIR4RS" }, "name": "Interoperable", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKyPrOFMlANA" }, { "field": { "name": "Argo FAIR tools" }, "name": "Interoperable", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKyPrOFMlKJg" }, { "field": { "name": "Project Aspects" }, "name": "Codebase", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKyPrOFQDhmQ" }, { "field": { "name": "Status" }, "name": "Documented", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKyPrOIpT0eQ" } ] } }, { "id": "PVTI_lADOA3TSm84A81yHzgcKyj8", "content": { "title": "The Project uses English as a primary language (eg: in documentation, codebase)", "url": "https://github.com/euroargodev/software_guidelines/issues/41", "body": "This is a requirement to ensure from the beginning of a project that all the content will be available to the largest community.", "state": "OPEN", "assignees": { "nodes": [] } }, "fieldValues": { "nodes": [ { "repository": { "id": "R_kgDOPGM65g", "url": "https://github.com/euroargodev/software_guidelines" } }, { "labels": { "nodes": [ { "id": "LA_kwDOPGM65s8AAAACEX1fwg", "name": "guideline" }, { "id": "LA_kwDOPGM65s8AAAAClD93aA", "name": "auto-checked-guideline" } ] } }, { "text": "The Project uses English as a primary language (eg: in documentation, codebase)", "id": "PVTFTV_lQDOA3TSm84A81yHzgcKyj_OFMievw", "updatedAt": "2026-05-27T14:02:19Z", "creator": { "url": "https://github.com/gmaze" } }, { "field": { "name": "Software Development Model (SDM)" }, "name": "Open-Source", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKyj_OFMif5g" }, { "field": { "name": "Skill level" }, "name": "2 - Beginner", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKyj_OFMinsg" }, { "field": { "name": "SDM requirement level" }, "name": "2 - Recommended", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKyj_OFMiwCQ" }, { "field": { "name": "Scope" }, "name": "General guideline", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKyj_OFMi72A" }, { "field": { "name": "FAIR4RS" }, "name": "Findable", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKyj_OFMlY_A" }, { "field": { "name": "Project Aspects" }, "name": "Documentation and Outreach", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKyj_OFQDh-g" }, { "field": { "name": "Status" }, "name": "To do", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKyj_OIqz2-Q" } ] } }, { "id": "PVTI_lADOA3TSm84A81yHzgcKynA", "content": { "title": "Software training sessions are periodically organized", "url": "https://github.com/euroargodev/software_guidelines/issues/20", "body": "", "state": "OPEN", "assignees": { "nodes": [] } }, "fieldValues": { "nodes": [ { "repository": { "id": "R_kgDOPGM65g", "url": "https://github.com/euroargodev/software_guidelines" } }, { "labels": { "nodes": [ { "id": "LA_kwDOPGM65s8AAAACEX1fwg", "name": "guideline" } ] } }, { "text": "Software training sessions are periodically organized", "id": "PVTFTV_lQDOA3TSm84A81yHzgcKynDOFMifSQ", "updatedAt": "2025-07-03T13:44:37Z", "creator": { "url": "https://github.com/gmaze" } }, { "field": { "name": "Software Development Model (SDM)" }, "name": "Open-Source", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKynDOFMif8g" }, { "field": { "name": "Skill level" }, "name": "5 - Expert", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKynDOFMinfw" }, { "field": { "name": "SDM requirement level" }, "name": "2 - Recommended", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKynDOFMiv6w" }, { "field": { "name": "Scope" }, "name": "General guideline", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKynDOFMi8CA" }, { "field": { "name": "Project Aspects" }, "name": "Documentation and Outreach", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKynDOFQDysg" }, { "field": { "name": "Status" }, "name": "To do", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKynDOIqz3OA" } ] } }, { "id": "PVTI_lADOA3TSm84A81yHzgcKzJs", "content": { "title": "The methodology implemented by the software has been presented to an Argo community", "url": "https://github.com/euroargodev/software_guidelines/issues/26", "body": "The methodology, or key new feature proposed by the software, should be presented/discussed as soon as possible to an Argo-related group, from a community of Argo collaborators (eg: institution, lab., working group) to an national or international Argo body (eg: ADMT/AST working group).\n\nOnce the project and the codebase will have gained in maturity, the software should also be presented to the european or international Argo community (see guideline #50 ).", "state": "OPEN", "assignees": { "nodes": [] } }, "fieldValues": { "nodes": [ { "repository": { "id": "R_kgDOPGM65g", "url": "https://github.com/euroargodev/software_guidelines" } }, { "labels": { "nodes": [ { "id": "LA_kwDOPGM65s8AAAACEX1fwg", "name": "guideline" } ] } }, { "text": "The methodology implemented by the software has been presented to an Argo community", "id": "PVTFTV_lQDOA3TSm84A81yHzgcKzJvOFMilgQ", "updatedAt": "2026-05-26T20:08:33Z", "creator": { "url": "https://github.com/gmaze" } }, { "field": { "name": "Software Development Model (SDM)" }, "name": "Open-Source", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKzJvOFMil8w" }, { "field": { "name": "SDM requirement level" }, "name": "2 - Recommended", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKzJvOFMimSw" }, { "field": { "name": "Scope" }, "name": "Argo specific", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKzJvOFMimYA" }, { "field": { "name": "Skill level" }, "name": "3 - Intermediate", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKzJvOFMim6A" }, { "field": { "name": "Project Aspects" }, "name": "Argo compliance", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKzJvOFQDpNQ" }, { "field": { "name": "Status" }, "name": "Documented", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKzJvOInuP3A" } ] } }, { "id": "PVTI_lADOA3TSm84A81yHzgcKz4k", "content": { "title": "A version control tool is used to manage the codebase", "url": "https://github.com/euroargodev/software_guidelines/issues/1", "body": "\ud83c\udf89 As soon as you create a repository on Github, or any other gitlab-based platform, and that you upload your codebase to this repository, you are using a version control system, ie git.", "state": "OPEN", "assignees": { "nodes": [] } }, "fieldValues": { "nodes": [ { "repository": { "id": "R_kgDOPGM65g", "url": "https://github.com/euroargodev/software_guidelines" } }, { "labels": { "nodes": [ { "id": "LA_kwDOPGM65s8AAAACEX1fwg", "name": "guideline" }, { "id": "LA_kwDOPGM65s8AAAAClD93aA", "name": "auto-checked-guideline" } ] } }, { "text": "A version control tool is used to manage the codebase", "id": "PVTFTV_lQDOA3TSm84A81yHzgcKz4nOFMiuQw", "updatedAt": "2026-05-05T14:11:40Z", "creator": { "url": "https://github.com/gmaze" } }, { "field": { "name": "Software Development Model (SDM)" }, "name": "Collaborative", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKz4nOFMiuZQ" }, { "field": { "name": "Skill level" }, "name": "2 - Beginner", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKz4nOFMivOQ" }, { "field": { "name": "Scope" }, "name": "General guideline", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKz4nOFMivUg" }, { "field": { "name": "SDM requirement level" }, "name": "1 - Required", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKz4nOFMivoQ" }, { "field": { "name": "Project Aspects" }, "name": "Content", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKz4nOFNLsRQ" }, { "field": { "name": "Status" }, "name": "Documented", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKz4nOIPfl4A" } ] } }, { "id": "PVTI_lADOA3TSm84A81yHzgcKy1g", "content": { "title": "Argo Data accessed remotely by the software are retrieved from an official GDAC server (http, ftp, s3 servers)", "url": "https://github.com/euroargodev/software_guidelines/issues/3", "body": "", "state": "OPEN", "assignees": { "nodes": [] } }, "fieldValues": { "nodes": [ { "repository": { "id": "R_kgDOPGM65g", "url": "https://github.com/euroargodev/software_guidelines" } }, { "labels": { "nodes": [ { "id": "LA_kwDOPGM65s8AAAACEX1fwg", "name": "guideline" } ] } }, { "text": "Argo Data accessed remotely by the software are retrieved from an official GDAC server (http, ftp, s3 servers)", "id": "PVTFTV_lQDOA3TSm84A81yHzgcKy1jOFMih-w", "updatedAt": "2025-07-03T13:40:16Z", "creator": { "url": "https://github.com/gmaze" } }, { "field": { "name": "Software Development Model (SDM)" }, "name": "Open-Source", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKy1jOFMiiTA" }, { "field": { "name": "Scope" }, "name": "Argo specific", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKy1jOFMiiXA" }, { "field": { "name": "Skill level" }, "name": "2 - Beginner", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKy1jOFMiqaw" }, { "field": { "name": "SDM requirement level" }, "name": "1 - Required", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKy1jOFMj_cw" }, { "field": { "name": "Argo FAIR tools" }, "name": "Accessible", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKy1jOFMk7fw" }, { "field": { "name": "FAIR4RS" }, "name": "Reusable", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKy1jOFMmA2Q" }, { "field": { "name": "Project Aspects" }, "name": "Codebase", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKy1jOFQDfIQ" }, { "field": { "name": "Status" }, "name": "To do", "id": "PVTFSV_lQDOA3TSm84A81yHzgcKy1jOIqz1fw" } ] } }, { "id": "PVTI_lADOA3TSm84A81yHzgcK0QU", "content": { "title": "The project is hosted on an Argo-recognised web-based development platform", "url": "https://github.com/euroargodev/software_guidelines/issues/40", "body": "Such platforms include (but are not limited to):\n- https://github.com/euroargodev\n- https://github.com/OneArgo\n- https://github.com/ArgoDMQC\n- https://github.com/ArgoRTQC \n \nor any other project or institute level organisation:\n- https://gitlab.ifremer.fr/\n", "state": "OPEN", "assignees": { "nodes": [] } }, "fieldValues": { "nodes": [ { "repository": { "id": "R_kgDOPGM65g", "url": "https://github.com/euroargodev/software_guidelines" } }, { "labels": { "nodes": [ { "id": "LA_kwDOPGM65s8AAAACEX1fwg", "name": "guideline" }, { "id": "LA_kwDOPGM65s8AAAAClD93aA", "name": "auto-checked-guideline" } ] } }, { "text": "The project is hosted on an Argo-recognised web-based development platform", "id": "PVTFTV_lQDOA3TSm84A81yHzgcK0QXOFMiyPQ", "updatedAt": "2026-05-05T14:19:18Z", "creator": { "url": "https://github.com/gmaze" } }, { "field": { "name": "Skill level" }, "name": "2 - Beginner", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK0QXOFMizyA" }, { "field": { "name": "Software Development Model (SDM)" }, "name": "Collaborative", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK0QXOFMiz7g" }, { "field": { "name": "SDM requirement level" }, "name": "2 - Recommended", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK0QXOFMi0FQ" }, { "field": { "name": "Scope" }, "name": "Argo specific", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK0QXOFMi0Lg" }, { "field": { "name": "FAIR4RS" }, "name": "Accessible", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK0QXOFMkldA" }, { "field": { "name": "Project Aspects" }, "name": "Location", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK0QXOFNL1KA" }, { "field": { "name": "Status" }, "name": "Documented", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK0QXOIPgcbA" } ] } }, { "id": "PVTI_lADOA3TSm84A81yHzgcK1TQ", "content": { "title": "The project has multiple collaborators from outside the Argo community", "url": "https://github.com/euroargodev/software_guidelines/issues/30", "body": "", "state": "OPEN", "assignees": { "nodes": [] } }, "fieldValues": { "nodes": [ { "repository": { "id": "R_kgDOPGM65g", "url": "https://github.com/euroargodev/software_guidelines" } }, { "labels": { "nodes": [ { "id": "LA_kwDOPGM65s8AAAACEX1fwg", "name": "guideline" } ] } }, { "text": "The project has multiple collaborators from outside the Argo community", "id": "PVTFTV_lQDOA3TSm84A81yHzgcK1TTOFMi-Zw", "updatedAt": "2025-07-03T13:45:30Z", "creator": { "url": "https://github.com/gmaze" } }, { "field": { "name": "Skill level" }, "name": "4 - Advanced", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK1TTOFMi-tg" }, { "field": { "name": "Software Development Model (SDM)" }, "name": "Collaborative", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK1TTOFMi-xA" }, { "field": { "name": "SDM requirement level" }, "name": "3 - Best effort", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK1TTOFMi-2A" }, { "field": { "name": "Scope" }, "name": "Argo specific", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK1TTOFMi_Aw" }, { "field": { "name": "Project Aspects" }, "name": "Management", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK1TTOFQDxng" }, { "field": { "name": "Status" }, "name": "To do", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK1TTOIqz4rw" } ] } }, { "id": "PVTI_lADOA3TSm84A81yHzgcK1b0", "content": { "title": "The project has multiple collaborators from the Argo community", "url": "https://github.com/euroargodev/software_guidelines/issues/31", "body": "", "state": "OPEN", "assignees": { "nodes": [] } }, "fieldValues": { "nodes": [ { "repository": { "id": "R_kgDOPGM65g", "url": "https://github.com/euroargodev/software_guidelines" } }, { "labels": { "nodes": [ { "id": "LA_kwDOPGM65s8AAAACEX1fwg", "name": "guideline" } ] } }, { "text": "The project has multiple collaborators from the Argo community", "id": "PVTFTV_lQDOA3TSm84A81yHzgcK1b3OFMi_8A", "updatedAt": "2025-07-03T13:45:35Z", "creator": { "url": "https://github.com/gmaze" } }, { "field": { "name": "Skill level" }, "name": "3 - Intermediate", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK1b3OFMjALQ" }, { "field": { "name": "Software Development Model (SDM)" }, "name": "Collaborative", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK1b3OFMjAYw" }, { "field": { "name": "SDM requirement level" }, "name": "2 - Recommended", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK1b3OFMjAcg" }, { "field": { "name": "Scope" }, "name": "Argo specific", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK1b3OFMjAgA" }, { "field": { "name": "Project Aspects" }, "name": "Management", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK1b3OFQDqkg" }, { "field": { "name": "Status" }, "name": "To do", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK1b3OIqz5jg" } ] } }, { "id": "PVTI_lADOA3TSm84A81yHzgcK1hY", "content": { "title": "Each collaborator is clearly identified within the project", "url": "https://github.com/euroargodev/software_guidelines/issues/10", "body": "All collaborators should be listed in a dedicated section of the README file on the repository, possibly with their role description and an email or ORCID, see #36 \n\nNote that collaborators of the codebase are automatically listed by Github if they author a merged PR on the \"Contributors\" tab (eg: https://github.com/euroargodev/software_guidelines/graphs/contributors).\n\n", "state": "OPEN", "assignees": { "nodes": [] } }, "fieldValues": { "nodes": [ { "repository": { "id": "R_kgDOPGM65g", "url": "https://github.com/euroargodev/software_guidelines" } }, { "labels": { "nodes": [ { "id": "LA_kwDOPGM65s8AAAACEX1fwg", "name": "guideline" } ] } }, { "text": "Each collaborator is clearly identified within the project", "id": "PVTFTV_lQDOA3TSm84A81yHzgcK1hbOFMjA-g", "updatedAt": "2025-07-03T13:43:38Z", "creator": { "url": "https://github.com/gmaze" } }, { "field": { "name": "Skill level" }, "name": "3 - Intermediate", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK1hbOFMjBDg" }, { "field": { "name": "Software Development Model (SDM)" }, "name": "Collaborative", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK1hbOFMjBLA" }, { "field": { "name": "SDM requirement level" }, "name": "2 - Recommended", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK1hbOFMjBSQ" }, { "field": { "name": "Scope" }, "name": "General guideline", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK1hbOFMjBZg" }, { "field": { "name": "Project Aspects" }, "name": "Management", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK1hbOFQDoSg" }, { "field": { "name": "Status" }, "name": "Documented", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK1hbOIQ20Rg" } ] } }, { "id": "PVTI_lADOA3TSm84A81yHzgcK1oo", "content": { "title": "The project includes a document describing how to contribute", "url": "https://github.com/euroargodev/software_guidelines/issues/38", "body": "In order to help the community to contribute to the project, in a collaborative approach, a document should describe how to do so. In particular:\n- how to report bug/issues to the development and maintenance team, \n- how to suggest changes or new features, \n- what are the coding guidelines of the project to follow, \n- how to contribute to the documentation, \n- how to review PRs,\n- etc...\n\nThis can be done in the project documentation ([eg](https://argopy.readthedocs.io/en/latest/contributing.html)) or a simple CONTRIBUTING.md file at the root level of the repository. \n\n\u203c\ufe0f Note that even if the contributions guidelines are described in the documentation (eg: in [the documentation of the project](https://argopy.readthedocs.io/en/latest/contributing.html)), a CONTRIBUTING.md file must be associated on the repository to point toward that full description ([see Argopy eg](https://github.com/euroargodev/argopy/blob/master/CONTRIBUTING.md) (this is useful for code-quality checkers).\n\n## Examples\n\n### \"How to contribute\" section in the documentation\n\nCheck here: https://argopy.readthedocs.io/en/latest/contributing.html\n\n### CONTRIBUTING.md file\n\n```markdown\n# Contributing to [Project Name]\n\nThank you for your interest in contributing to **[Project Name]**! We welcome contributions from everyone, whether you're fixing bugs, improving documentation, or adding new features.\n\n## How to Contribute\n\n### 1. **Reporting Issues**\n- Use the [Issue Tracker](link-to-issues) to report bugs or request features.\n- **Before submitting an issue:**\n - Check existing issues to avoid duplicates.\n - Include a clear title, detailed description, and steps to reproduce the issue.\n - Add relevant labels (e.g., `bug`, `enhancement`, `documentation`).\n\n### 2. **Suggesting Changes**\n- Fork the repository and create a new branch for your changes.\n- Submit a **Pull Request (PR)** with:\n - A descriptive title and summary of changes.\n - Reference to any related issues (e.g., `Fixes #123`).\n - Clear commit messages (e.g., `feat: add NetCDF validation`).\n\n### 3. **Code Guidelines**\n- Follow the project\u2019s coding style (e.g., PEP 8 for Python).\n- Include **comments** for complex logic.\n- Add **unit tests** for new features or bug fixes.\n- Ensure all tests pass before submitting a PR.\n\n### 4. **Documentation**\n- Update documentation (e.g., `README.md`, docstrings) for any changes.\n- Add examples or tutorials if introducing new functionality.\n\n### 5. **Review Process**\n- All PRs require **at least one approval** from a maintainer.\n- Be responsive to feedback and iterate on your changes.\n\n### 6. **Community**\n- Join our [discussion forum](link) or [Slack/mailing list](link) for questions.\n- Attend our [monthly meetings](link) (if applicable).\n\n## License\nBy contributing, you agree your contributions will be licensed under **[Project License]** (e.g., EUPL v1.2).\n\n## Recognition\nAll contributors will be acknowledged in the project\u2019s release notes.\n\n---\n**Need help?** Contact us at [email] or open an issue.\n```", "state": "OPEN", "assignees": { "nodes": [] } }, "fieldValues": { "nodes": [ { "repository": { "id": "R_kgDOPGM65g", "url": "https://github.com/euroargodev/software_guidelines" } }, { "labels": { "nodes": [ { "id": "LA_kwDOPGM65s8AAAACEX1fwg", "name": "guideline" }, { "id": "LA_kwDOPGM65s8AAAAClD93aA", "name": "auto-checked-guideline" } ] } }, { "text": "The project includes a document describing how to contribute", "id": "PVTFTV_lQDOA3TSm84A81yHzgcK1orOFMjCbQ", "updatedAt": "2026-05-05T13:42:24Z", "creator": { "url": "https://github.com/gmaze" } }, { "field": { "name": "Skill level" }, "name": "4 - Advanced", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK1orOFMjCsA" }, { "field": { "name": "Software Development Model (SDM)" }, "name": "Collaborative", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK1orOFMjCww" }, { "field": { "name": "SDM requirement level" }, "name": "2 - Recommended", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK1orOFMjC0g" }, { "field": { "name": "Scope" }, "name": "General guideline", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK1orOFMjC4w" }, { "field": { "name": "Project Aspects" }, "name": "Content", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK1orOFQDvhQ" }, { "field": { "name": "Status" }, "name": "Documented", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK1orOIPeEWw" } ] } }, { "id": "PVTI_lADOA3TSm84A81yHzgcK2DQ", "content": { "title": "Issues or bugs are fully documented", "url": "https://github.com/euroargodev/software_guidelines/issues/15", "body": "If your codebase is hosted on a git-based web-platform (eg: Github, Gitlab), issues and bugs are easily managed through the \"issues\" tabs, see guideline #27 .\n\n**It is a good practice for issues and bugs to be as descriptive as possible.**\n\nThis will allow maintainers and other users to clearly identify the issue in order to address it or to identify another occurence.\n\n**Issue content**:\nWhen posting an issue, users should be invited to provide, at least:\n- a clear description of the issue, including which Argo component is related (eg: mission, files, vocabulary, etc...)\n- a reproducible example (eg: a code snippet for the community to reproduce the issue).\n\nThese information can be completed with: images, environment definitions, optional settings, etc...\n\n**Labels**:\nIt is also a good practice to use labels to appropriately tag new issues: this makes them easily searchable, sortable.\n\n[Labels are fully configurable](https://docs.github.com/en/issues/using-labels-and-milestones-to-track-work/managing-labels) on the repository and organisation levels. On the euroargodev platform, labels referring to Argo missions or components are already available by default and will appear on any repositories.\n\n**Templates**:\nOn Github it also possible to [create templates for issues](https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/configuring-issue-templates-for-your-repository), so that creating an issue can be done by indicating to users the expected information.\n\nExample taken from here:\nhttps://raw.githubusercontent.com/euroargodev/argopy/refs/heads/master/.github/ISSUE_TEMPLATE/bug_report.md\n\n```markdown\n---\nname: Bug report / Feature request\nabout: 'Post a problem or idea'\ntitle: ''\nlabels: ''\nassignees: ''\n\n---\n\n\n\n\n#### MCVE Code Sample\n\n\n``python\n# Your code here\n``\n\n#### Expected Output\n\n\n#### Problem Description\n\n\n\n#### Versions\n\n\n\n```\n\n", "state": "OPEN", "assignees": { "nodes": [] } }, "fieldValues": { "nodes": [ { "repository": { "id": "R_kgDOPGM65g", "url": "https://github.com/euroargodev/software_guidelines" } }, { "labels": { "nodes": [ { "id": "LA_kwDOPGM65s8AAAACEX1fwg", "name": "guideline" }, { "id": "LA_kwDOPGM65s8AAAAClD93aA", "name": "auto-checked-guideline" } ] } }, { "text": "Issues or bugs are fully documented", "id": "PVTFTV_lQDOA3TSm84A81yHzgcK2DTOFMjHfg", "updatedAt": "2026-05-27T06:53:26Z", "creator": { "url": "https://github.com/gmaze" } }, { "field": { "name": "Skill level" }, "name": "4 - Advanced", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK2DTOFMjHmA" }, { "field": { "name": "Software Development Model (SDM)" }, "name": "Collaborative", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK2DTOFMjHpw" }, { "field": { "name": "SDM requirement level" }, "name": "1 - Required", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK2DTOFMjHuw" }, { "field": { "name": "Scope" }, "name": "General guideline", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK2DTOFMjHzg" }, { "field": { "name": "Project Aspects" }, "name": "Content", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK2DTOFNL1AQ" }, { "field": { "name": "Status" }, "name": "Documented", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK2DTOIPf5EQ" } ] } }, { "id": "PVTI_lADOA3TSm84A81yHzgcK21A", "content": { "title": "Every significant change within the code is managed through a pull request", "url": "https://github.com/euroargodev/software_guidelines/issues/12", "body": "", "state": "OPEN", "assignees": { "nodes": [] } }, "fieldValues": { "nodes": [ { "repository": { "id": "R_kgDOPGM65g", "url": "https://github.com/euroargodev/software_guidelines" } }, { "labels": { "nodes": [ { "id": "LA_kwDOPGM65s8AAAACEX1fwg", "name": "guideline" }, { "id": "LA_kwDOPGM65s8AAAAClD93aA", "name": "auto-checked-guideline" } ] } }, { "text": "Every significant change within the code is managed through a pull request", "id": "PVTFTV_lQDOA3TSm84A81yHzgcK21DOFMjQYA", "updatedAt": "2026-05-27T15:18:35Z", "creator": { "url": "https://github.com/gmaze" } }, { "field": { "name": "Skill level" }, "name": "3 - Intermediate", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK21DOFMjQqA" }, { "field": { "name": "Software Development Model (SDM)" }, "name": "Collaborative", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK21DOFMjQzA" }, { "field": { "name": "SDM requirement level" }, "name": "1 - Required", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK21DOFMjQ4A" }, { "field": { "name": "Scope" }, "name": "General guideline", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK21DOFMjQ8A" }, { "field": { "name": "Project Aspects" }, "name": "Management", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK21DOFQDm1A" }, { "field": { "name": "Status" }, "name": "To do", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK21DOIqz2Zg" } ] } }, { "id": "PVTI_lADOA3TSm84A81yHzgcK25U", "content": { "title": "Each pull request is reviewed by at least one collaborator", "url": "https://github.com/euroargodev/software_guidelines/issues/11", "body": "", "state": "OPEN", "assignees": { "nodes": [] } }, "fieldValues": { "nodes": [ { "repository": { "id": "R_kgDOPGM65g", "url": "https://github.com/euroargodev/software_guidelines" } }, { "labels": { "nodes": [ { "id": "LA_kwDOPGM65s8AAAACEX1fwg", "name": "guideline" } ] } }, { "text": "Each pull request is reviewed by at least one collaborator", "id": "PVTFTV_lQDOA3TSm84A81yHzgcK25XOFMjRJw", "updatedAt": "2025-07-03T13:43:43Z", "creator": { "url": "https://github.com/gmaze" } }, { "field": { "name": "Skill level" }, "name": "4 - Advanced", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK25XOFMjRRg" }, { "field": { "name": "Software Development Model (SDM)" }, "name": "Collaborative", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK25XOFMjRVQ" }, { "field": { "name": "SDM requirement level" }, "name": "3 - Best effort", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK25XOFMjRaw" }, { "field": { "name": "Scope" }, "name": "General guideline", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK25XOFMjReQ" }, { "field": { "name": "Project Aspects" }, "name": "Management", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK25XOFQDxEA" }, { "field": { "name": "Status" }, "name": "To do", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK25XOIqz2Lg" } ] } }, { "id": "PVTI_lADOA3TSm84A81yHzgcK28U", "content": { "title": "Code review meetings are organized when needed", "url": "https://github.com/euroargodev/software_guidelines/issues/7", "body": "", "state": "OPEN", "assignees": { "nodes": [] } }, "fieldValues": { "nodes": [ { "repository": { "id": "R_kgDOPGM65g", "url": "https://github.com/euroargodev/software_guidelines" } }, { "labels": { "nodes": [ { "id": "LA_kwDOPGM65s8AAAACEX1fwg", "name": "guideline" } ] } }, { "text": "Code review meetings are organized when needed", "id": "PVTFTV_lQDOA3TSm84A81yHzgcK28XOFMjRvQ", "updatedAt": "2025-07-03T13:40:37Z", "creator": { "url": "https://github.com/gmaze" } }, { "field": { "name": "Skill level" }, "name": "4 - Advanced", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK28XOFMjR3g" }, { "field": { "name": "Software Development Model (SDM)" }, "name": "Collaborative", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK28XOFMjR7w" }, { "field": { "name": "SDM requirement level" }, "name": "3 - Best effort", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK28XOFMjR9w" }, { "field": { "name": "Scope" }, "name": "General guideline", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK28XOFMjSAg" }, { "field": { "name": "Project Aspects" }, "name": "Management", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK28XOFQDw3g" }, { "field": { "name": "Status" }, "name": "To do", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK28XOIqz1pA" } ] } }, { "id": "PVTI_lADOA3TSm84A81yHzgcK3Ao", "content": { "title": "Project meetings are periodically organized", "url": "https://github.com/euroargodev/software_guidelines/issues/19", "body": "", "state": "OPEN", "assignees": { "nodes": [] } }, "fieldValues": { "nodes": [ { "repository": { "id": "R_kgDOPGM65g", "url": "https://github.com/euroargodev/software_guidelines" } }, { "labels": { "nodes": [ { "id": "LA_kwDOPGM65s8AAAACEX1fwg", "name": "guideline" } ] } }, { "text": "Project meetings are periodically organized", "id": "PVTFTV_lQDOA3TSm84A81yHzgcK3ArOFMjSeQ", "updatedAt": "2025-07-03T13:44:33Z", "creator": { "url": "https://github.com/gmaze" } }, { "field": { "name": "Skill level" }, "name": "4 - Advanced", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK3ArOFMjTaQ" }, { "field": { "name": "Software Development Model (SDM)" }, "name": "Collaborative", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK3ArOFMjTcg" }, { "field": { "name": "SDM requirement level" }, "name": "2 - Recommended", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK3ArOFMjTkw" }, { "field": { "name": "Scope" }, "name": "General guideline", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK3ArOFMjTog" }, { "field": { "name": "Project Aspects" }, "name": "Management", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK3ArOFQDvHA" }, { "field": { "name": "Status" }, "name": "To do", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK3ArOIqz2sw" } ] } }, { "id": "PVTI_lADOA3TSm84A81yHzgcK3J0", "content": { "title": "User meetings or workshops are held and communicated within the Argo community", "url": "https://github.com/euroargodev/software_guidelines/issues/63", "body": "", "state": "OPEN", "assignees": { "nodes": [] } }, "fieldValues": { "nodes": [ { "repository": { "id": "R_kgDOPGM65g", "url": "https://github.com/euroargodev/software_guidelines" } }, { "labels": { "nodes": [ { "id": "LA_kwDOPGM65s8AAAACEX1fwg", "name": "guideline" } ] } }, { "text": "User meetings or workshops are held and communicated within the Argo community", "id": "PVTFTV_lQDOA3TSm84A81yHzgcK3J3OFMjULw", "updatedAt": "2025-07-03T13:48:39Z", "creator": { "url": "https://github.com/gmaze" } }, { "field": { "name": "Skill level" }, "name": "5 - Expert", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK3J3OFMjURQ" }, { "field": { "name": "Software Development Model (SDM)" }, "name": "Collaborative", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK3J3OFMjUbw" }, { "field": { "name": "SDM requirement level" }, "name": "3 - Best effort", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK3J3OFMjUfg" }, { "field": { "name": "Scope" }, "name": "Argo specific", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK3J3OFMjUjg" }, { "field": { "name": "Project Aspects" }, "name": "Argo compliance", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK3J3OFQDz4w" }, { "field": { "name": "Status" }, "name": "To do", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK3J3OIqz5Vg" } ] } }, { "id": "PVTI_lADOA3TSm84A81yHzgcK4IM", "content": { "title": "The software documentation includes the list of operating systems supported", "url": "https://github.com/euroargodev/software_guidelines/issues/46", "body": "What we mean here:\n\n- Possible operating system: Linux, Mac Os, Windows (eg: see also #62 )\n- A _supported_ os means that the software is successfully tested under this system, see guideline #62 and guideline #52 \n\nThis guideline help users determine if the software can be used under their OS of interest and comes as a complement to the environment definition: #44 \n\n### How to ?\n\nThis information can be displayed as badges or explicit text in the README file of a repository, see #36 .\n\nAn explicit text could be something like:\n> Pydox is continuously tested to work under most OS (Linux, Mac, Windows) and with python versions 3.11 and 3.12.\n\nIf the software supports all major operating system, the label `no arch` can be used is badges.\n\n\n", "state": "OPEN", "assignees": { "nodes": [] } }, "fieldValues": { "nodes": [ { "repository": { "id": "R_kgDOPGM65g", "url": "https://github.com/euroargodev/software_guidelines" } }, { "labels": { "nodes": [ { "id": "LA_kwDOPGM65s8AAAACEX1fwg", "name": "guideline" } ] } }, { "text": "The software documentation includes the list of operating systems supported", "id": "PVTFTV_lQDOA3TSm84A81yHzgcK4IPOFMjf2w", "updatedAt": "2026-01-19T13:01:48Z", "creator": { "url": "https://github.com/gmaze" } }, { "field": { "name": "Skill level" }, "name": "3 - Intermediate", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK4IPOFMjgGw" }, { "field": { "name": "Software Development Model (SDM)" }, "name": "Open-Source", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK4IPOFMjgOg" }, { "field": { "name": "SDM requirement level" }, "name": "1 - Required", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK4IPOFMjgTw" }, { "field": { "name": "Scope" }, "name": "General guideline", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK4IPOFMjj7g" }, { "field": { "name": "FAIR4RS" }, "name": "Reusable", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK4IPOFMlaDw" }, { "field": { "name": "Project Aspects" }, "name": "Documentation and Outreach", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK4IPOFQDnxg" }, { "field": { "name": "Status" }, "name": "Documented", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK4IPOIPQ_AQ" } ] } }, { "id": "PVTI_lADOA3TSm84A81yHzgcK4gM", "content": { "title": "The software documentation includes the definition of the execution environment(s) supported", "url": "https://github.com/euroargodev/software_guidelines/issues/44", "body": "Provides the list of environment(s) supported.\nHere the environment typically refers to the main language and its versions that a user can expect the software to be compatible with.\n\nEg:\n- for a Python library: Python 3.11, 3.12\n- for a Matlab package: Matlab >= 2023a\n\n\u26a0\ufe0f Note that this is related to the specification of the software dependencies: check guideline #57 \n\nThis guideline also comes as a complement to the operating system definition: #46 ", "state": "OPEN", "assignees": { "nodes": [] } }, "fieldValues": { "nodes": [ { "repository": { "id": "R_kgDOPGM65g", "url": "https://github.com/euroargodev/software_guidelines" } }, { "labels": { "nodes": [ { "id": "LA_kwDOPGM65s8AAAACEX1fwg", "name": "guideline" } ] } }, { "text": "The software documentation includes the definition of the execution environment(s) supported", "id": "PVTFTV_lQDOA3TSm84A81yHzgcK4gPOFMjk4Q", "updatedAt": "2026-05-26T12:13:09Z", "creator": { "url": "https://github.com/gmaze" } }, { "field": { "name": "Skill level" }, "name": "3 - Intermediate", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK4gPOFMjlEg" }, { "field": { "name": "Software Development Model (SDM)" }, "name": "Open-Source", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK4gPOFMjlXw" }, { "field": { "name": "SDM requirement level" }, "name": "2 - Recommended", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK4gPOFMjldg" }, { "field": { "name": "Scope" }, "name": "General guideline", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK4gPOFMjlhg" }, { "field": { "name": "FAIR4RS" }, "name": "Reusable", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK4gPOFMlZuQ" }, { "field": { "name": "Project Aspects" }, "name": "Documentation and Outreach", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK4gPOFQDrMw" }, { "field": { "name": "Status" }, "name": "Documented", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK4gPOIPRgCg" } ] } }, { "id": "PVTI_lADOA3TSm84A81yHzgcK5BY", "content": { "title": "The software documentation includes the list of changes to the codebase between each software releases", "url": "https://github.com/euroargodev/software_guidelines/issues/45", "body": "A change log is a structured, chronological record of all notable changes made to a software project, such as (but not limited to):\n- New features or functionality\n- Bug fixes\n- Breaking changes (changes that may disrupt existing workflows)\n- Deprecations (features removed or phased out)\n- Security updates\n- Performance improvements\n\n**Why is a change log Important?**\n1. Transparency: helps users track improvements and anticipate breaking changes that might affect their workflows.\n2. User Communication: acts as a communication tool between developers and users, ensuring everyone is aware of updates, fixes, and new features. It can also helps users decide whether to upgrade to a new version based on the changes included.\n3. Accountability: documents who made changes and why, which is useful for debugging, auditing, and collaboration. It also encourages developers to think critically about the impact of their changes.\n4. Reproducibility: supports scientific reproducibility by allowing researchers to identify which version of the software was used in a study and what changes were introduced since then.\n5. Compliance with best practices: it aligns with FAIR principles by making the software's history accessible and understandable.\n6. Collaboration.\n\n**To follow this guideline, you must, at least, provides a CHANGELOG.md file on the project repository**, at the repository root level. \n\nIf your change log is placed in your documentation ([eg](https://argopy.readthedocs.io/en/latest/whats-new.html)), we recommend to still add a \"CHANGELOG.md\" file ([eg](https://github.com/euroargodev/argopy/blob/master/CHANGELOG.md)) on the repository that will simply points toward the dedicated webpage. \n**This help automatic repository analysis to identify the change log (eg: https://euroargodev.github.io/Software-Evaluator/)**.\n\nWe recommend to look at https://keepachangelog.com/en/1.1.0 for more details on the content of such log files.\n\n### Examples\n\n```markdown\n# Changelog\n\nAll notable changes to this project will be documented in this file.\n\nThe format is based on [Keep a Changelog](https://keepachangelog.com/),\nand this project adheres to [Semantic Versioning](https://semver.org/).\n\n## [1.0.0] - 2026-05-21\n### Added\n- Initial release of the software.\n- Support for reading Argo NetCDF trajectory files.\n\n### Fixed\n- Fixed a bug in data validation for temperature values.\n\n## [0.9.0] - 2026-04-15\n### Added\n- Added support for CSV input files.\n```\n\n### Examples\n\nIf your software has a documentation, change log is typically located in a \"What's New?\" page (see [eg here](https://argopy.readthedocs.io/en/latest/whats-new.html)).", "state": "OPEN", "assignees": { "nodes": [] } }, "fieldValues": { "nodes": [ { "repository": { "id": "R_kgDOPGM65g", "url": "https://github.com/euroargodev/software_guidelines" } }, { "labels": { "nodes": [ { "id": "LA_kwDOPGM65s8AAAACEX1fwg", "name": "guideline" }, { "id": "LA_kwDOPGM65s8AAAAClD93aA", "name": "auto-checked-guideline" } ] } }, { "text": "The software documentation includes the list of changes to the codebase between each software releases", "id": "PVTFTV_lQDOA3TSm84A81yHzgcK5BbOFMjq-A", "updatedAt": "2025-07-03T13:46:51Z", "creator": { "url": "https://github.com/gmaze" } }, { "field": { "name": "Skill level" }, "name": "4 - Advanced", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK5BbOFMjrIw" }, { "field": { "name": "Scope" }, "name": "General guideline", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK5BbOFMjuhg" }, { "field": { "name": "Software Development Model (SDM)" }, "name": "Open-Source", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK5BbOFMjuqg" }, { "field": { "name": "SDM requirement level" }, "name": "2 - Recommended", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK5BbOFMjuug" }, { "field": { "name": "FAIR4RS" }, "name": "Reusable", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK5BbOFMlZ6Q" }, { "field": { "name": "Project Aspects" }, "name": "Documentation and Outreach", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK5BbOFQDvvQ" }, { "field": { "name": "Status" }, "name": "Documented", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK5BbOIkRxfA" } ] } }, { "id": "PVTI_lADOA3TSm84A81yHzgcK8Bk", "content": { "title": "The project clearly list all software identifiers in the README file (e.g. DOI, SWHID)", "url": "https://github.com/euroargodev/software_guidelines/issues/28", "body": "## Description\nIncluding software identifiers (see guideline #49 ) in the README serves as a centralized reference point for anyone interacting with the project, ensuring that critical metadata is immediately visible and accessible.\n\nBy doing so, users, contributors, and researchers can easily find, cite, and reference the software in their work. This practice enhances discoverability, reproducibility, and proper attribution, aligning with FAIR4RS principles.\n\nTo provide all relevant unique IDs in the README file of your repository, it is quite usual to insert *badges* at the top of the file, see examples below.\n\n### Examples\n\nThis markdown code for a DOI:\n```markdown\n[![DOI][joss-badge]][joss-link]\n\n[joss-badge]: https://img.shields.io/badge/DOI-10.21105%2Fjoss.02425-brightgreen\n[joss-link]: https://dx.doi.org/10.21105/joss.02425\n```\nwill render as:\n[![DOI][joss-badge]][joss-link]\n\n[joss-badge]: https://img.shields.io/badge/DOI-10.21105%2Fjoss.02425-brightgreen\n[joss-link]: https://dx.doi.org/10.21105/joss.02425\n\n\nThis markdown code for a SWHID:\n```markdown\n![SWHID](https://archive.softwareheritage.org/badge/directory/3d568702945207a22ac35e038256e4be88d20f17/)\n```\nwill render as:\n![SWHID](https://archive.softwareheritage.org/badge/directory/3d568702945207a22ac35e038256e4be88d20f17/)\n\n", "state": "OPEN", "assignees": { "nodes": [] } }, "fieldValues": { "nodes": [ { "repository": { "id": "R_kgDOPGM65g", "url": "https://github.com/euroargodev/software_guidelines" } }, { "labels": { "nodes": [ { "id": "LA_kwDOPGM65s8AAAACEX1fwg", "name": "guideline" } ] } }, { "text": "The project clearly list all software identifiers in the README file (e.g. DOI, SWHID)", "id": "PVTFTV_lQDOA3TSm84A81yHzgcK8BnOFMkQPg", "updatedAt": "2025-07-03T13:45:19Z", "creator": { "url": "https://github.com/gmaze" } }, { "field": { "name": "Skill level" }, "name": "3 - Intermediate", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK8BnOFMkQkw" }, { "field": { "name": "Software Development Model (SDM)" }, "name": "Open-Source", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK8BnOFMkQvw" }, { "field": { "name": "SDM requirement level" }, "name": "2 - Recommended", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK8BnOFMkRIg" }, { "field": { "name": "Scope" }, "name": "General guideline", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK8BnOFMkRUg" }, { "field": { "name": "FAIR4RS" }, "name": "Findable", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK8BnOFMkRbg" }, { "field": { "name": "Project Aspects" }, "name": "Documentation and Outreach", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK8BnOFQDpng" }, { "field": { "name": "Status" }, "name": "Documented", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK8BnOIY4mWw" } ] } }, { "id": "PVTI_lADOA3TSm84A81yHzgcK8mE", "content": { "title": "The software is registered in at least one public software registry (e.g., Zenodo, Seanoe, Research Software Directory)", "url": "https://github.com/euroargodev/software_guidelines/issues/55", "body": "", "state": "OPEN", "assignees": { "nodes": [] } }, "fieldValues": { "nodes": [ { "repository": { "id": "R_kgDOPGM65g", "url": "https://github.com/euroargodev/software_guidelines" } }, { "labels": { "nodes": [ { "id": "LA_kwDOPGM65s8AAAACEX1fwg", "name": "guideline" } ] } }, { "text": "The software is registered in at least one public software registry (e.g., Zenodo, Seanoe, Research Software Directory)", "id": "PVTFTV_lQDOA3TSm84A81yHzgcK8mHOFMkXHQ", "updatedAt": "2025-07-03T13:47:46Z", "creator": { "url": "https://github.com/gmaze" } }, { "field": { "name": "FAIR4RS" }, "name": "Findable", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK8mHOFMkXhA" }, { "field": { "name": "Software Development Model (SDM)" }, "name": "Open-Source", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK8mHOFMkXnA" }, { "field": { "name": "Scope" }, "name": "General guideline", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK8mHOFMkXxQ" }, { "field": { "name": "SDM requirement level" }, "name": "2 - Recommended", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK8mHOFMkYJA" }, { "field": { "name": "Skill level" }, "name": "3 - Intermediate", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK8mHOFMkYdg" }, { "field": { "name": "Project Aspects" }, "name": "Location", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK8mHOFQDs1Q" }, { "field": { "name": "Status" }, "name": "To do", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK8mHOIqz49w" } ] } }, { "id": "PVTI_lADOA3TSm84A81yHzgcK88g", "content": { "title": "The software is registered in an Argo software registry (AST or Argo-BGC dedicated webpages)", "url": "https://github.com/euroargodev/software_guidelines/issues/54", "body": "Such _registries_ are:\n- AST: https://argo.ucsd.edu/data/argo-software-tools/\n- Argo-BGC: https://biogeochemical-argo.org/tools-and-resources.php\n\nTo register your software on:\n- the AST website, you can fill in this form: https://docs.google.com/forms/d/e/1FAIpQLSc0auPM6B8PC25r36bpYOILoacLZZEpCA7ivBBu4YMd4QfkNw/viewform\n- the Argo-BGC website, send an email to contact@biogeochemical-argo.org", "state": "OPEN", "assignees": { "nodes": [] } }, "fieldValues": { "nodes": [ { "repository": { "id": "R_kgDOPGM65g", "url": "https://github.com/euroargodev/software_guidelines" } }, { "labels": { "nodes": [ { "id": "LA_kwDOPGM65s8AAAACEX1fwg", "name": "guideline" } ] } }, { "text": "The software is registered in an Argo software registry (AST or Argo-BGC dedicated webpages)", "id": "PVTFTV_lQDOA3TSm84A81yHzgcK88jOFMkbMg", "updatedAt": "2026-05-27T15:50:24Z", "creator": { "url": "https://github.com/gmaze" } }, { "field": { "name": "Skill level" }, "name": "3 - Intermediate", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK88jOFMkbag" }, { "field": { "name": "Software Development Model (SDM)" }, "name": "Open-Source", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK88jOFMkbhQ" }, { "field": { "name": "SDM requirement level" }, "name": "2 - Recommended", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK88jOFMkblg" }, { "field": { "name": "Scope" }, "name": "Argo specific", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK88jOFMkbpg" }, { "field": { "name": "FAIR4RS" }, "name": "Findable", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK88jOFMkbvg" }, { "field": { "name": "Project Aspects" }, "name": "Location", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK88jOFQDsmg" }, { "field": { "name": "Status" }, "name": "Documented", "id": "PVTFSV_lQDOA3TSm84A81yHzgcK88jOIiWDQg" } ] } }, { "id": "PVTI_lADOA3TSm84A81yHzgcLBE8", "content": { "title": "Data produced by the software preserve the Argo license (CC BY 4.0)", "url": "https://github.com/euroargodev/software_guidelines/issues/8", "body": "", "state": "OPEN", "assignees": { "nodes": [] } }, "fieldValues": { "nodes": [ { "repository": { "id": "R_kgDOPGM65g", "url": "https://github.com/euroargodev/software_guidelines" } }, { "labels": { "nodes": [ { "id": "LA_kwDOPGM65s8AAAACEX1fwg", "name": "guideline" } ] } }, { "text": "Data produced by the software preserve the Argo license (CC BY 4.0)", "id": "PVTFTV_lQDOA3TSm84A81yHzgcLBE_OFMlO3A", "updatedAt": "2025-07-03T13:40:41Z", "creator": { "url": "https://github.com/gmaze" } }, { "field": { "name": "Skill level" }, "name": "4 - Advanced", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLBE_OFMlPAA" }, { "field": { "name": "Software Development Model (SDM)" }, "name": "Open-Source", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLBE_OFMlPJw" }, { "field": { "name": "SDM requirement level" }, "name": "2 - Recommended", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLBE_OFMlPQg" }, { "field": { "name": "Scope" }, "name": "Argo specific", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLBE_OFMlPXQ" }, { "field": { "name": "Argo FAIR tools" }, "name": "Reusable", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLBE_OFMlPjQ" }, { "field": { "name": "Project Aspects" }, "name": "Argo compliance", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLBE_OFQDu6w" }, { "field": { "name": "Status" }, "name": "To do", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLBE_OIqz2Cw" } ] } }, { "id": "PVTI_lADOA3TSm84A81yHzgcLCh8", "content": { "title": "The project include a CITATION.cff file to indicate how to cite the software", "url": "https://github.com/euroargodev/software_guidelines/issues/32", "body": "### Description\nOnce you get a unique identifier for your software (see guideline #49 ), you should indicate to user how to properly cite your work. This is formally done with a *CITATION.cff* file, which is a machine readable file that typically seats at the root level of the repository. Github will recognize automatically it and use it to populate a \"Cite this repository\" tab on the right side menu (see example below).\n\nAll details about this file format can be found in here: https://citation-file-format.github.io\nAnd a very good online CITATION.cff creator is also provided at: https://citation-file-format.github.io/cff-initializer-javascript\n\n**In order to ease citation of your work and to make your software findable (FAIR4RS), we strongly recommend to also provide unique identifiers in the README file**. See guidelines #28 \n\n### Example\n\n```cff\ncff-version: 1.2.0\ntitle: argopy\nmessage: 'If you use this software, please cite it as below.'\ntype: software\nauthors:\n - family-names: Maze\n given-names: Guillaume\n orcid: 'https://orcid.org/0000-0001-7231-2095'\n - family-names: Balem\n given-names: Kevin\n orcid: 'https://orcid.org/0000-0002-4956-8698'\nidentifiers:\n - type: doi\n value: 10.21105/joss.02425\n description: DOI of the JOSS peer-reviewed article, preferred citation\n - type: swh\n value: 'swh:1:dir:3d568702945207a22ac35e038256e4be88d20f17'\n description: Software Heritage Identifier (SWHID)\n - type: doi\n value: 10.5281/zenodo.4010160\n description: Zenodo archives of the repository\nrepository-code: 'https://github.com/euroargodev/argopy'\nurl: 'https://github.com/euroargodev/argopy'\nrepository: 'https://argopy.readthedocs.io'\nabstract: A python library for Argo data beginners and experts\nlicense: EUPL-1.2\npreferred-citation:\n type: article\n authors:\n - family-names: Maze\n given-names: Guillaume\n orcid: 'https://orcid.org/0000-0001-7231-2095'\n - family-names: Balem\n given-names: Kevin\n orcid: 'https://orcid.org/0000-0002-4956-8698'\n doi: 10.21105/joss.02425\n journal: Journal of Open Source Software\n title: 'argopy: A Python library for Argo ocean data analysis'\n year: 2020\n volume: 5\n issue: 53\n page: 2425\n```\n\n### Misc\nAs a consequence, Github detect this file to populate the right hand-side menu:\n\n\"Image\"\n\n", "state": "OPEN", "assignees": { "nodes": [] } }, "fieldValues": { "nodes": [ { "repository": { "id": "R_kgDOPGM65g", "url": "https://github.com/euroargodev/software_guidelines" } }, { "labels": { "nodes": [ { "id": "LA_kwDOPGM65s8AAAACEX1fwg", "name": "guideline" }, { "id": "LA_kwDOPGM65s8AAAAClD93aA", "name": "auto-checked-guideline" } ] } }, { "text": "The project include a CITATION.cff file to indicate how to cite the software", "id": "PVTFTV_lQDOA3TSm84A81yHzgcLCh_OFMlgZw", "updatedAt": "2025-07-03T13:45:39Z", "creator": { "url": "https://github.com/gmaze" } }, { "field": { "name": "Skill level" }, "name": "3 - Intermediate", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLCh_OFMlg1Q" }, { "field": { "name": "Software Development Model (SDM)" }, "name": "Open-Source", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLCh_OFMlhIg" }, { "field": { "name": "SDM requirement level" }, "name": "2 - Recommended", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLCh_OFMlhRA" }, { "field": { "name": "Scope" }, "name": "General guideline", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLCh_OFMlhZQ" }, { "field": { "name": "FAIR4RS" }, "name": "Reusable", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLCh_OFMlhgw" }, { "field": { "name": "Project Aspects" }, "name": "Content", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLCh_OFQDvUw" }, { "field": { "name": "Status" }, "name": "Documented", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLCh_OIQ3DDQ" } ] } }, { "id": "PVTI_lADOA3TSm84A81yHzgcLC1c", "content": { "title": "The codebase is designed with modular components to facilitate reuse, testing and maintenance", "url": "https://github.com/euroargodev/software_guidelines/issues/24", "body": "\nthink about https://en.wikipedia.org/wiki/Separation_of_concerns\n> separation of concerns (SoC) is the design principle of organizing a [codebase](https://en.wikipedia.org/wiki/Codebase) into distinct sections \u2013 each addressing a single [concern](https://en.wikipedia.org/wiki/Concern_(computer_science)). SoC is the design principle that guides [modular programming](https://en.wikipedia.org/wiki/Modular_programming).\n\n## Examples\n\nCheck this resource: https://carpentries-incubator.github.io/better-research-software/05-code-structure.html", "state": "OPEN", "assignees": { "nodes": [] } }, "fieldValues": { "nodes": [ { "repository": { "id": "R_kgDOPGM65g", "url": "https://github.com/euroargodev/software_guidelines" } }, { "labels": { "nodes": [ { "id": "LA_kwDOPGM65s8AAAACEX1fwg", "name": "guideline" } ] } }, { "text": "The codebase is designed with modular components to facilitate reuse, testing and maintenance", "id": "PVTFTV_lQDOA3TSm84A81yHzgcLC1fOFMlkRg", "updatedAt": "2025-07-03T13:45:00Z", "creator": { "url": "https://github.com/gmaze" } }, { "field": { "name": "Skill level" }, "name": "3 - Intermediate", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLC1fOFMllUQ" }, { "field": { "name": "Software Development Model (SDM)" }, "name": "Open-Source", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLC1fOFMllmA" }, { "field": { "name": "SDM requirement level" }, "name": "2 - Recommended", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLC1fOFMllvA" }, { "field": { "name": "Scope" }, "name": "General guideline", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLC1fOFMll7A" }, { "field": { "name": "FAIR4RS" }, "name": "Reusable", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLC1fOFMlmmw" }, { "field": { "name": "Project Aspects" }, "name": "Codebase", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLC1fOFQDpAA" }, { "field": { "name": "Status" }, "name": "Documented", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLC1fOIQ85XQ" } ] } }, { "id": "PVTI_lADOA3TSm84A81yHzgcLDWA", "content": { "title": "The codebase is \"consistent\", i.e. it follows consistent naming conventions, coding styles, and design patterns throughout the software", "url": "https://github.com/euroargodev/software_guidelines/issues/23", "body": "", "state": "OPEN", "assignees": { "nodes": [] } }, "fieldValues": { "nodes": [ { "repository": { "id": "R_kgDOPGM65g", "url": "https://github.com/euroargodev/software_guidelines" } }, { "labels": { "nodes": [ { "id": "LA_kwDOPGM65s8AAAACEX1fwg", "name": "guideline" } ] } }, { "text": "The codebase is \"consistent\", i.e. it follows consistent naming conventions, coding styles, and design patterns throughout the software", "id": "PVTFTV_lQDOA3TSm84A81yHzgcLDWDOFMlqSA", "updatedAt": "2025-07-03T13:44:52Z", "creator": { "url": "https://github.com/gmaze" } }, { "field": { "name": "Skill level" }, "name": "2 - Beginner", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLDWDOFMlrdg" }, { "field": { "name": "Software Development Model (SDM)" }, "name": "Open-Source", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLDWDOFMlrlA" }, { "field": { "name": "SDM requirement level" }, "name": "2 - Recommended", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLDWDOFMlrrg" }, { "field": { "name": "Scope" }, "name": "General guideline", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLDWDOFMlrzQ" }, { "field": { "name": "Project Aspects" }, "name": "Codebase", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLDWDOFQDhvw" }, { "field": { "name": "Status" }, "name": "To do", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLDWDOIqz3hQ" } ] } }, { "id": "PVTI_lADOA3TSm84A81yHzgcLDvw", "content": { "title": "The codebase includes comments and is documented to explain the purpose and functionality of each module, class, and function", "url": "https://github.com/euroargodev/software_guidelines/issues/22", "body": "Why not get you started with this resource: https://carpentries-incubator.github.io/better-research-software/04-code-readability.html\n\nYou should then move on to the next level by following guideline #21 ", "state": "OPEN", "assignees": { "nodes": [] } }, "fieldValues": { "nodes": [ { "repository": { "id": "R_kgDOPGM65g", "url": "https://github.com/euroargodev/software_guidelines" } }, { "labels": { "nodes": [ { "id": "LA_kwDOPGM65s8AAAACEX1fwg", "name": "guideline" } ] } }, { "text": "The codebase includes comments and is documented to explain the purpose and functionality of each module, class, and function", "id": "PVTFTV_lQDOA3TSm84A81yHzgcLDvzOFMlvIA", "updatedAt": "2025-07-03T13:44:46Z", "creator": { "url": "https://github.com/gmaze" } }, { "field": { "name": "Skill level" }, "name": "1 - Novice", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLDvzOFMlvew" }, { "field": { "name": "Software Development Model (SDM)" }, "name": "Open-Source", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLDvzOFMlv4w" }, { "field": { "name": "SDM requirement level" }, "name": "1 - Required", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLDvzOFMlv-g" }, { "field": { "name": "Scope" }, "name": "General guideline", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLDvzOFMlwBg" }, { "field": { "name": "FAIR4RS" }, "name": "Reusable", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLDvzOFMlwRQ" }, { "field": { "name": "Project Aspects" }, "name": "Documentation and Outreach", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLDvzOFQDNuw" }, { "field": { "name": "Status" }, "name": "Documented", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLDvzOIkRtkA" } ] } }, { "id": "PVTI_lADOA3TSm84A81yHzgcLEP8", "content": { "title": "The project defines expected standards of conduct when engaging in the project (e.g. includes a CODE_OF_CONDUCT file to the codebase)", "url": "https://github.com/euroargodev/software_guidelines/issues/29", "body": "", "state": "OPEN", "assignees": { "nodes": [] } }, "fieldValues": { "nodes": [ { "repository": { "id": "R_kgDOPGM65g", "url": "https://github.com/euroargodev/software_guidelines" } }, { "labels": { "nodes": [ { "id": "LA_kwDOPGM65s8AAAACEX1fwg", "name": "guideline" } ] } }, { "text": "The project defines expected standards of conduct when engaging in the project (e.g. includes a CODE_OF_CONDUCT file to the codebase)", "id": "PVTFTV_lQDOA3TSm84A81yHzgcLEP_OFMl1TA", "updatedAt": "2025-07-03T13:45:24Z", "creator": { "url": "https://github.com/gmaze" } }, { "field": { "name": "Skill level" }, "name": "3 - Intermediate", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLEP_OFMl1uQ" }, { "field": { "name": "Software Development Model (SDM)" }, "name": "Collaborative", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLEP_OFMl3TA" }, { "field": { "name": "SDM requirement level" }, "name": "2 - Recommended", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLEP_OFMl3bQ" }, { "field": { "name": "Scope" }, "name": "General guideline", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLEP_OFMl3wQ" }, { "field": { "name": "Project Aspects" }, "name": "Content", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLEP_OFQDqMA" }, { "field": { "name": "Status" }, "name": "To do", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLEP_OIqz4cg" } ] } }, { "id": "PVTI_lADOA3TSm84A81yHzgcLE5g", "content": { "title": "Argo Data accessed locally by the software are assumed to be organised following the GDAC folder structure", "url": "https://github.com/euroargodev/software_guidelines/issues/2", "body": "This requirement is crucial for reproducibility and to foster broad use-cases while contributing to the robustness of the service.\n\nIf the software takes as input any of the GDAC files and support local data, the software must assume that local data are organised following the GDAC server structure.\n\nTo the opposite, the software must not depends on any random localisation of a GDAC file.\n\nTypically, the software must assumed that input files are in any of the following folders:\n\n```markdown\n./\n\u2502\n\u251c\u2500\u2500 ar_index_global_meta.txt\n\u251c\u2500\u2500 ...\n\u251c\u2500\u2500 readme_before_using_the_data.txt\n\u2502\n\u251c\u2500\u2500 dac/ # Data sorted by Data Assembly Centre (DAC)\n\u2502 \u251c\u2500\u2500 aoml/\n\u2502 \u251c\u2500\u2500 bodc/\n\u2502 \u2502 \u251c\u2500\u2500 *.nc\n\u2502 \u2502 \u2514\u2500\u2500 profiles/\n\u2502 \u2502 \u2514\u2500\u2500 **.nc\n\u2502 \u251c\u2500\u2500 ...\n\u2502 \u2514\u2500\u2500 nmdis/\n\u2502\n\u251c\u2500\u2500 geo/ # Data sorted by Ocean and Year/Month\n\u2502 \u251c\u2500\u2500 atlantic_ocean/\n\u2502 \u2502 \u251c\u2500\u2500 1997\n\u2502 \u2502 \u251c\u2500\u2500 ...\n\u2502 \u2502 \u2514\u2500\u2500 2026/\n\u2502 \u2502 \u251c\u2500\u2500 01/\n\u2502 \u2502 \u2502 \u251c\u2500\u2500 20260101_prof.nc\n\u2502 \u2502 \u2502 \u251c\u2500\u2500 ...\n\u2502 \u2502 \u2502 \u2514\u2500\u2500 20260131_prof.nc\n\u2502 \u2502 \u251c\u2500\u2500 ...\n\u2502 \u2502 \u2514\u2500\u2500 12/\n\u2502 \u251c\u2500\u2500 indian_ocean/\n\u2502 \u2502 \u2514\u2500\u2500 ...\n\u2502 \u2514\u2500\u2500 pacific_ocean/\n\u2502 \u2514\u2500\u2500 ...\n\u2502\n\u251c\u2500\u2500 aux/ # Auxiliary data sorted by DACs, free form\n\u2502 \u251c\u2500\u2500 aoml\n\u2502 \u251c\u2500\u2500 ...\n\u2502 \u251c\u2500\u2500 coriolis\n\u2502 \u2502 \u2514\u2500\u2500 /\n\u2502 \u2502 \u2514\u2500\u2500 _tech_aux.nc\n\u2502 \u2514\u2500\u2500 meds\n\u2502\n\u251c\u2500\u2500 etc/ # Other data\n\u2502 \u251c\u2500\u2500 argo_aux-profile_index.txt\n\u2502 \u251c\u2500\u2500 ...\n\u2502 \u2514\u2500\u2500 argo-index/\n\u2502 \u251c\u2500\u2500 argo_profile_detailled_index.txt\n\u2502 \u2514\u2500\u2500 ...\n\u2502\n\u2514\u2500\u2500 latest_data/ # Last 4 months data \n \u2514\u2500\u2500 _prof_<0/1/2/...>.nc\n```\n```", "state": "OPEN", "assignees": { "nodes": [] } }, "fieldValues": { "nodes": [ { "repository": { "id": "R_kgDOPGM65g", "url": "https://github.com/euroargodev/software_guidelines" } }, { "labels": { "nodes": [ { "id": "LA_kwDOPGM65s8AAAACEX1fwg", "name": "guideline" } ] } }, { "text": "Argo Data accessed locally by the software are assumed to be organised following the GDAC folder structure", "id": "PVTFTV_lQDOA3TSm84A81yHzgcLE5jOFMl9WQ", "updatedAt": "2025-07-03T13:39:32Z", "creator": { "url": "https://github.com/gmaze" } }, { "field": { "name": "Skill level" }, "name": "2 - Beginner", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLE5jOFMl9wQ" }, { "field": { "name": "Software Development Model (SDM)" }, "name": "Open-Source", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLE5jOFMl9zg" }, { "field": { "name": "SDM requirement level" }, "name": "2 - Recommended", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLE5jOFMl95A" }, { "field": { "name": "Scope" }, "name": "Argo specific", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLE5jOFMl-OA" }, { "field": { "name": "Argo FAIR tools" }, "name": "Accessible", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLE5jOFMl-ow" }, { "field": { "name": "FAIR4RS" }, "name": "Reusable", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLE5jOFMl-yw" }, { "field": { "name": "Project Aspects" }, "name": "Codebase", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLE5jOFQDhMg" }, { "field": { "name": "Status" }, "name": "Documented", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLE5jOInyvWA" } ] } }, { "id": "PVTI_lADOA3TSm84A81yHzgcLFsc", "content": { "title": "Argo Meta-Data accessed remotely by the software are retrieved from an official Argo sources (GDAC ftp, GDAC https, NVS, SparQL, STAC)", "url": "https://github.com/euroargodev/software_guidelines/issues/5", "body": "An \"official\" Argo source is a data provider that is one of the Argo DACs or GDAC, or any other data provider that presented an API to the ADMT (and didn't get a refusal).\n\nIn line with #16 , this is particularly neede for the vocabulary meta-data: they should be retrieved directly from the Argo vocabulary server (NVS) to ensure valid and up-to-date information.", "state": "OPEN", "assignees": { "nodes": [] } }, "fieldValues": { "nodes": [ { "repository": { "id": "R_kgDOPGM65g", "url": "https://github.com/euroargodev/software_guidelines" } }, { "labels": { "nodes": [ { "id": "LA_kwDOPGM65s8AAAACEX1fwg", "name": "guideline" } ] } }, { "text": "Argo Meta-Data accessed remotely by the software are retrieved from an official Argo sources (GDAC ftp, GDAC https, NVS, SparQL, STAC)", "id": "PVTFTV_lQDOA3TSm84A81yHzgcLFsfOFMmHHA", "updatedAt": "2025-07-03T13:40:27Z", "creator": { "url": "https://github.com/gmaze" } }, { "field": { "name": "Skill level" }, "name": "2 - Beginner", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLFsfOFMmHjA" }, { "field": { "name": "Software Development Model (SDM)" }, "name": "Open-Source", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLFsfOFMmHmg" }, { "field": { "name": "SDM requirement level" }, "name": "2 - Recommended", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLFsfOFMmHtg" }, { "field": { "name": "Scope" }, "name": "Argo specific", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLFsfOFMmHyg" }, { "field": { "name": "FAIR4RS" }, "name": "Reusable", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLFsfOFMmIHQ" }, { "field": { "name": "Argo FAIR tools" }, "name": "Reusable", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLFsfOFMmOfQ" }, { "field": { "name": "Project Aspects" }, "name": "Codebase", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLFsfOFQDheg" }, { "field": { "name": "Status" }, "name": "Documented", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLFsfOIpWQ7w" } ] } }, { "id": "PVTI_lADOA3TSm84A81yHzgcLHLg", "content": { "title": "The project allows any user to submit an issue or bug report", "url": "https://github.com/euroargodev/software_guidelines/issues/27", "body": "If your codebase is hosted on a git-based web-platform (eg: Github, Gitlab), issues and bugs are easily managed through the \"issues\" tabs.\n\nTo follow this guideline, you need to enable the \"issue\" feature. \n\nOn Github, this can be done in the Repository settings / Features / Issues:\n\n\"Image\"\n \n\n", "state": "OPEN", "assignees": { "nodes": [] } }, "fieldValues": { "nodes": [ { "repository": { "id": "R_kgDOPGM65g", "url": "https://github.com/euroargodev/software_guidelines" } }, { "labels": { "nodes": [ { "id": "LA_kwDOPGM65s8AAAACEX1fwg", "name": "guideline" }, { "id": "LA_kwDOPGM65s8AAAAClD93aA", "name": "auto-checked-guideline" } ] } }, { "text": "The project allows any user to submit an issue or bug report", "id": "PVTFTV_lQDOA3TSm84A81yHzgcLHLjOFMmZIg", "updatedAt": "2026-05-27T06:46:33Z", "creator": { "url": "https://github.com/gmaze" } }, { "field": { "name": "Skill level" }, "name": "3 - Intermediate", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLHLjOFMmZgQ" }, { "field": { "name": "Software Development Model (SDM)" }, "name": "Collaborative", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLHLjOFMmZjw" }, { "field": { "name": "SDM requirement level" }, "name": "1 - Required", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLHLjOFMmZmw" }, { "field": { "name": "Scope" }, "name": "General guideline", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLHLjOFMmZpw" }, { "field": { "name": "Project Aspects" }, "name": "Management", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLHLjOFQDndA" }, { "field": { "name": "Status" }, "name": "Documented", "id": "PVTFSV_lQDOA3TSm84A81yHzgcLHLjOIpCA1A" } ] } }, { "id": "PVTI_lADOA3TSm84A81yHzgcce-4", "content": { "title": "The project includes a basic description of what it does with or to the Argo dataset (e.g. read index file, calibrate salinity, plot trajectory, assess BGC variables,...)", "url": "https://github.com/euroargodev/software_guidelines/issues/66", "body": "Self-explanatory: the project must be specific about its relation with the Argo dataset.", "state": "OPEN", "assignees": { "nodes": [] } }, "fieldValues": { "nodes": [ { "repository": { "id": "R_kgDOPGM65g", "url": "https://github.com/euroargodev/software_guidelines" } }, { "labels": { "nodes": [ { "id": "LA_kwDOPGM65s8AAAACEX1fwg", "name": "guideline" } ] } }, { "field": { "name": "SDM requirement level" }, "name": "1 - Required", "id": "PVTFSV_lQDOA3TSm84A81yHzgcce-7OFQDYdg" }, { "text": "The project includes a basic description of what it does with or to the Argo dataset (e.g. read index file, calibrate salinity, plot trajectory, assess BGC variables,...)", "id": "PVTFTV_lQDOA3TSm84A81yHzgcce-7OFQDYdw", "updatedAt": "2025-07-10T09:24:28Z", "creator": { "url": "https://github.com/gmaze" } }, { "field": { "name": "Skill level" }, "name": "1 - Novice", "id": "PVTFSV_lQDOA3TSm84A81yHzgcce-7OFQDYiA" }, { "field": { "name": "Software Development Model (SDM)" }, "name": "Open-Source", "id": "PVTFSV_lQDOA3TSm84A81yHzgcce-7OFQDZoQ" }, { "field": { "name": "Scope" }, "name": "Argo specific", "id": "PVTFSV_lQDOA3TSm84A81yHzgcce-7OFQDaNg" }, { "field": { "name": "FAIR4RS" }, "name": "Findable", "id": "PVTFSV_lQDOA3TSm84A81yHzgcce-7OFQDaeQ" }, { "field": { "name": "Project Aspects" }, "name": "Documentation and Outreach", "id": "PVTFSV_lQDOA3TSm84A81yHzgcce-7OFQDa6w" }, { "field": { "name": "Status" }, "name": "Documented", "id": "PVTFSV_lQDOA3TSm84A81yHzgcce-7OIqY48A" } ] } }, { "id": "PVTI_lADOA3TSm84A81yHzgr-Sp0", "content": { "title": "The project uses public communication channels to publish news and updates", "url": "https://github.com/euroargodev/software_guidelines/issues/67", "body": "Even if new software releases are published and made available through dedicated systems (see #53 ), the project should further identify and make use of other communication channels (e.g. mailing list, newsletter, post on social networks, RSS feeds) to publish any news and updates to the project. This is important to keep the user base and Argo community up to date with the project.", "state": "OPEN", "assignees": { "nodes": [] } }, "fieldValues": { "nodes": [ { "repository": { "id": "R_kgDOPGM65g", "url": "https://github.com/euroargodev/software_guidelines" } }, { "labels": { "nodes": [ { "id": "LA_kwDOPGM65s8AAAACEX1fwg", "name": "guideline" } ] } }, { "text": "The project uses public communication channels to publish news and updates", "id": "PVTFTV_lQDOA3TSm84A81yHzgr-Sp3OIQ7M4g", "updatedAt": "2026-05-27T15:52:19Z", "creator": { "url": "https://github.com/gmaze" } }, { "field": { "name": "Skill level" }, "name": "4 - Advanced", "id": "PVTFSV_lQDOA3TSm84A81yHzgr-Sp3OIQ7N3Q" }, { "field": { "name": "Software Development Model (SDM)" }, "name": "Collaborative", "id": "PVTFSV_lQDOA3TSm84A81yHzgr-Sp3OIQ7Oww" }, { "field": { "name": "SDM requirement level" }, "name": "3 - Best effort", "id": "PVTFSV_lQDOA3TSm84A81yHzgr-Sp3OIQ7PDg" }, { "field": { "name": "Scope" }, "name": "General guideline", "id": "PVTFSV_lQDOA3TSm84A81yHzgr-Sp3OIQ7PXw" }, { "field": { "name": "Project Aspects" }, "name": "Documentation and Outreach", "id": "PVTFSV_lQDOA3TSm84A81yHzgr-Sp3OIQ7QRg" }, { "field": { "name": "Status" }, "name": "Documented", "id": "PVTFSV_lQDOA3TSm84A81yHzgr-Sp3OIppxOQ" } ] } }, { "id": "PVTI_lADOA3TSm84A81yHzgt0JQU", "content": { "title": "The project has a long-term sustainability plan", "url": "https://github.com/euroargodev/software_guidelines/issues/68", "body": "The software has one or more documents describing its plan for long-term maintenance, including funding sources, governance structure, and roles/responsibilities for contributors. \nThis plan ensures continuity of operations, regular updates, and alignment with Argo RI strategic goals. \nThe plan should be reviewed and possibly approved by the Argo governance bodies.", "state": "OPEN", "assignees": { "nodes": [] } }, "fieldValues": { "nodes": [ { "repository": { "id": "R_kgDOPGM65g", "url": "https://github.com/euroargodev/software_guidelines" } }, { "labels": { "nodes": [ { "id": "LA_kwDOPGM65s8AAAACEX1fwg", "name": "guideline" } ] } }, { "text": "The project has a long-term sustainability plan", "id": "PVTFTV_lQDOA3TSm84A81yHzgt0JQXOIn1IVA", "updatedAt": "2026-05-26T12:44:29Z", "creator": { "url": "https://github.com/gmaze" } }, { "field": { "name": "Skill level" }, "name": "5 - Expert", "id": "PVTFSV_lQDOA3TSm84A81yHzgt0JQXOIn_cYQ" }, { "field": { "name": "Software Development Model (SDM)" }, "name": "Collaborative", "id": "PVTFSV_lQDOA3TSm84A81yHzgt0JQXOIn_dkQ" }, { "field": { "name": "SDM requirement level" }, "name": "2 - Recommended", "id": "PVTFSV_lQDOA3TSm84A81yHzgt0JQXOIn_eFg" }, { "field": { "name": "Scope" }, "name": "Argo specific", "id": "PVTFSV_lQDOA3TSm84A81yHzgt0JQXOIn_efA" }, { "field": { "name": "Status" }, "name": "Documented", "id": "PVTFSV_lQDOA3TSm84A81yHzgt0JQXOIn_hDA" }, { "field": { "name": "Project Aspects" }, "name": "Management", "id": "PVTFSV_lQDOA3TSm84A81yHzgt0JQXOIoRYGw" } ] } } ]