Skip to content

Commit ab1232f

Browse files
authored
Merge pull request #276 from EVERSE-ResearchSoftware/virtual-env-page-fixes
Virtual env page fixes
2 parents 2e4189e + 24a142a commit ab1232f

File tree

3 files changed

+29
-9
lines changed

3 files changed

+29
-9
lines changed

_data/CONTRIBUTORS.yml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,3 +81,9 @@ Esteban González:
8181
git: esgg
8282
Giacomo Peru:
8383
git: gperu
84+
Simon Christ:
85+
git: BeastyBlacksmith
86+
email: SimonChrist@gmx.de
87+
orcid: 0000-0002-5866-1472
88+
role:
89+
affiliation: Leibniz University Hannover

_data/tool_and_resource_list.yml

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -451,10 +451,6 @@
451451
id: conda
452452
name: Conda
453453
url: https://anaconda.org/anaconda/conda
454-
- description: Python project and dependency management and packaging tool
455-
id: poetry
456-
name: Poetry
457-
url: https://python-poetry.org/
458454
- description: Semantic versioning (SemVer) is a widely-adopted version scheme that encodes a version of a project by a three-part version number (Major. Minor. Patch), an optional pre-release tag, and an optional build meta tag.
459455
id: semantic-versioning
460456
name: Semantic Versioning
@@ -463,12 +459,27 @@
463459
id: calendar-versioning
464460
name: Calendar Versioning
465461
url: https://calver.org/
462+
- description: Pkg.jl is a package manager for the Julia programming language.
463+
id: pkg-jl
464+
name: Pkg.jl
465+
url: https://pkgdocs.julialang.org/v1/
466+
- description: Conan is an open source, decentralised and multi-platform package manager for C and C++ that allows for creating and sharing native binaries.
467+
id: conan
468+
name: Conan
469+
url: https://conan.io/
470+
- description: Maven is a software project management and build automation tool used primarily for Java, but can also be used to build and manage projects written in C#, Ruby, Scala, and other programming languages.
471+
id: maven
472+
name: Maven
473+
url: https://maven.apache.org/
474+
- description: Bundler is a Ruby gems and environment management tool for Ruby projects.
475+
id: bundler
476+
name: Bundler
477+
url: https://bundler.io/
466478
- description: FAIR Python Cookiecutter is a cookiecutter template command-line tool to help you kickstart a modern best-practice Python project with FAIR metadata
467479
id: fair-python-coockiecutter
468480
name: FAIR Python Coockiecutter
469481
url: https://github.com/Materials-Data-Science-and-Informatics/fair-python-cookiecutter
470482
- description: Prettier is a code formatter to enforce a consistent style with its own rules for different languages, including JavaScript, TypeScript, Flow, JSX, JSON, CSS, SCSS, Less, HTML, Vue, Angular, GraphQL, Markdown, and YAML.
471483
id: prettier-code-formatter
472484
name: Prettier
473-
url: https://prettier.io/
474-
485+
url: https://prettier.io/

pages/your_tasks/virtual_dev_environments.md

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
---
22
title: Reproducible virtual software development environments
33
description: What are virtual software development environments for reproducible research and how to use them?
4-
contributors: ["Aleksandra Nenadic"]
4+
contributors: ["Aleksandra Nenadic", "Simon Christ"]
55
page_id: virtual_environments
66
related_pages:
77
your_tasks: []
@@ -64,8 +64,6 @@ They also enable you to use a specific older version of a package for your proje
6464

6565
Most modern programming languages use some kind of virtual environments or a similar mechanism to isolate libraries or dependencies for a specific project,
6666
making it easier to develop, run, test and share code with others.
67-
Some examples include Bundler for Ruby, Conan for C++, or Maven with classpath for Java.
68-
This can also be achieved with more generic package (dependency) managers like Spack, which is used extensively in HPC settings to resolve complex dependencies.
6967

7068
Part of managing a virtual software development environment involves installing, updating and removing external packages on your system.
7169
You would need a package manager tool for your programming language to be able to do that - this is typically a command line tool that you invoke from
@@ -83,6 +81,8 @@ Sometimes, a package manager combines both of these functionalities and you only
8381
a Python package and environment management system part of the Anaconda Python distribution (often used by the scientific community). {% tool "conda" %} has its own repository system separate from
8482
(but compatible with) PyPI that distributes non-Python packages packages as well and has its own non-venv-based virtual environment system.
8583
- If you are using R - consider {% tool "renv" %} that will help you build reproducible environments for your R projects
84+
- For Julia programming language - check {% tool "pkg-jl" %}; for C++ - check {% tool "conan" %}, for Java - check {% tool "maven" %}, for Ruby - check {% tool "bundler" %}.
85+
- There are some some generic tools to have a look at as well - e.g. [Spack][spack], [nix][nix], [guix][guix].
8686
- You need to decide what tools are best for you - based on your personal preferences, or what the software project and your team or community is
8787
already using (so you can get help when you need it). Not using virtual environments at all and mixing different tools to manage them could lead to
8888
a [bad example of a spaghetti setup][python-env-hell], not knowing which dependencies are being used and causing issues when running and debugging code.
@@ -98,3 +98,6 @@ a [bad example of a spaghetti setup][python-env-hell], not knowing which depende
9898
[renv]: https://rstudio.github.io/renv/index.html
9999
[ssi]: https://www.software.ac.uk/
100100
[python-env-hell]: https://xkcd.com/1987/
101+
[guix]: https://hpc.guix.info/
102+
[nix]: https://nixos.org/
103+
[spack]: https://spack.io/

0 commit comments

Comments
 (0)