Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reproducible Dev Environments #8

Open
njoerd114 opened this issue Sep 15, 2024 · 15 comments
Open

Reproducible Dev Environments #8

njoerd114 opened this issue Sep 15, 2024 · 15 comments

Comments

@njoerd114
Copy link

Um sich auf eine einheitliche Entwicklungsumgebung verlassen zu können, wären reproducible Dev Environments wünschenswert, am liebsten devbox.sh

@lorenzleutgeb
Copy link
Collaborator

lorenzleutgeb commented Sep 16, 2024

Eine weitere Möglichkeit wäre Nix, bzw. Nix via devenv.sh

@niklasbeinghaus
Copy link

das ist implizit, devbox geht nicht ohne Nix.

@lorenzleutgeb
Copy link
Collaborator

lorenzleutgeb commented Sep 16, 2024

Für meinen Geschmack "zu implizit". Hätte angenommen, dass die Zeichenfolge "Nix" dann zumindest irgendwo auf devbox.sh vorkommt. Danke für den Hinweis.

@njoerd114
Copy link
Author

hab fälschlicherweise auf deren cloud-angebot verwiesen, auf der eigentlichen Seite zum Produkt steht es: https://www.jetify.com/devbox

@danimo
Copy link
Collaborator

danimo commented Sep 16, 2024

Danke für den Hinweis auf devbox.sh. Gleichzeitig möchte nur davor warnen, die Einstiegshürden mit zusätzlichen bzw. spezielleren Dependencies höher zu hängen. Der Vorteil an pip mit (ggf. mit direnv/lorri) ist seine Einfachheit und das Einzige, was es uns nicht zusichert ist die Python-Version. Solange wir nicht deutlich mehr notwendige Dependencies brauchen, die pip nicht liefern kann, würde ich die Hürden niedrig halten. Übersehe ich was?

@lorenzleutgeb
Copy link
Collaborator

AFAIK schließen sich die beiden Zugänge nicht aus. Nur weil es ein devbox/devenv/Nix Environment gibt, heißt das nicht, dass man nicht auch direkt pip verwenden kann, wenn man möchte.

@danimo
Copy link
Collaborator

danimo commented Sep 16, 2024

Das stimmt schon, und es gibt schon jetzt "more than one way to do it", aber das kommt aktuell alles bei virtualenv/pip raus. Mir geht es nur darum, dass es am Ende hintenraus nicht zu sehr fragementiert. Ich werde mir devbox wie gesagt mal ansehen.

@dsiebel
Copy link
Contributor

dsiebel commented Sep 16, 2024

Habe über die letzten Jahre ganz gute Erfahrungen mit https://containers.dev/ gemacht.
Speziell mit VSCode und bereits existierendem container-setup (#11) deutlich anfängerfreundlicher als z.B. Nix.

@niklasbeinghaus
Copy link

genau die komplexität von nix wird durch devbox wegabstrahiert. wie @lorenzleutgeb schon erwähnt hat, ist das nur ein zusätzlicher weg, der die konfiguration (bspw. requirements.txt) einfach nutzt. Der große Vorteil ist imo, dass das setup portabel wird und user einfach nur devbox run server ausführen muss, alle dependencies aufgelöst werden, etc.

@niklasbeinghaus
Copy link

btw.

devcontainers können mit devbox generiert werden:
devbox generate devcontainer

@dvgitit
Copy link

dvgitit commented Oct 7, 2024

devbox ggf. mit devcontainer finde ich ein gute Variante.

Empfehlenswert wäre, das Python Tooling zuvor auf uv umzustellen.

@niklasbeinghaus
Copy link

Das stimmt schon, und es gibt schon jetzt "more than one way to do it", aber das kommt aktuell alles bei virtualenv/pip raus. Mir geht es nur darum, dass es am Ende hintenraus nicht zu sehr fragementiert. Ich werde mir devbox wie gesagt mal ansehen.

Es kommt auch hier venv/pip bei raus, nur eben über devbox. Es erleichtert bspw. auch die Ausführung der Tests, siehe #159

@BerndCzech
Copy link
Collaborator

BerndCzech commented Oct 11, 2024

Danke für den Hinweis auf devbox.sh. Gleichzeitig möchte nur davor warnen, die Einstiegshürden mit zusätzlichen bzw. spezielleren Dependencies höher zu hängen. Der Vorteil an pip mit (ggf. mit direnv/lorri) ist seine Einfachheit und das Einzige, was es uns nicht zusichert ist die Python-Version. Solange wir nicht deutlich mehr notwendige Dependencies brauchen, die pip nicht liefern kann, würde ich die Hürden niedrig halten. Übersehe ich was?

@danimo - das habe ich auch gedacht - gleichzeitig läuft bei mir pip install -r requirements.txt auch nicht immer sauber durch. Was ich dann bisher immer gemacht habe, ist alles in einen Docker Container zu werfen.

Ich habe #159 ausprobiert und das ist super convenient. Imho hast du vielleicht noch eine (optionale, kleine) requirement am Anfang mehr skalierst aber langfristig besser.

@akokam
Copy link

akokam commented Oct 13, 2024

You might want to have a look at poetry for dependency management as well as dependency pinning.

pro: it's well defined but you leave the actual dev env to the developer (if on local, in a container, mac, linux, windows, ...).

it works well in a container and ci/cd too!

@Lasall
Copy link
Contributor

Lasall commented Nov 17, 2024

Das Projekt ist vermutlich klein genug, dass die venv ausreichend ist und man nach persönlichen Präferenzen darauf aufsetzen kann. Ich glaube nicht, dass wir hierfür extra Konfiguration in der Codebasis brauchen. Oder gab es da bisher Schwierigkeiten beim Aufsetzen der Entwicklungsumgebung?

akokam's Idee mit poetry finde ich sehr gut zur komfortableren Einrichtung der venv und reproducible dependency management (poetry.lock).

Edit: Ich würde deswegen dafür stimmen das Issue hier als won´t-fix zu schließen (und poetry separat anzugehen, ggfs. Abstimmung).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

10 participants