Skip to content

Commit e7651c1

Browse files
committed
Merge branch 'main' of github.com:SS-NES/meta-template
2 parents 55184f1 + 022d0d4 commit e7651c1

18 files changed

Lines changed: 506 additions & 53 deletions

README.md

Lines changed: 30 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,56 +1,65 @@
1-
[![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)
2-
[![Copier](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/copier-org/copier/master/img/badge/badge-black.json)](https://github.com/copier-org/copier)
1+
# Meta-Template for Research Software
32

4-
# Research Software Meta Template
3+
A tool that helps **template creators** to create **software templates** for research software, and adopt best practices on sustainable software for Natural and Engineering Sciences. It provides a way to align best practices and reduce maintainance efforts across organisations, while allowing organisation to customize software templates to their needs.
4+
5+
If you came here looking for a template to start your own research software project, you check out the [Software Template Registry](REGISTRY.md) for a list of software templates that are using the *meta-template*.
6+
7+
| [FAIR-Software Recommendations](https://fair-software.nl) | Badges|
8+
| ------------------------------------------------------------ | ------------------------------------------------------------ |
9+
| 1. Code Repository | [![GitHub Badge](https://img.shields.io/github/v/release/SS-NES/meta-template?color=blue)](https://github.com/SS-NES/meta-template/releases/latest) |
10+
| 2. License | [![License](https://img.shields.io/badge/License-Apache_2.0-blue.svg)](https://opensource.org/licenses/Apache-2.0) |
11+
| 3. Community Registry | [![Copier](https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/copier-org/copier/master/img/badge/badge-black.json)](https://github.com/copier-org/copier)|
512

6-
A toolkit to start **software templates** for research software and adopt best practices on sustainable software for Natural and Engineering Sciences. It provides a way to align best practices and reduce maintainance efforts across
7-
organisations, while allowing organisation to customize software templates to their needs.
813

914
## Why?
1015

11-
Because every organisation wants to produce high-quality research software by adopting common best practices, and we acknowledge that every organisation has practices and workflows that are only important to them. Therefore, we facilitate adopting common best practices for research software development through a highly customisable software template.
16+
Because research organisations can produce high-quality research software by adopting common best practices, and we acknowledge that every organisation has practices and workflows that are only important to them. Therefore, we facilitate the adopting of common best practices for research software development through a highly customisable tool that allows organisations to create their own software templates, while aligning with the best practices of the Natural and Engineering Sciences community in the Netherlands.
1217

1318
## Features
1419

1520
- Federation of best practices for research software project. Align with the best practice for research software development of the Natural and Engineering Science community in the Netherlands.
16-
- Reduce maintainabily. Enhancements to the meta-template can be incoorporated with ease in templating projects which reduces the time maintainers of templating projects have to spend in updating their templates.
21+
- Reduce maintainabily. Enhancements to the meta-template can be incoorporated with ease in templating projects which reduces the time *template creators* need to maintain and updater templating projects.
1722
- Flexibility. Generate templating projects for any programming languates and customize them for every use case.
1823
- A curated list of open source licenses for your templating projects.
1924

2025
## Key Concepts
2126

2227
- **Meta Template:** a template to start a software templating project. This repository. It contains common features that are shared among software templating projects.
23-
- **Software Template:** a template for research software projects generated using the *meta template*. It may contain custome features for a particular type of software project. For example, features specific to programming languages (Python, R, Julia, etc.) or features specific to relevant use cases (Jupyter notebooks, organization A, organization B).
24-
- **Software Project:** the software schaffolding generated using a *software template*. It contains common features (from the *meta template*) and custom features (from its parent *software tempalte*).
28+
- **Software Template:** a template for research software projects generated using the *meta template*. It may contain common and custom features for a particular type of software project. For example, features specific to programming languages (Python, R, Julia, etc.) or features specific to relevant use cases (Jupyter notebooks, organization A, organization B).
29+
- **Software Project:** the software schaffolding generated using a *software template*. It contains files, directories and scaffolding code to start developing research software.
30+
- **Template Creator:** a person or team that creates a *software template* using the *meta-template*. Template creators are responsible for maintaining the software template and keeping it up to date with the latest best practices provided by the **meta-template**.
31+
- **Template User:** a person or team that uses a *software template* to start a new research software project. Template users decide when to update their research software projects with the latest best practices provided by a *software template*.
2532

26-
## How to Use it
33+
## How to Create a Software Template
34+
To create a *software template* using the *meta-template*, you need to follow these steps:
2735

2836
1. Install [Copier](https://copier.readthedocs.io) into your development environment.
2937

30-
2. Start a new *software template*, rendered the latest version of this repository. This will generate boiler plate code that can be adopted for your particular uses case.
38+
2. Start a new *software template* by rendering the latest version of this repository. This will generate boiler plate code that can be adapted for your particular use case.
3139

3240
```shell
33-
copier copy https://github.com/SS-NES/meta-template.git <path/to/templating-project>
41+
copier copy gh:SS-NES/meta-template.git <path/to/templating-project>
3442
```
3543

36-
3. Make your *software template* a Git repository. Copier uses Git to version software tempaltes, therefore, a directory containing a *software template* must be a Git repository.
44+
1. Make your *software template* a Git repository. Copier uses Git to track update, therefore, a directory containing a *software template* must be a Git repository.
3745

3846
```shell
3947
cd <path/to/project-directory>
4048
git init
4149
git add .
4250
git commit -m 'initial commit'
4351
```
44-
4. Customize your template project. Consult the [Copier Documentation](https://copier.readthedocs.io/en/stable/creating/) and the [Jinja2 Documentation](https://jinja.palletsprojects.com/en/stable/templates/).
4552

46-
5. To test if your software template is producing the results you want, your can render it into a *software project*. Use the `--vsc-ref HEAD` option to rendere all the changes you have made.
53+
1. Customize your template project. Consult the [Copier Documentation](https://copier.readthedocs.io/en/stable/creating/) and the [Jinja2 Documentation](https://jinja.palletsprojects.com/en/stable/templates/).
54+
55+
2. To test if your software template is producing the results you want, your can render it into a *software project*. Use the `--vsc-ref HEAD` option to rendere all the changes you have made.
4756

4857
```shell
4958
# from a local Git repository
5059
copier copy --vcs-ref HEAD <path/to/your-software-template> <path/to/new-project/>
5160

5261
# from a remote Git repository
53-
copier copy https://github.com/foo/<your-template>.git <path/to/new-project/>
62+
copier copy gh:foo/<your-template>.git <path/to/new-project/>
5463
```
5564

5665
> [!NOTE]
@@ -85,4 +94,8 @@ You can contribute to this initiative in two ways:
8594

8695
## Acknowledgements
8796

88-
- This template was inspired by [Serious Scaffold Python](https://github.com/serious-scaffold/ss-python)
97+
This software was developed as part of the TDCC-NES Bottleneck Project "`Best
98+
Practices for Sustainable Software [SS-NES](https://tdcc.nl/projects/project-initiatives-nes/tdcc-nes-bottleneck-projects/best-practices-for-sustainable-software) funded by the Thematic Digital
99+
Competence Centre [TDCC](https://tdcc.nl/) for the Natural & Engineering Sciences [NES](https://tdcc.nl/about-tddc/nes).
100+
101+
Some features in this software template were inspired by [Serious Scaffold Python](https://github.com/serious-scaffold/ss-python).

REGISTRY.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ A list of templating projects using the meta-template.
66
77
| Template | Organisation |
88
|----------|----------|
9-
| [Project name]() | <Name> |
9+
| [TU Delft FAIR Software Template](https://github.com/manuGil/fair-code) | TU Delft DCC |
1010
| [Project name]() | <Name> |
1111
| [Project name]() | <Name> |
1212

copier.yml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,3 +34,12 @@ description:
3434
help: A brief description of your template including its purpose, and for whom it is intended.
3535
default: My Template Description
3636

37+
maintainer_info:
38+
type: bool
39+
help: Do you want to provide maintainer's information for this template?
40+
default: Yes
41+
42+
maintainer_email:
43+
type: str
44+
help: Email address of the maintainer of this template.
45+
when: "{{ maintainer_info == true }}"

docs/_static/css/custom.css

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
@import 'theme.css';
2+
3+
.wy-side-nav-search .wy-dropdown>a,
4+
.wy-side-nav-search>a {
5+
color:#343131;
6+
}
7+
8+
9+
.wy-nav-top a {
10+
color:#343131;
11+
font-weight:700
12+
}
13+
14+
.wy-nav-top i {
15+
font-size:30px;
16+
color: #343131;
17+
float:left;
18+
cursor:pointer;
19+
padding-top:inherit
20+
}
21+
22+
img.logo {
23+
display:block;
24+
margin:0 auto;
25+
height:auto;
26+
width:60%;
27+
border-radius:0;
28+
max-width:100%;
29+
background:transparent
30+
}

docs/_static/img/meta-logo.png

23.5 KB
Loading

docs/conf.py

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,26 +6,32 @@
66
# -- Project information -----------------------------------------------------
77
# https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information
88

9-
project = 'Meta Template'
9+
project = 'Meta-Template for Research Software'
1010
copyright = '2025, Manuel G. Garcia'
11-
author = 'Manuel G. Garcia'
11+
author = 'Manuel G. Garcia, Angelina Momin'
1212
release = '2.0.0'
1313

1414
# -- General configuration ---------------------------------------------------
1515
# https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
1616

1717
extensions = [
1818
'sphinx_rtd_theme',
19+
'sphinx_copybutton',
1920
]
2021

21-
22-
2322
templates_path = ['_templates']
2423
exclude_patterns = ['_build', 'Thumbs.db', '.DS_Store']
25-
24+
github_url ='https://github.com/SS-NES/meta-template'
2625

2726
# -- Options for HTML output -------------------------------------------------
2827
# https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output
2928

3029
html_theme = "sphinx_rtd_theme"
3130
html_static_path = ['_static']
31+
html_logo = "_static/img/meta-logo.png"
32+
html_style = 'css/custom.css'
33+
34+
html_theme_options = {
35+
'style_external_links': True,
36+
'style_nav_header_background': '#f0f7fa',
37+
}

docs/index.rst

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@
33
You can adapt this file completely to your liking, but it should at least
44
contain the root `toctree` directive.
55
6-
Meta Template documentation
7-
===========================
6+
Meta-Template for Research Software
7+
=================================================
88

9-
Every organisation wants to produce high-quality research software by adopting common best practices, but we have to acknowledge that every organisation has practices and workflows that are only important to them. Therefore, we facilitate adopting common best practices for research software development through a highly customisable software template.
9+
A tool that helps **template creators** to create **software templates** for research software, and adopt best practices on sustainable software for Natural and Engineering Sciences.
10+
It provides a way to align best practices and reduce maintainance efforts across organisations, while allowing organisation to customize software templates to their needs.
1011

11-
A template to initialize templating projects that comply with best practices on sustainable software in Natural and Engineering Science. This template containts boilerplate for developing custom research software templates using [copier](https://copier.readthedocs.io).
1212

1313
.. toctree::
1414
:maxdepth: 2
@@ -17,14 +17,14 @@ A template to initialize templating projects that comply with best practices on
1717

1818
.. toctree::
1919
:maxdepth: 2
20-
:caption: TEMPLATES
20+
:caption: Templating Documentation
2121

2222
meta-template
2323
project-template
2424

2525
.. toctree::
2626
:maxdepth: 2
27-
:caption: USE CASES
27+
:caption: Software Templates
2828

2929
python-case
3030
notebook-case

docs/meta-template.rst

Lines changed: 72 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,74 @@
1-
Meta Template
2-
==============
1+
The Meta-Template
2+
===================
3+
4+
A tool that helps **template creators** to create **software templates** for research software and adopt best practices on sustainable software for Natural and Engineering Sciences.
5+
It provides a way to align best practices and reduce maintenance efforts across organisations, while allowing organisation to customize software templates to their needs.
6+
7+
Research organisations want to produce high-quality research software by adopting common best practices,
8+
but we have to acknowledge that every organisation has practices and workflows that are only important to them.
9+
Therefore, we facilitate adopting common best practices for research software development through a highly
10+
customisable tool that allows organisations to create their own software templates,
11+
while aligning with the best practices of the Natural and Engineering Sciences community in the Netherlands.
12+
13+
The *meta-template* offers a tool for developing custom research software templates using `copier <https://copier.readthedocs.io>`_.
14+
*Software templates* generated using the *meta-template* an easily aligh and comply with best practices on sustainable software in Natural and Engineering Science.
15+
16+
Features
17+
----------
18+
19+
- Federation of best practices for research software project. Align with the best practice for research software development of the Natural and Engineering Science community in the Netherlands.
20+
- Reduce maintainabily. Enhancements to the meta-template can be incoorporated with ease in templating projects which reduces the time *template creators* need to maintain and updater templating projects.
21+
- Flexibility. Generate templating projects for any programming languates and customize them for every use case.
22+
- A curated list of open source licenses for your templating projects.
23+
24+
Key Concepts
25+
------------
26+
27+
- **Best Practices:** a set of best practices for research software development in the Natural and Engineering Sciences. These best practices are defined by the community and are used to guide the development of high-quality research software projects.
28+
- **Meta Template:** a template to start a software templating project. This repository. It contains common features that are shared among software templating projects.
29+
- **Software Template:** a template for research software projects generated using the *meta template*. It may contain common and custom features for a particular type of software project. For example, features specific to programming languages (Python, R, Julia, etc.) or features specific to relevant use cases (Jupyter notebooks, organization A, organization B).
30+
- **Software Project:** the software schaffolding generated using a *software template*. It contains files, directories and scaffolding code to start developing research software.
31+
- **Template Creator:** a person or team that creates a *software template* using the *meta-template*. Template creators are responsible for maintaining the software template and keeping it up to date with the latest best practices provided by the **meta-template**.
32+
- **Template User:** a person or team that uses a *software template* to start a new research software project. Template users decide when to update their research software projects with the latest best practices provided by a *software template*.
33+
34+
35+
Structure
36+
------------
37+
38+
The *meta-template* repository contians **common** and **custom** features for software templates. The common features are shared among all software templates and are used to generate the software scaffolding. The custom features are specific to a particular software template and are used to customize the software scaffolding for a particular use case (e.g. institution-specific). Template creators *adopt* common features from the meta-template, and *add* custom features to institution-specific software templates.
39+
40+
.. code-block:: text
41+
42+
meta-template/
43+
├── meta
44+
│   ├── common <- Common Questions/Options
45+
│   │   ├── citation.yml
46+
│   │   ├── community.yml
47+
│   │   ├── licensing.yml
48+
│   │   ├── messages.yml
49+
│   │   ├── settings.yaml
50+
│   │   └── software.yml
51+
│   ├── custom <- Institution-specific Questions/Options
52+
│   │   └── customize.yml
53+
│   ├── template <- Common templating elements
54+
│   │   ├── includes
55+
│   │   ├── tests
56+
│   │   ├── README.md.jinja
57+
│   │   ├── {{".gitignore.jinja"}}
58+
│   │   ├── {{"{% if citation %}CITATION.cff{% endif %}.jinja"}}
59+
│   │   ├── {{"{% if community %}CONTRIBUTING.md{% endif %}.jinja"}}
60+
│   │   ├── {{"{{_copier_conf.answers_file}}.jinja"}}
61+
│   │   ├── {{"CHANGELOG.md.jinja"}}
62+
│   │   ├── {{"CODE_OF_CONDUCT.md.jinja"}}
63+
│   │   └── {{"{% if software_license != 'No License' %}LICENSE{% endif %}.jinja"}}
64+
│   ├── CONTRIBUTING.md.jinja
65+
│   ├── README.md.jinja
66+
│   ├── copier.yml.jinja
67+
│   └── {{_copier_conf.answers_file}}.jinja
68+
├── LICENSE
69+
├── README.md
70+
├── REGISTRY.md
71+
└── copier.yml <- Main copier configuration
72+
373
4-
What is the meta template
574

docs/notebook-case.rst

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ The Jupyter notebook template was generated using the meta template
77
to streamline the adoption of best software development practices in the NES domain.
88

99
By leveraging the meta template, essential files that help a project adhere to the FAIR principles,
10-
such as license files, ``CODEOFCONDUCT.md``, ``README.md``,
10+
such as license files, ``CODE_OF_CONDUCT.md``, ``README.md``,
1111
and others were automatically included, eliminating the need for manual setup.
1212

1313
This also improves maintainability as updates in the meta template, such as changes in license files,
@@ -40,3 +40,34 @@ the following modifications were made:
4040
- ``tests/`` folder – Organizes and runs validation tests on code or data processing steps.
4141

4242
This ensures a structured, reproducible, and well-documented environment for research software development.
43+
44+
45+
46+
How to Use
47+
----------------
48+
Your can quickly use this template as follows:
49+
50+
.. code-block:: bash
51+
52+
# Create a new project using the fair-code template
53+
copier copy gh:SS-NES/notebook-template.git <my-software-project>
54+
55+
# Navigate to the project directory
56+
cd <my-software-project>
57+
58+
# initialize a git repository
59+
git init
60+
git add .
61+
git commit -m "Initial commit of my software project"
62+
63+
# start coding!
64+
65+
.. note::
66+
67+
This software template can be applied to preexisting research software projects using the `copier copy` command.
68+
69+
.. code-block:: bash
70+
71+
copier copy gh:SS-NES/notebook-template.git <./your-preexisting-project>
72+
73+

0 commit comments

Comments
 (0)