Mesk - free, i2p-based linux package manager
> [!WARNING]
> Now we are primarily busy with the first prototypes rather than documentation, after v0.0.1 is released, examples will be added and additional documentation will be written that concerns the internal logic of the package manager, as well as some additional explanations for package builds, etc.
Servers with repositories will be http-only for a while until we rent servers. and we'll set up i2pd for them. We are not abandoning the number one principle, it is currently difficult to combine both
**Mesk is a source-based package manager based on i2p protocols, tailored for independence and the absence of spyware.**
> [!TIP]
> **It's hard to find a really working and at least**
> **somehow documented i2p client library for absolutely any language.**
> **But still, it was found in [emissary-core](https://github.com/altonen/emissary) and yosemite.**
> **Big thanks from us all us! ❤️**
**Themes:**
- support us
- policy in writing software
# Package Structure
`.mesk` - **is a compressed gzip tarball containing information on how to build, configure and install it**.
```
# Example file-tree of package.mesk
.
├── BUILD
├── INSTALL
├── LICENSE
├── Makefile
├── SETTS
└── src
├── some_code.c
└── some_code.rs
```
- **BUILD:** Not required if the package does not require compilation/other assembly
- **INSTALL:** Where or how to install the package? For example, you can just leave make install and the package will be installed by make, not mesk.
- **SETTS:** What needs to be configured after installation? For example, install basic configurations (if this is not done in `INSTALL`) or export environment variables.
**Binary packages are also supported, but the default installation is source-based.**
You can set the package compilation parameters in the global /etc/mesk.toml. (Read more in the documentation.) For example, the compiler, optimization level settings, etc. Here we are similar to portage.
The `.mesk` package can be generated automatically, given that the software is open source and based on standard build systems: `make`, `CMake`, `meson`, `cargo`. If the package does not require compilation, you must specify how and where to install it.
**We only support open source software.** Binary builds of proprietary applications will not appear in the official repositories, but, for example, there will be open clients for messengers with a closed backend.
Our policy
1. **Documentation is a sore point for i2p client implementations** (even for the official i2p-rs, for example), after tinkering with a ton of non-working and undocumented libraries for i2p, **our conscience will not allow us not to work on documentation.**
_By the way, I will mention that the official examples of i2p-rs have a completely different structure of imports and library operation than crates.io versions. Over time, we plan to switch to our own implementations of client libraries for i2p._
2. **The style of the code.** So far, we have not reached a functioning prototype, the code works on a **procedural programming paradigm, but eventually we will switch to a functional one.** The code may hurt the eye, but it must contain documentation comments and its logic must be clear.
3. **Minimalism and reliability. Our programs will not contain unnecessary functions that may lead to misunderstandings of the program interface** (the CLI is also an interface), as well as functions that benefit but are controversial in their reliability.
4. **We don't use AI in our code.** The entire project code is written by a human, with the exception of unit tests and other parts that will not be included in the final release.
**A free network should be available to everyone.**
Support us
**This project cannot be implemented without some support. The most valuable thing you can do for us is to create a Pull Request or spread information about us in any circle. We are a team of enthusiasts who do not have all the means to do this initially. All big projects absolutely always start small.**
# Development checklist
- [x] - Basic functionality (http, installation/removal of packages.)
- Implemented (some functions related to deletion and some actions with packages have not been tested properly)
- [ ] - i2p funtions
- WIP (As mentioned above, there are problems with the library part of the client i2p, everything that uses yosemite is likely to be rewritten because it is a SAMv3 library, SAM is not intended for downloading files)
# Anouncements and plans
- Initially, the distribution is inspired by the spirit of QubesOS and we plan to implement an **alternative to qubes HVM**.
- **The I2PUtils**. For i2p, you can use standard utilities like WGET/CURL, etc., but for convenience and support of all standards, we plan to create alternatives tailored specifically for this network.
- Additional documentation and eepsites for our utilities, well, where without it?