Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions 02_misc/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@ Miscellaneous
If there is some time left, it is always good to know more about these topics. Render all slides with [HedgeDoc](https://hedgedoc.org/), e.g. from [GWDG](https://pad.gwdg.de/).

- Technical writing: [slides](https://github.com/RSE-102/Lecture-Material/blob/main/02_misc/technical_writing_slides.md)
- Repository layout: [slides](https://github.com/RSE-102/Lecture-Material/blob/main/02_misc/repository_layouts_slides.md)
- Versioning: [slides](https://github.com/RSE-102/Lecture-Material/blob/main/02_misc/versioning_slides.md)
- FLOSS licenses: [slides](https://github.com/RSE-102/Lecture-Material/blob/main/02_misc/floss_licenses_slides.md)
- Linux fundamentals: [slides](https://github.com/RSE-102/Lecture-Material/blob/main/02_misc/linux_fundamentals_slides.md), [demo notes](https://github.com/RSE-102/Lecture-Material/blob/main/02_misc/linux_fundamentals_demo.md)
6 changes: 3 additions & 3 deletions 02_misc/floss_licenses_slides.md
Original file line number Diff line number Diff line change
Expand Up @@ -135,9 +135,9 @@ THE SOFTWARE IS PROVIDED "AS IS", ...
- Two main restrictions:
- (A) If you modify software and share it (e.g. sell binary), you need to publish the source code of the modification under the same license.
- (B) If you use software in larger works (e.g. through interfaces or data structures), restriction (A) holds for larger works as well.
- Example: DuMuX is GPLv3. Thus, if you publish a solver using DuMuX, it needs to be GPLv3 again.
- Example: DuMuX is GPLv3. Thus, if you publish a solver using DuMuX, it needs to be GPLv3 too.
- **GNU LGPL**: "L" stands for lesser (sometimes also for library)
- Only restriction A, not B
- Only restriction (A), not (B)
- Example: preCICE is LGPLv3. Thus, an adapter using preCICE can be made a commercial product.

---
Expand All @@ -151,7 +151,7 @@ THE SOFTWARE IS PROVIDED "AS IS", ...
- **-BY**: attribution -> you need to credit original creation
- **-SA**: share alike -> modifications need same license (similar to copyleft)
- **-ND**: no derivatives -> you are not allowed to modify
- **-NC**: non-commercial -> you cannot use in commercial context
- **-NC**: non-commercial -> you cannot use in commercial context (even in a nonprofit organization)
- Combine as you want, e.g. **CC-BY-NC**

---
Expand Down
92 changes: 92 additions & 0 deletions 02_misc/repository_layouts_slides.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
---
type: slide
slideOptions:
transition: slide
width: 1400
height: 900
margin: 0.1
---

<style>
.reveal strong {
font-weight: bold;
color: orange;
}
.reveal p {
text-align: left;
}
.reveal section h1 {
color: orange;
}
.reveal section h2 {
color: orange;
}
.reveal pre code {
font-family: 'Ubuntu Mono';
color: orange;
}
.reveal section img {
background:none;
border:none;
box-shadow:none;
}
</style>

# Repository layouts

---

## Motivation

- Repositories contain source code, documentation, CI/CD config files, test files, author lists, etc.
- You want to divide the project structure to simplify CD workflows and packaging.

---

## Python src layout

```
mypackage/
├── docs/
│ ├── conf.py
│ └── index.rst
├── src/
│ └── mypackage/
│ ├── __init__.py
│ └── main.py
├── tests/
│ └── integration_test.py
├── CHANGELOG.md
├── LICENSE.md
├── README.md
└── pyproject.toml
```

---

## Pitchfork layout

```
myapp/
├── docs/
│ ├── Doxyfile
│ └── main.dox
├── include/
│ └── myapp/
│ └── api.h
├── src/
│ ├── core.h
│ └── core.c
├── tests/
│ └── unit_test.c
├── CHANGELOG.md
├── LICENSE.md
└── README.md
```

---

## Further Reading

- [Pitchfork](https://github.com/vector-of-bool/pitchfork)
- Python Packaging User Guide's [src layout vs flat layout](https://packaging.python.org/en/latest/discussions/src-layout-vs-flat-layout/)
13 changes: 8 additions & 5 deletions 02_misc/versioning_slides.md
Original file line number Diff line number Diff line change
Expand Up @@ -52,21 +52,24 @@ slideOptions:
- Semantic versioning
- [Linux Kernel](https://kernel.org/): 5.16.5 (Release), 5.17-rc2 (Preview)
- [PEP 440](https://www.python.org/dev/peps/pep-0440/)
- [pyMOR](https://pymor.org/): 2022.2.0
- [pyMOR](https://pymor.org/): 2025.2.0
- Calendar versioning
- [Ubuntu](ubuntu.com/): 22.10 (Latest), 22.04 (LTS)
- [OpenFOAM](https://www.openfoam.com/current-release) (`.com`): v2112
- [Ubuntu](ubuntu.com/): 25.10 (Latest), 24.04 (LTS)
- [OpenFOAM](https://www.openfoam.com/current-release) (`.com`): v2512
- Others
- [TeX](https://tug.org/): 3.141592653 (Latest), 3.14159265 (Ubuntu 20.04)
- [OpenFOAM](https://openfoam.org/release/) (`.org`): 10 (Latest), but "always releasable" (date patches, e.g. `20221128`)
- [OpenFOAM](https://openfoam.org/release/) (`.org`): 13 (Latest), but "always releasable" (date patches, e.g. `20221128`)

---

## Versioning Standards

- [Semantic Versioning](https://semver.org/)
- [Calendar Versioning](https://calver.org/)
- useful to coordinate related projects
- [PEP 440](https://www.python.org/dev/peps/pep-0440/)
- flexible versioning with metadata
- [Semantic Versioning](https://semver.org/)
- versioning with compatibility promises

---

Expand Down