@ -248,7 +248,7 @@ There is a strict separation between core system and third party software.<br />
[See slotting.](#slotting)
- `/usr/baguette` for core system programs
- `/usr/bad` for non slot-able software
- `/usr/third-party` for other software
- `/usr/<third-party>` for other software
## Languages
@ -261,7 +261,7 @@ Now, more than ever, we have better alternatives for all non kernel-related tool
That being said: we do not want dynamic languages.
We need:
- simple, small and efficient binaries
- less possible dependencies (not to download half `cpan` or `pypi` for any freaking software)
- the fewest dependencies possible (not to download half `cpan` or `pypi` for any freaking software)
**Crystal language for system tools.** *syntax and productivity of Ruby, the speed of C*<br/>
@ -626,7 +626,8 @@ Service management often comes with:
These shortcomings imply manual configuration, scripting to manage databases and users, specific tooling for each database and service: this is heavy machinery.
To overcome drawbacks of having simplistic tools, sys-admins developed all kind of monstrous architectures.
- **LXC** *chroot + network + software limits*
- **LXC***it's basically a chroot with network and software limits*<br/>
LXC is *kinda* reasonable, and may be useful in som cases, but it provides no simple way of configuring our services.
- **Qemu + KVM, Xen** *let's add software mimicking hardware's complexity to the mix, telling everyone it's for security and simplicity*
- **docker***I don't know how to do simple applications nor packages, so I give to you my whole dev environment*<br/>
Note: we have to admit, packaging on most OS is painful for absolutely no good reason.
@ -652,6 +653,7 @@ And advanced users should have an uncomplicated CLI tool to do that.
```sh
# We want a wordpress service, proxied by an nginx and using postgresql as DBMS
# THIS IS THE "VERBOSE" VERSION
# 1. we add an nginx
$ service add nginx
@ -664,7 +666,7 @@ $ service add postgresql
```sh
# 3. we add the wordpress
# by default, it uses available http proxy and database, but let's be "verbose"
# by default, it uses available http proxy and database
$ service add wordpress domain=example.com http=nginx database=postgresql
```
@ -690,6 +692,25 @@ A bit of explanation:
Stopping a service also stops its dependencies, unless specified otherwise.
Of course, a service is not stopped if it is required elsewhere.
Wanna see the less verbose version?
```zsh
$ service add wordpress domain=example.com
```
```zsh
$ service start wordpress
```
<red>TODO</red>
And <u>that's it</u>.
1. Services have tokens.
2. Tokens are used by default.
3. BaguetteOS provides **default** services for each token.
4. If a service is added and its dependencies aren't satisfied, we add other services.
5. (Bonus) If a service isn't installed, we ask nicely if the user wants to install it.<br/>
This is in discussion.
Here are a few functionalities `service` brings.
1. **uncomplicated service configuration with shared information**<br/>
@ -1044,20 +1065,24 @@ So, we need a language for both administration dashboard and online services, he
- seems to be a very young tech, with no real good language or documentation
- Zig has wasm as a Tier 1 support, we should investigate
- Let's rewrite things... QML was the way all along
<aname="slotting"></a>
# 4. Slotting: providing software the right way
The usual way to provide software is to maintain a version of a software or a library, package it into a distribution, then provide it as *the* OS version of the software.
The usual way to provide software is to package it into a distribution, then provide it as *the* OS version of the software.
In the long run, software and libraries change, which is no big deal since maintainers verify the consistency of the different versions provided by the OS.
Maintainers' job is to verify that all programs have the right library versions under their OS.
### Current set of problems
- what happens when two programs need a different version of a library?<br/>
The installation of both may no be possible.
See python from version 2 to 3 as an example: developers knew it will break OS systems.
So, they provided by themselves new names for their binaries (`python-2.7`), and libraries are *by default* packaged into a directory specific for a python version, such as `/usr/lib/python3.8/` and this is a form of slotting.
This is mostly done for languages, by what about other packaged applications and libraries?
See python from version 2 to 3 as an example: developers knew it will break OSs.
So, they provided by themselves new names for their binaries (`python-2.7`), and libraries are *by default* packaged into a directory specific for a python version, such as `/usr/lib/python3.8/`.
This is mostly done for languages, but what about other packaged applications and libraries?
- what happens when two libraries are compatible but you want both on your system (see libressl and openssl)?<br/>
One of them could be provided in another path, such as `/usr/lib/libressl`.
- what happens when you want to provide a **very** long term support for your users?
*see companies running decade-old OSs and databases*
@ -1067,7 +1092,7 @@ BaguetteOS has a simple and safe way to let users and maintainers provide packag
Slotting is a lot like repositories, except that repositories provide packages in the same prefixes than your base system.
**Without slotting**<br/>
**Without slotting**<side-note>*basically, your life sucks*</side-note><br/>
Let's take an example with simple repositories.
You add a non-official repository for <blue>my-overly-awesome-game</blue> to your Debian system.
This newly installed program will be in `/usr/bin`, as every other program.
@ -1078,7 +1103,7 @@ This newly installed program will be in `/usr/bin`, as every other program.
In <u>both cases</u> these libraries will end-up in `/usr/lib`.
dnsmanager is a web interface to enable users to register DNS names and manage their zone.
It is the software powering [netlib.re][netlibre] a service to provide names for everyone on the Internet.
[netlib.re][netlibre] is kindly operated by [Alsace Réseau Neutre][arn], a neutral and non-profit Internet Service Provider based in Alsace, France. Don't be shy, come and ask questions!
[netlibre]: https://netlib.re
[arn]: https://arn-fai.net
# Features
- [x] User accounts
- [x] Simple and expert modes for zone edition
- [x] DynDNS-like automatic IP updates
- [x] Multiple client and parent zones
- [ ] DNS delegation
- [ ] 3rd party authentication (LDAP, OpenID Connect)
- [ ] Documented client-side API
- [ ] CAPTCHA?
# Setup
Please refer to the [project's repository](https://github.com/KaneRoot/dnsmanager) for setup instructions.
# How to setup dnsmanager?
See the project [README](https://github.com/KaneRoot/dnsmanager) for setup instructions.
# Does dnsmanager support delegation?
At the moment, dnsmanager cannot delegate zones although this feature is on the roadmap.
# Does dnsmanager support 3rd party auth?
At the moment, dnsmanager does not support an external authentication service such as LDAP although this feature is on the roadmap.
<red>This page isn't ready for public review.</red>
# dnsmanager (and netlib.re)
dnsmanager is a web interface to enable users to register DNS names and manage their zone. It is the software powering [netlib.re](https://netlib.re), a service to provide names for everyone on the Internet.
[netlib.re](https://netlib.re) is kindly operated by [Alsace Réseau Neutre](https://arn-fai.net), a neutral and non-profit Internet Service Provider based in Alsace, France. Don't be shy, come and ask questions!
# Features
- [x] User accounts
- [x] Simple and expert modes for zone edition
- [x] DynDNS-like automatic IP updates
- [x] Multiple client and parent zones
- [ ] DNS delegation
- [ ] 3rd party authentication (LDAP, OpenID Connect)
- [ ] Documented client-side API
- [ ] CAPTCHA?
# Setup
Please refer to the [project's repository](https://github.com/KaneRoot/dnsmanager) for setup instructions.
# How to setup dnsmanager?
See the project [README](https://github.com/KaneRoot/dnsmanager) for setup instructions.
# Does dnsmanager support delegation?
At the moment, dnsmanager cannot delegate zones although this feature is on the roadmap.
# Does dnsmanager support 3rd party auth?
At the moment, dnsmanager does not support an external authentication service such as LDAP although this feature is on the roadmap.
# Quick overview
Here is a list of our currently developping projects.
This list will grow up following our wildest dreams.