From 7d5ab67e639e25996adc2514a68ead846b96a7ec Mon Sep 17 00:00:00 2001 From: svenvanderburg Date: Tue, 2 Apr 2024 16:27:30 +0200 Subject: [PATCH 01/17] Add unfinished draft for documentation module --- modules/demo/types-of-documentation.md | 29 ++++++++++++++++++++ modules/demo/which-documentation-exercise.md | 29 ++++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 modules/demo/types-of-documentation.md create mode 100644 modules/demo/which-documentation-exercise.md diff --git a/modules/demo/types-of-documentation.md b/modules/demo/types-of-documentation.md new file mode 100644 index 00000000..35267cec --- /dev/null +++ b/modules/demo/types-of-documentation.md @@ -0,0 +1,29 @@ +# Types of documentation and when to use them + +--- + +## Why document projects? + +- Quickly get users started +- Show how to use the software +- Explain concepts behind the software +- Describe internal machinery of a project + +## Types of documentation + +Documentation serves different goals, therefore there are different types: +- **Tutorials**: learning-oriented, allows the newcomer to get started +- **How-to guides**: goal-oriented, shows how to solve a specific problem +- **Explanation**: understanding-oriented, explains a concept +- **Reference**: information-oriented, describes the machinery + +## README file: (how-to guide) +- First thing a user/collaborator sees +- Contains basic setup instructions and information about the project + +## In-code documentation (reference) +- Technical documentation in the code +- For example ```# comments``` + +## API reference (reference) +- API reference: detailed description of how each function/class in the code can be used \ No newline at end of file diff --git a/modules/demo/which-documentation-exercise.md b/modules/demo/which-documentation-exercise.md new file mode 100644 index 00000000..ada850f6 --- /dev/null +++ b/modules/demo/which-documentation-exercise.md @@ -0,0 +1,29 @@ +# When to use which documentation? +Joanne is working on her research software 'WeatherMap' that analyses and summarizes measurements from weather stations. + +Here is a list of possible forms of documentation: +1. A basic README file containing: quick installation instructions, two lines explaining why the software was created, +two basic examples of how you can use the software. +2. A tutorial: 'Finding unusual patterns in daily average temperatures using WeatherMap'. +3. In-code documentation: Comments in her code that explain why she made certain implementation choices. +5. API reference: Detailed description of each function/class of WeatherMap. +6. Overview of components: A detailed overview of each component in the software +7. User documentation: Extensive documentation on how users can use each of the functionalities of WeatherMap +8. Naming: Logical names for functions, modules and classes so that it is immediately clear what the corresponding piece of code does + + +For the following scenarios, which forms of documentation would you suggest Joanne to incorporate in her project: + +## Scenario A: +Joanne just started her PhD and is the only one using WeatherMap to create results for her first paper. +She does not really care about anyone else using her software. + +## Scenario B: +Joanne works together with a few other PhD students in her research group on the software. +She wants to make it easier for other researchers in her group to also adopt the software, +and finds it important that when she moves on to a different job that the software can be still be used and improved in her absence. + +## Scenario C: +Joanne and her colleagues spend half of their time updating and improving WeatherMap. +They have a large community of users around the globe that depend on WeatherMap for their research. + From d5ca0086481ec3b33cb481aed05427d768f38320 Mon Sep 17 00:00:00 2001 From: Carlos Martinez Date: Wed, 12 Jun 2024 13:42:25 +0200 Subject: [PATCH 02/17] renaming demo to documentation --- modules/{demo => documentation}/types-of-documentation.md | 0 modules/{demo => documentation}/which-documentation-exercise.md | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename modules/{demo => documentation}/types-of-documentation.md (100%) rename modules/{demo => documentation}/which-documentation-exercise.md (100%) diff --git a/modules/demo/types-of-documentation.md b/modules/documentation/types-of-documentation.md similarity index 100% rename from modules/demo/types-of-documentation.md rename to modules/documentation/types-of-documentation.md diff --git a/modules/demo/which-documentation-exercise.md b/modules/documentation/which-documentation-exercise.md similarity index 100% rename from modules/demo/which-documentation-exercise.md rename to modules/documentation/which-documentation-exercise.md From 4efb80ceaefbccf65d7b7f765a2a77dc7efd3a4d Mon Sep 17 00:00:00 2001 From: raar1 Date: Wed, 7 Aug 2024 15:41:03 +0200 Subject: [PATCH 03/17] Rebase onto main and use more standard naming --- ...ise.md => exercise-which-documentation.md} | 0 modules/documentation/introduction.md | 12 ++++ modules/documentation/slides_documentation.md | 57 +++++++++++++++++++ 3 files changed, 69 insertions(+) rename modules/documentation/{which-documentation-exercise.md => exercise-which-documentation.md} (100%) create mode 100644 modules/documentation/introduction.md create mode 100644 modules/documentation/slides_documentation.md diff --git a/modules/documentation/which-documentation-exercise.md b/modules/documentation/exercise-which-documentation.md similarity index 100% rename from modules/documentation/which-documentation-exercise.md rename to modules/documentation/exercise-which-documentation.md diff --git a/modules/documentation/introduction.md b/modules/documentation/introduction.md new file mode 100644 index 00000000..1a7133ac --- /dev/null +++ b/modules/documentation/introduction.md @@ -0,0 +1,12 @@ + +# Reusability requires good documentation + +https://book.the-turing-way.org/reproducible-research/code-reuse/code-reuse-overview + +# README + +makeareadme.come + +# Popular tools foor documentation + +https://coderefinery.github.io/documentation/tools diff --git a/modules/documentation/slides_documentation.md b/modules/documentation/slides_documentation.md new file mode 100644 index 00000000..f5b294ea --- /dev/null +++ b/modules/documentation/slides_documentation.md @@ -0,0 +1,57 @@ + + +# Documentation + +--- + + + +## What is documentation? + +- Provides context for your work +- Allows your collaborators and future you to understand what has been done and why + +--- + + + +## Why document software? + +Make your software reusable: + +- A user should be able to run your software in the same way as you do now +- A user should be able to install your software +- A contributor should be able to add or improve code + +--- + + + +## Documentation types + +User documentation +- Purpose: What does the software do? +- How can it be used: provide examples + +Developer documentation +- How can your software be modified or extended? + +Deployment documentation +- Hardware and software requirements + +--- + + + +## Documentation formats + + + +- In-code: intended for contributors (comments, docstrings, ...) +- README: simple text file, first thing that users/collaborators see +- Websites, Wikis: + + + + + From 2448be9c79549727250e562a37e06aad694553dc Mon Sep 17 00:00:00 2001 From: raar1 Date: Wed, 7 Aug 2024 16:04:23 +0200 Subject: [PATCH 04/17] Add metadata for exercises --- modules/documentation/exercise-which-documentation.md | 6 ++++++ modules/documentation/{introduction.md => reading.md} | 0 2 files changed, 6 insertions(+) rename modules/documentation/{introduction.md => reading.md} (100%) diff --git a/modules/documentation/exercise-which-documentation.md b/modules/documentation/exercise-which-documentation.md index ada850f6..701d85cc 100644 --- a/modules/documentation/exercise-which-documentation.md +++ b/modules/documentation/exercise-which-documentation.md @@ -1,3 +1,9 @@ +--- +title: When to use which documentation? +type: exercise +order: 4 +--- + # When to use which documentation? Joanne is working on her research software 'WeatherMap' that analyses and summarizes measurements from weather stations. diff --git a/modules/documentation/introduction.md b/modules/documentation/reading.md similarity index 100% rename from modules/documentation/introduction.md rename to modules/documentation/reading.md From 7ea6692398259c64cc4a56e51498edb6fcb347ca Mon Sep 17 00:00:00 2001 From: raar1 Date: Wed, 7 Aug 2024 16:04:45 +0200 Subject: [PATCH 05/17] Move links in intro to further reading tab --- modules/documentation/reading.md | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/modules/documentation/reading.md b/modules/documentation/reading.md index 1a7133ac..c97edb0f 100644 --- a/modules/documentation/reading.md +++ b/modules/documentation/reading.md @@ -1,12 +1,17 @@ +--- +title: Further reading +type: reading +order: 5 +--- -# Reusability requires good documentation +## Reusability requires good documentation -https://book.the-turing-way.org/reproducible-research/code-reuse/code-reuse-overview + -# README +## README -makeareadme.come + -# Popular tools foor documentation +## Popular tools foor documentation -https://coderefinery.github.io/documentation/tools + From f23df2a352126c932b44dd571165e421f3807a44 Mon Sep 17 00:00:00 2001 From: raar1 Date: Wed, 7 Aug 2024 16:05:28 +0200 Subject: [PATCH 06/17] Add slides metadata and update slide separators --- modules/documentation/slides_documentation.md | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/modules/documentation/slides_documentation.md b/modules/documentation/slides_documentation.md index f5b294ea..63ee12b3 100644 --- a/modules/documentation/slides_documentation.md +++ b/modules/documentation/slides_documentation.md @@ -1,8 +1,14 @@ +--- +title: Documentation +type: slides +order: 1 +--- + # Documentation ---- +=== @@ -11,7 +17,7 @@ - Provides context for your work - Allows your collaborators and future you to understand what has been done and why ---- +=== @@ -23,7 +29,7 @@ Make your software reusable: - A user should be able to install your software - A contributor should be able to add or improve code ---- +=== @@ -39,7 +45,7 @@ Developer documentation Deployment documentation - Hardware and software requirements ---- +=== From ed0a90d734c43cf5c85d247bc2b0e783e5befc7f Mon Sep 17 00:00:00 2001 From: raar1 Date: Wed, 7 Aug 2024 16:05:46 +0200 Subject: [PATCH 07/17] Add metadata for reading lesson --- modules/documentation/types-of-documentation.md | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/modules/documentation/types-of-documentation.md b/modules/documentation/types-of-documentation.md index 35267cec..648fe9d3 100644 --- a/modules/documentation/types-of-documentation.md +++ b/modules/documentation/types-of-documentation.md @@ -1,6 +1,10 @@ -# Types of documentation and when to use them - --- +title: Types of documentation +type: reading +order: 3 +--- + +# Types of documentation and when to use them ## Why document projects? @@ -26,4 +30,4 @@ Documentation serves different goals, therefore there are different types: - For example ```# comments``` ## API reference (reference) -- API reference: detailed description of how each function/class in the code can be used \ No newline at end of file +- API reference: detailed description of how each function/class in the code can be used From d42886e6af9650c9d337753efcf5b0195dcd5d38 Mon Sep 17 00:00:00 2001 From: raar1 Date: Wed, 7 Aug 2024 16:06:19 +0200 Subject: [PATCH 08/17] Add metadata for the Documentation module --- modules/documentation/index.md | 9 +++++++++ 1 file changed, 9 insertions(+) create mode 100644 modules/documentation/index.md diff --git a/modules/documentation/index.md b/modules/documentation/index.md new file mode 100644 index 00000000..02bf024a --- /dev/null +++ b/modules/documentation/index.md @@ -0,0 +1,9 @@ +--- +title: Documentation +category: Development +order: 13 +abstract: Why should researchers document their code? +author: eScience Center +thumbnail: "thumbnail-fair-software.jpg" +visibility: visible +--- From acd0d022d05b554c419e2b821165140ad650ceb9 Mon Sep 17 00:00:00 2001 From: raar1 Date: Wed, 7 Aug 2024 16:06:47 +0200 Subject: [PATCH 09/17] Add draft learning objectives for Documentation module --- modules/documentation/info.md | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 modules/documentation/info.md diff --git a/modules/documentation/info.md b/modules/documentation/info.md new file mode 100644 index 00000000..b4c2d9d1 --- /dev/null +++ b/modules/documentation/info.md @@ -0,0 +1,10 @@ +--- +title: Learning objectives +type: info +order: 0 +--- + +Obtain the skills and knowledge necessary to address the following questions: +- What is code documentation? +- Why is documentation considered best practice in software development and how do I communicate that to researchers? +- What are some of the ways code is documented in practice? From 6aa670b1f2c37e3bd3547121affa4c4c3f021832 Mon Sep 17 00:00:00 2001 From: raar1 Date: Wed, 7 Aug 2024 16:18:23 +0200 Subject: [PATCH 10/17] Add thumbnail for documentation module --- modules/documentation/index.md | 2 +- .../media/thumbnail-documentation.jpg | Bin 0 -> 30843 bytes 2 files changed, 1 insertion(+), 1 deletion(-) create mode 100644 modules/documentation/media/thumbnail-documentation.jpg diff --git a/modules/documentation/index.md b/modules/documentation/index.md index 02bf024a..bed5c7cb 100644 --- a/modules/documentation/index.md +++ b/modules/documentation/index.md @@ -4,6 +4,6 @@ category: Development order: 13 abstract: Why should researchers document their code? author: eScience Center -thumbnail: "thumbnail-fair-software.jpg" +thumbnail: "thumbnail-documentation.jpg" visibility: visible --- diff --git a/modules/documentation/media/thumbnail-documentation.jpg b/modules/documentation/media/thumbnail-documentation.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1c57f8b7edac1371a2ed93deefe1c8eaab739982 GIT binary patch literal 30843 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

-V6OiVUL7O9X07+FiL-p&Cp=1 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 JT)u!=|Jf_+J~aRU literal 0 HcmV?d00001 From eb50b8e93a8f9b00cfaefcd81290d918ce08c5f7 Mon Sep 17 00:00:00 2001 From: meronvermaas <37903632+meronvermaas@users.noreply.github.com> Date: Mon, 8 Apr 2024 16:04:00 +0200 Subject: [PATCH 11/17] Create ex_suitability.md create first draft of exercise about documentation types and requirements --- modules/documentation/ex_suitability.md | 51 +++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 modules/documentation/ex_suitability.md diff --git a/modules/documentation/ex_suitability.md b/modules/documentation/ex_suitability.md new file mode 100644 index 00000000..49cd2665 --- /dev/null +++ b/modules/documentation/ex_suitability.md @@ -0,0 +1,51 @@ +# Exercise 1: What is suitable documentation? + +## Step 1: Choose a software project + +Choose a software project for this exercise, preferably one you are familiar with. + +If you don't have a project in mind, you can use one of the following: +- [Xenon](https://research-software-directory.org/software/xenon) +- [ESMValTool](https://research-software-directory.org/software/esmvaltool) +- [RS-DAT](https://research-software-directory.org/projects/rs-dat) +- [Haddock](https://research-software-directory.org/software/haddock3) +- [worcs](https://cjvanlissa.github.io/worcs/index.html) + +## Step 2: Discuss type(s) of documentation + +*Look at the software repository or page in the Research Software Directory* + +- Is documentation for this project important? Why? +- How would you describe a useful documentation for this project? +- How can you motivate your colleagues to contribute to the documentation? + +*What type of documentation seems appropriate to you?* + +- User documentation +- Developer documentation +- Deployment documentation + +*Which content would you include?* +The following (non-exhaustive) list of documentation items: + +- Purpose +- Authors +- License +- Recommended citation +- Copy-paste-able example to get started +- Dependencies and their versions or version ranges +- Installation instructions +- Tutorials covering key functionality +- Reference documentation (e.g. API) covering all functionality +- How you want to be asked questions (mailing list or forum or chat or issue tracker) +- Possibly a FAQ section +- Contribution guide + +# Exercise 2: Improve a README + +The README file is usually the first thing users/collaborators see when visiting your GitHub repository. +Use it to communicate important information about your project! For many smaller or mid-size projects, this is enough documentation. +It’s not that hard to make a basic one, and it’s easy to expand as needed. + +- https://www.makeareadme.com/ +- https://gist.github.com/jxson/1784669 From 482970563b18ba7bbe55b56afc0106b68bb5412c Mon Sep 17 00:00:00 2001 From: raar1 Date: Wed, 7 Aug 2024 16:25:16 +0200 Subject: [PATCH 12/17] Keep the intro --- modules/documentation/introduction.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 modules/documentation/introduction.md diff --git a/modules/documentation/introduction.md b/modules/documentation/introduction.md new file mode 100644 index 00000000..34abef0b --- /dev/null +++ b/modules/documentation/introduction.md @@ -0,0 +1,18 @@ + +# Reusability requires good documentation + +https://book.the-turing-way.org/reproducible-research/code-reuse/code-reuse-overview + +# Documentation types and formats + +user, development, deployment + +## README + +What is a README file, how to write a good README + +https://makeareadme.com + +## Popular tools foor building more complex documentation + +https://coderefinery.github.io/documentation/tools From b7fd5febd3484f7afd4672f54ee5ec63004eb289 Mon Sep 17 00:00:00 2001 From: Max Paulus Date: Tue, 9 Apr 2024 17:18:23 +0200 Subject: [PATCH 13/17] split exercise --- modules/documentation/ex_readme.md | 8 ++++++++ modules/documentation/ex_suitability.md | 12 ++---------- 2 files changed, 10 insertions(+), 10 deletions(-) create mode 100644 modules/documentation/ex_readme.md diff --git a/modules/documentation/ex_readme.md b/modules/documentation/ex_readme.md new file mode 100644 index 00000000..be7581e6 --- /dev/null +++ b/modules/documentation/ex_readme.md @@ -0,0 +1,8 @@ +# Improve a README + +The README file is usually the first thing users/collaborators see when visiting your GitHub repository. +Use it to communicate important information about your project! For many smaller or mid-size projects, this is enough documentation. +It’s not that hard to make a basic one, and it’s easy to expand as needed. + +- https://www.makeareadme.com/ +- https://gist.github.com/jxson/1784669 diff --git a/modules/documentation/ex_suitability.md b/modules/documentation/ex_suitability.md index 49cd2665..4f9ae8bc 100644 --- a/modules/documentation/ex_suitability.md +++ b/modules/documentation/ex_suitability.md @@ -1,4 +1,4 @@ -# Exercise 1: What is suitable documentation? +# What is suitable documentation? ## Step 1: Choose a software project @@ -6,6 +6,7 @@ Choose a software project for this exercise, preferably one you are familiar wit If you don't have a project in mind, you can use one of the following: - [Xenon](https://research-software-directory.org/software/xenon) +- [Democracy Topic Modelling](https://research-software-directory.org/software/democracy-topic-modelling) - [ESMValTool](https://research-software-directory.org/software/esmvaltool) - [RS-DAT](https://research-software-directory.org/projects/rs-dat) - [Haddock](https://research-software-directory.org/software/haddock3) @@ -40,12 +41,3 @@ The following (non-exhaustive) list of documentation items: - How you want to be asked questions (mailing list or forum or chat or issue tracker) - Possibly a FAQ section - Contribution guide - -# Exercise 2: Improve a README - -The README file is usually the first thing users/collaborators see when visiting your GitHub repository. -Use it to communicate important information about your project! For many smaller or mid-size projects, this is enough documentation. -It’s not that hard to make a basic one, and it’s easy to expand as needed. - -- https://www.makeareadme.com/ -- https://gist.github.com/jxson/1784669 From c81ec2df3c56b01dfafdd2916087526d7e03594d Mon Sep 17 00:00:00 2001 From: Robin Richardson Date: Wed, 7 Aug 2024 14:55:29 +0200 Subject: [PATCH 14/17] Update modules/documentation/ex_readme.md Co-authored-by: Carlos Martinez --- modules/documentation/ex_readme.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/documentation/ex_readme.md b/modules/documentation/ex_readme.md index be7581e6..e9c0ab91 100644 --- a/modules/documentation/ex_readme.md +++ b/modules/documentation/ex_readme.md @@ -1,4 +1,4 @@ -# Improve a README +# Include a README file The README file is usually the first thing users/collaborators see when visiting your GitHub repository. Use it to communicate important information about your project! For many smaller or mid-size projects, this is enough documentation. From 46b26904fadb3dc2aee660d7d7774d5cb1ae5043 Mon Sep 17 00:00:00 2001 From: raar1 Date: Wed, 7 Aug 2024 16:31:27 +0200 Subject: [PATCH 15/17] Add metadata for exercises --- modules/documentation/ex_readme.md | 7 +++++++ modules/documentation/ex_suitability.md | 6 ++++++ modules/documentation/introduction.md | 18 ------------------ modules/documentation/reading.md | 2 +- 4 files changed, 14 insertions(+), 19 deletions(-) delete mode 100644 modules/documentation/introduction.md diff --git a/modules/documentation/ex_readme.md b/modules/documentation/ex_readme.md index e9c0ab91..4f04b07a 100644 --- a/modules/documentation/ex_readme.md +++ b/modules/documentation/ex_readme.md @@ -1,3 +1,10 @@ +--- +title: Include a README file +type: exercise +order: 4 +--- + + # Include a README file The README file is usually the first thing users/collaborators see when visiting your GitHub repository. diff --git a/modules/documentation/ex_suitability.md b/modules/documentation/ex_suitability.md index 4f9ae8bc..1debce96 100644 --- a/modules/documentation/ex_suitability.md +++ b/modules/documentation/ex_suitability.md @@ -1,3 +1,9 @@ +--- +title: What is suitable documentation? +type: exercise +order: 4 +--- + # What is suitable documentation? ## Step 1: Choose a software project diff --git a/modules/documentation/introduction.md b/modules/documentation/introduction.md deleted file mode 100644 index 34abef0b..00000000 --- a/modules/documentation/introduction.md +++ /dev/null @@ -1,18 +0,0 @@ - -# Reusability requires good documentation - -https://book.the-turing-way.org/reproducible-research/code-reuse/code-reuse-overview - -# Documentation types and formats - -user, development, deployment - -## README - -What is a README file, how to write a good README - -https://makeareadme.com - -## Popular tools foor building more complex documentation - -https://coderefinery.github.io/documentation/tools diff --git a/modules/documentation/reading.md b/modules/documentation/reading.md index c97edb0f..df1ec404 100644 --- a/modules/documentation/reading.md +++ b/modules/documentation/reading.md @@ -12,6 +12,6 @@ order: 5 -## Popular tools foor documentation +## Popular tools foor building more complex documentation From e0adcb3a075f3fc0d055421864448fc7e8525525 Mon Sep 17 00:00:00 2001 From: raar1 Date: Wed, 7 Aug 2024 17:04:28 +0200 Subject: [PATCH 16/17] Add some slides from the digital-skills-slides. Therefore add Luisa and Barbara as authors for this slide deck. --- modules/documentation/slides_documentation.md | 158 +++++++++++++++++- 1 file changed, 157 insertions(+), 1 deletion(-) diff --git a/modules/documentation/slides_documentation.md b/modules/documentation/slides_documentation.md index 63ee12b3..24ce70da 100644 --- a/modules/documentation/slides_documentation.md +++ b/modules/documentation/slides_documentation.md @@ -2,6 +2,7 @@ title: Documentation type: slides order: 1 +author: Luisa Orozco, Barbara Vreede, Jaro Camphuijsen, Carlos Martinez, Max Paulus, Robin Richardson --- @@ -55,9 +56,164 @@ Deployment documentation - In-code: intended for contributors (comments, docstrings, ...) - README: simple text file, first thing that users/collaborators see -- Websites, Wikis: +- Websites, Wikis +=== + + + +## A good README file + ++ README file is first thing a user/collaborator sees ++ What should be included in README files? +

    +
  • ...
  • +
  • ...
  • +
  • ...
  • +
  • ...
  • +
  • ...
  • +
  • ...
  • +
  • ...
  • +
+ + +Note: ++ A descriptive project title ++ Motivation (why the project exists) and basics ++ Installation / How to setup ++ Copy-pasteable quick start code example ++ Usage reference (if not elsewhere) ++ Recommended citation if someone uses it ++ Other related tools ("see also") ++ Contact information for the developer(s) ++ License information ++ Contributing guidelines + +=== + + + +## Why write in-code documentation? + +In-code documentation: + ++ Makes code more understandable ++ Explains decisions we made + +=== + + + +## When **not** to use in-code documentation? + ++ When the code is self-explanatory ++ To replace good variable/function names ++ To replace version control ++ To keep old (zombie) code around + +=== + + + +## Readable code vs commented code + +```python= +# convert from degrees celsius to fahrenheit +def convert(d): + return d * 5 / 9 + 32 +``` +vs +```python= +def celsius_to_fahrenheit(degrees): + return degrees * 5 / 9 + 32 +``` + +=== + + + +## What makes a good comment? + +**Comment A** + +

+# Now we check if temperature is larger than -50:
+if temperature > -50:
+    print('do something')
+
+ +**Comment B** + +

+# We regard temperatures below -50 degrees as measurement errors
+if temperature > -50:
+    print('do something')
+
+How are these different? Which one do you prefer? +=== + + + +## Docstrings: a special kind of comment + +```python= +def celsius_to_fahrenheit(degrees): + """Convert degrees Celsius to degrees Fahrenheit.""" + return degrees * 5 / 9 + 32 +``` + +Why is this OK? + +Note: +Docstrings can be used to generate user documentation. +They are accessible outside the code. +They follow a standardized syntax. + +=== + + + +## In-code commenting: key points + ++ Explicit, descriptive naming already provides important documentation. ++ Comments should describe the why for your code, not the what. ++ Writing docstrings is an easy way to write documentation while you code, as they are accessible outside the code itself. + +=== + + + +## User/API documentation + ++ What if a README file is not enough? ++ How do I easily create user documentation? + +=== + + + +## Tools + ++ **Sphinx** (documentation generator) + - creates nicely-formatted HTML pages out of .md or .rst files + - programming language independent ++ **Github pages** (deploy your documentation) + - set up inside your GitHub repository + - automatically deploys your Sphinx-generated documentation + +=== + + +## Take-home message ++ Depending on the purpose and state of the project documentation needs to meet different criteria. ++ Documentation can take different shapes: + + Readable code + + In-code comments + + Docstrings + + README files + + Tutorials/notebooks ++ Documentation is a vital part of a project, and should be kept and created alongside the corresponding code. From 76105549f67e56bcb8efc2a761c2e7572db6857a Mon Sep 17 00:00:00 2001 From: raar1 Date: Wed, 7 Aug 2024 17:06:32 +0200 Subject: [PATCH 17/17] Remove examples Jaro didn't like --- modules/documentation/ex_suitability.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/modules/documentation/ex_suitability.md b/modules/documentation/ex_suitability.md index 1debce96..0909ce8d 100644 --- a/modules/documentation/ex_suitability.md +++ b/modules/documentation/ex_suitability.md @@ -11,10 +11,8 @@ order: 4 Choose a software project for this exercise, preferably one you are familiar with. If you don't have a project in mind, you can use one of the following: -- [Xenon](https://research-software-directory.org/software/xenon) - [Democracy Topic Modelling](https://research-software-directory.org/software/democracy-topic-modelling) - [ESMValTool](https://research-software-directory.org/software/esmvaltool) -- [RS-DAT](https://research-software-directory.org/projects/rs-dat) - [Haddock](https://research-software-directory.org/software/haddock3) - [worcs](https://cjvanlissa.github.io/worcs/index.html)