Nanos gigantum humeris insidentes
- Latin Proverb
Usually, when we develop software we tend to use other software, which is either part of an operating system or taken from third-party libraries that implement building blocks we prefer using instead of reimplementing them from scratch.
We are the proverbial dwarves standing on the shoulders of giants and that's usually good: better using an almost-round wheel than reinventing a squared one.
But what happens when we discover that the giant is actually drunk or the wheel we wanted to use is actually triangular?
Better to know that sooner than later and adapt accordingly.
When you are lucky, there are already few implementations around of what you need, so you can prepare a nice comparison table with the key characteristics of each project:
Functionality: When a software does not offer all you need, you should evaluate how much it currently supports and compare its features with the ones contained in other software. Try to separate 2-3 key features you cannot live without.
Source availability: Usually, it is better to deal with open-source software since you can fully investigate its code, and its development practices are generally open for scrutiny as well.
Open source is a wide world, so when you start using a project, you have to note what is the license and make sure the sum of the components you are shipping is legal (see REUSE).
Maintainance status: Some projects are upfront and mention their maintainance status, but in general you have to figure that out.
Among the key metrics to look at to understand a project's maintenance status, we suggest:
Code Quality: The code of the library you wish to use may or may not have been thouroughly tested and validated. The same tools you should use to evaluate the quality of your code can be applied to evaluate the library you want to use.
The beauty of open source is that you may contribute with fixes or new features to a project as long as upstream is amicable enough.
Since in SIFIS-Home we suggest the use Rust, let's see how to leverage its ecosystem to evaluate dependencies.
Most of the reasoning translates easily to the ecosystems of other languages, e.g., what applies to crates.io does apply to the CheeseShop Python Package Index or in broader terms to software distributions such as Nix, Homebrew, or any Linux (meta)distribution in general.
Once your candidate survives the scrutiny, you may happily add it to your Cargo.toml
and start using it with some peace of mind.
or
or
By clicking below, you agree to our terms of service.
New to HackMD? Sign up
Syntax | Example | Reference | |
---|---|---|---|
# Header | Header | 基本排版 | |
- Unordered List |
|
||
1. Ordered List |
|
||
- [ ] Todo List |
|
||
> Blockquote | Blockquote |
||
**Bold font** | Bold font | ||
*Italics font* | Italics font | ||
~~Strikethrough~~ | |||
19^th^ | 19th | ||
H~2~O | H2O | ||
++Inserted text++ | Inserted text | ||
==Marked text== | Marked text | ||
[link text](https:// "title") | Link | ||
 | Image | ||
`Code` | Code |
在筆記中貼入程式碼 | |
```javascript var i = 0; ``` |
|
||
:smile: | ![]() |
Emoji list | |
{%youtube youtube_id %} | Externals | ||
$L^aT_eX$ | LaTeX | ||
:::info This is a alert area. ::: |
This is a alert area. |
On a scale of 0-10, how likely is it that you would recommend HackMD to your friends, family or business associates?
Please give us some advice and help us improve HackMD.
Do you want to remove this version name and description?
Syncing