Coder Social home page Coder Social logo

tinuum's Introduction

tinuum

Resources (later might be a tool) to create reproducible computational environments.

At the moment it is just a list of issues to collect information on ways to assist with specifications to create reproducible environments, e.g. within containers, so that rerunning provisioning script creates identically in functionality, if not bit-wise, environment images.

tinuum's People

Contributors

yarikoptic avatar

Watchers

 avatar Soichi Hayashi avatar Sam Nastase avatar

tinuum's Issues

Nix

There is a way as was mentioned by @matrss in @distribits 2024 chat discussions, where on the example of https://atris.fz-juelich.de/m.risse/datalad-nix-demo/src/branch/main/flake.nix#L5 where for nixpkgs.url = "github:nixos/nixpkgs?ref=nixos-unstable"; @matrss elaborates:

Yes, you can also specify a specific commit hash (but I think it would be called rev=<hash> then, instead of ref=, it's documented here: https://nixos.org/manual/nix/stable/command-ref/new-cli/nix3-flake.html#flake-references). Of course it also doesn't have to be github, it can be gitlab or any git repository available over http, or even another local directory and stuff like that.
I should add that nix flakes are still considered an experimental feature (but it has been working well for a long time now). All of this can be done with non-experimental nix as well, but it is a bit less standardized what it would look like.

Review Article

@yarikoptic you mentioned in the meeting today that you envision this becoming a resource of available reproducible computational technologies, and possibly grow into a review article.

A few questions:
1. Is an all-encompassing overview really relevant for our work? We're mainly using docker/singularity
2. How would this be different from the write-up in opfvta-reexecution?
3. I think in order to define a scope we might want to start with a draft title, do you have any suggestions?

GNU Guix

Guix is a package manager, package repository, and through guix system a GNU/Linux distribution that is a different implementation of the same functional packaging approach that nix (#5) first introduced.

To get an isolated environment with some packages available you can use guix shell: https://guix.gnu.org/manual/en/html_node/Invoking-guix-shell.html

To get a reproducible isolated environment you just have to combine guix shell with guix time-machine (and probably checking in a channel description file into you project): https://guix.gnu.org/manual/en/html_node/Invoking-guix-time_002dmachine.html

These two blog posts go into more detail on how this could work:

There is even an active effort to make Guix on HPC a great experience: https://hpc.guix.info/

(Disclaimer: I haven't used guix myself yet; for now I have stayed with nix and just watched guix from afar. But I consider the functional packaging approach implemented by both to be the future of package management, no matter which implementation will become more popular. It is just so intuitive to do it this way.)

conda/conda-forge

Responses/hints got so far on gitter (thanks!)

@bollwyvl

there was a hosted one at some point, but it was not feasible to maintain

one could theoreticallty do such a thing by manipulating a local cache of repodata, but has gotten harder with recent changes (jlap, etc)

@jaimergp

Check https://github.com/conda/conda-libmamba-solver/blob/main/tests/repodata_time_machine.py. With CEP-15 this will be better supported once implemented. For now I think it's only valid to generate --dry-run --json payloads which you could turn into a @EXPLICIT style lockfile.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.