Update
This commit is contained in:
parent
01ab666f94
commit
1ff2170a74
13 changed files with 110 additions and 28 deletions
|
@ -1,6 +1,6 @@
|
|||
# Dependency
|
||||
|
||||
Dependency is something your program depends on -- dependencies are [bad](shit.md)! Unfortunately they are also unavoidable. We at least try to minimize dependencies as much as possible while keeping our program functioning as intended, and those we can't avoid we try to abstract in order to be able to quickly drop-in replace them with alternatives.
|
||||
Dependency is something your program depends on -- dependencies are [bad](shit.md)! Among programmers the term *dependency hell* refers to a very common situation of having to deal with the headaches of managing dependencies. Unfortunately dependencies are also unavoidable. We at least try to minimize dependencies as much as possible while keeping our program functioning as intended, and those we can't avoid we try to abstract (see [portability](portability.md)) in order to be able to quickly drop-in replace them with alternatives.
|
||||
|
||||
Having many dependencies is a sign of [bloat](bloat.md) and bad design. Unfortunately this is the reality of mainstream programming. For example at the time of writing this [Chromium](chromium.md) in [Debian](debian.md) requires (recursively) 395 packages LMAO xD And these are just runtime dependencies...
|
||||
|
||||
|
@ -14,7 +14,7 @@ In [software](software.md) development context we usually talk about software de
|
|||
- [operating system](operating_system.md) and its services such as presence of a [window manager](file_system.md), [desktop environment](desktop_environment.md), presence of a [file system](file_system.md) etc.
|
||||
- [Internet](internet.md) connection
|
||||
- [hardware](hardware.md)
|
||||
- [computing resources](computing_resources.md) (sufficient RAM, CPU speed, ...)
|
||||
- sufficient [computing resources](computing_resources.md) (enough RAM, CPU frequency and cores, ...)
|
||||
- [graphics card](gpu.md)
|
||||
- [floating point unit](fpu.md) and other [coprocessors](coprocessor.md)
|
||||
- CPU features such as special instructions
|
||||
|
@ -26,13 +26,15 @@ In [software](software.md) development context we usually talk about software de
|
|||
|
||||
Good program will take into account all kinds of these dependencies and try to minimize them to offer freedom, stability and safety while keeping its functionality or reducing it only very little.
|
||||
|
||||
Why are dependencies so bad? Some of the reasons are:
|
||||
Why are dependencies so bad? Because your program is for example:
|
||||
|
||||
- **less secure** (more [attack surface](attack_surface.md), i.e. potential for vulnerabilities which may arise in the dependencies)
|
||||
- **more buggy** (more [fuck up surface](fuck_up_surface.md))
|
||||
- **more expensive to [maintain](maintenance.md)** (requires someone's constant attention to just keep the dependencies up to date and keeping up with their changing API)
|
||||
- **less [future proof](future_proof.md)** and more **fragile** (your program dies as soon as one of its dependencies, or any dependency of these dependencies)
|
||||
- **less under your control** (in practice it's extremely difficult to modify and maintain a library you use even if it's [free](free_software.md), so you're typically doomed to just accept whatever it does)
|
||||
- **less [portable](portability.md)**
|
||||
- **more expensive to [maintain](maintenance.md) (and create)** (requires someone's constant attention to just keep the dependencies up to date and keeping up with their changing API)
|
||||
- **less [future proof](future_proof.md)** and **more fragile** (your program dies as soon as one of its dependencies, or any dependency of these dependencies)
|
||||
- **more [bloated](bloat.md) and so probably less efficient**, i.e. slower, eating up more RAM than necessary etc.
|
||||
- **less under your control** (in practice it's extremely difficult to modify and maintain a library you depend on even if it's [free](free_software.md), so you're typically doomed to just accept whatever it does)
|
||||
- **more dangerous [legally](law.md)** (reusing work of other people requires dealing with several to many different licenses with possibly wild conditions and there's always a chance of someone starting to make trouble such as threatening to withdraw a license)
|
||||
|
||||
## How to Avoid Them
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue