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

Distributing software module #139

Merged
merged 9 commits into from
Oct 2, 2024
Merged

Distributing software module #139

merged 9 commits into from
Oct 2, 2024

Conversation

JaroCamphuijsen
Copy link
Collaborator

Describing various concepts regarding dependency management and isolation of the software environment:

@JaroCamphuijsen
Copy link
Collaborator Author

JaroCamphuijsen commented Oct 1, 2024

From this blogpost:

  1. Virtual environments, Docker containers, & Virtual Machines represent increasing levels of abstraction and control.
  2. By analogy, you can compare virtual environments to project folders, Docker images to file systems, and virtual machines as everything but the hardware.
  3. Virtual environments are used to isolate Python project dependencies, Docker containers are used to isolate applications and their required binaries and libraries, & Virtual Machines are for managing multiple guest operating systems. These technologies aren’t mutually exclusive and can be used in tandem.

I think it can be used as inspiration for our module. I'll at least add it to the further reading section.

@LourensVeen
Copy link
Collaborator

See also #141

@JaroCamphuijsen JaroCamphuijsen changed the title Dependencies module Distributing software module Oct 2, 2024
@JaroCamphuijsen JaroCamphuijsen marked this pull request as ready for review October 2, 2024 08:14
Copy link
Collaborator

@LourensVeen LourensVeen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Okay, I'd say this looks good for now. I'd like to maybe integrate the slides a bit better with the stuff I wrote, and rephrase a few things there, but for now let's go 😄.

## Why distribute?

- For your future self
- For others that might be interesting
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

interested

Copy link
Collaborator

@raar1 raar1 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK, very quick review, but I think the story seems good.


How do you make it easy for someone else to obtain a copy and get it set up on their computer so that they can use it?

Modern software contsists of an often large collection of components (libraries, packages) that are combined together to form an application. This whole collection needs to be reproduced on the computer of the user for things to work. There are two ways of doing that: 1) combining them all together on the computer of the developer, and then wrapping everything up into a package, installer, container image, or VM image that is sent to the user, or 2) putting the components that you made yourself on the Internet (as a package), and relying on the user to download the other components (packages) and assembling it all together into a working application.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Suggested change
Modern software contsists of an often large collection of components (libraries, packages) that are combined together to form an application. This whole collection needs to be reproduced on the computer of the user for things to work. There are two ways of doing that: 1) combining them all together on the computer of the developer, and then wrapping everything up into a package, installer, container image, or VM image that is sent to the user, or 2) putting the components that you made yourself on the Internet (as a package), and relying on the user to download the other components (packages) and assembling it all together into a working application.
Modern software consists of an often large collection of components (libraries, packages) that are combined together to form an application. This whole collection needs to be reproduced on the computer of the user for things to work. There are two ways of doing that: 1) combining them all together on the computer of the developer, and then wrapping everything up into a package, installer, container image, or VM image that is sent to the user, or 2) putting the components that you made yourself on the Internet (as a package), and relying on the user to download the other components (packages) and assembling it all together into a working application.


## Drawbacks

Large amount of isolation enhances reproducibility but decreases flexibility.
Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

How are you defining flexibility here? Ability to use the software as a dependency somewhere else?

@JaroCamphuijsen JaroCamphuijsen merged commit 572fc60 into main Oct 2, 2024
1 check passed
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

Successfully merging this pull request may close these issues.

3 participants