diff --git a/02_misc/README.md b/02_misc/README.md index 913b92b..7c96954 100644 --- a/02_misc/README.md +++ b/02_misc/README.md @@ -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) diff --git a/02_misc/floss_licenses_slides.md b/02_misc/floss_licenses_slides.md index 1dddc69..48479ae 100644 --- a/02_misc/floss_licenses_slides.md +++ b/02_misc/floss_licenses_slides.md @@ -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. --- @@ -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** --- diff --git a/02_misc/repository_layouts_slides.md b/02_misc/repository_layouts_slides.md new file mode 100644 index 0000000..1485535 --- /dev/null +++ b/02_misc/repository_layouts_slides.md @@ -0,0 +1,92 @@ +--- +type: slide +slideOptions: + transition: slide + width: 1400 + height: 900 + margin: 0.1 +--- + + + +# 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/) diff --git a/02_misc/versioning_slides.md b/02_misc/versioning_slides.md index 4e60812..4c9684c 100644 --- a/02_misc/versioning_slides.md +++ b/02_misc/versioning_slides.md @@ -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 ---