First I want to thank Linux Magazine for giving me the chance to do this interview.

0. Presentation

My name is Thierry Nuttens and I am going to introduce you to the NuTyX project that I have maintained for over 16 years now.
My friend Spiky has become my right arm for over 3 years.

1. NuTyX Philosophy

I use NuTyX or Linux if you prefer because I think it's an operating system that meets my expectations.
Even though in recent years Linux has become more and more complex, it is still a great tool for me.
I tend to always want to understand the inner workings of what I put together.
NuTyX is no exception to this rule.

When I started discovering this system of explanation, more than 17 years ago
(it's not that far after all).

I didn't understand much about the "free" world.
I had the opportunity to test several different distributions, even if there were not as many as today.
Besides, Ubuntu was making its debut...
What interested me the most was to have a high-performance, reliable and easy-to-maintain system.

2. The influence of LFS/BLFS
My vision of Linux changed radically when I discovered the LFS project.
A project where (almost) everything is explained.
From building a chrooted system to building the build toolchain to finally
get a working operating system built yourself.

Even today, I am still learning from this project. simple and TRANSPARENT maintenance.
Something impossible to obtain with a “closed” OS.

Finally after several compilations of the LFS, I looked into the problem of managing all these files installed on my hard disk….
We must keep a trace, a history.
How to update and how to find out what is the version of this or that utility
without having to know the specific command for each of these applications.

I then came across the CRUX project which offered exactly the package manager I needed.

This small command line utility offered the Creation, Addition, Deletion and some basic information of the installed files, I was satisfied…
Almost

Not only were the orders simple, they were quick and the icing on the cake,
the commands were compiled statically which allowed to install the compiled packages and archived as tar files
in a destination folder using almost any other distribution.

NuTyX was created

I had one problem not the least.

The CRUX utility did not offer downloading or dependency management in a simple way like its basic tools.
It can be said that NuTyX dragged this drawback for almost 6 years.
The various attempts have never really been conclusive.

So I decided to create my own package manager.
The sources of pkgutils (the CRUX manager) being obviously available,
I then started to "fork" the CRUX utility.

CARDS was created.

We are two people active on NuTyX to ensure the continuous updating of the packages offered.
It is our main occupation.

The number of packages on NuTyX is approaching 2000.
If we add the automatically generated subpackets, we reach 4500 packets.

3. NuTyX is no longer a Linux From Scratch

We start with its installation, today it is possible to install NuTyX in many ways.
For beginners, several ISOs (LXDE, XFCE, MATE, KDE, GNOME, CINNAMON ready to install.

Each ISO allows automatic, semi-manual installation in direct mode or live mode,
from the ram or from the mounted ISO, and finally a script allows you to install the distribution in manual mode.

In addition to the latest stable kernel, all LTS kernels are available.
Each LTS kernel is a separate package. The version of the packages kernel-414, kernel-419, kernel-54, kernel-510, kernel-515
and kernel-61 never changes, only upstream patches are applied. They are available throughout the life of these.
Once reached the end of life, cards inform the user during the installation/update.
A tutorial explains how to proceed to change kernel.

Busybox commands are available in the /sbin system folders as a fallback system.
They are available as a last resort if the complete order is missing.

As on LFS, the two init systems sysV and systemd are offered but unlike LFS.
The two coexist without worries on the NuTyX.

Some modifications are necessary in the source code of systemd but nothing too serious.
All packages using systemd are compiled with the systemd option.
Thanks to the concept of automatically generated subpackages that I will explain later,
only the systemd library is necessary for NuTyX to work in sysV mode.
The systemd.lib package is always part of a NuTyX base system.
This poses no problem with the operation of sysV

Spiky uses the NuTyX in systemd mode for his personal use and for updating his packages.
I almost exclusively use NuTyX in sysV mode on my desktop and server machines.

 
Lxdm, lightdm, xdm, slim, gdm, sddm or dtlogin are available as session manager choices.

NuTyX packages are organized into collections.

Three collections form the heart of the system:
- base, cli and gui.

The cli-extra and gui-extra collections, as their names suggest, make up the set of command-line (cli-extra) and graphical (gui-extra) extra packages.

The packages consist of base packages and sub-packages.
The subpackages are classified by group:

- devel: development packages
- man: manual packages
- lib: library packages
- doc: documentation packages
- service: service packages


The nutyx package exists, it contains the folder structure of a linux system.
It also contains two very useful scripts:

- setup-nutyx for configuring:

     - The wired and wireless network.
     - The locale used.
     - The keyboard.
     - The clock.
     - The user.

- install-nutyx (and its 2 links generate-nutyx and chroot-nutyx) allows:

     - Installing basic (or more complex) NuTyX in a folder (perhaps a partition mounted in the folder).
     - Added default configuration files.
      Mainly for the installation above but can be used separately.
     - Generating a NuTyX ISO.
     - Enter a NuTyX installed in a folder

The upgrade-nutyx package allows updating transparently and completely automatically.
Once properly configured, the user no longer has to worry about updates, the package takes care of everything.
A small icon appears when the updates are available, ie downloaded successfully and ready to be installed.

The packages to be updated are installed when the machine is shut down.

NuTyX comes in two flavors or branches

A semi-frozen “rolling” version:

Final package updates such as browsers, video, audio and other players as well as security updates
are also made continuously.
Updates on the rolling version are only done by myself.

It is no longer necessary to reinstall the distribution with each new version.

A continuously updated “testing” version:
It is used for the preparation of the next rolling version.
Spiky takes care of 95% of the work which consists in updating all the packages of the different collections.
Given the extent of the updates, this "testing" version is not strongly recommended in "production" or on a machine
of the end user.

4. Difference between CARDS and other package managers.

CARDS is written in a low level language.
Thanks to C++, the code base remains modest in size, and the number of operational dependencies is reduced to a strict minimum.
On the other hand, the manager is judiciously made up of 2 main commands, one of which:


- pkgadd (and its links pkginfo, pkgrm) is compiled statically.
This allows for a very minimalist (chroot) installation.
Thanks to C++, the development of cards is very simple (for a very long time I only used vim to code).
No complex development tools are required.

This package manager is fast... very fast.

An installation with the correct arguments takes 11 seconds.
In the example above, a copy of the repository is in the local /srv/www folder:


  <pre class="command"><kbd># time (DEPOT=/srv/www MOUNT=/srv/www install-nutyx)
..
real 0m10.824s
user 0m9.389s
sys 0m1.230s
#
</kbd></pre>

CARDS and NuTyX go hand in hand.
For example the mybld central command uses the install-nutyx script for its operation.
Packages are ALWAYS built in a chrooted environment.

The original concepts of CARDS:

The collections are interdependent but independent of each other.
It is quite possible to choose some of the collections available in binary and to create your own collections at the same time.
Only the base collection is really essential.
The other collections are free to use.
A hierarchy nevertheless exists: The "gui" collection depends on the collection of the "cli" collection which itself depends on the "base" collection.
At the same time, the cli-extra collection depends on the "cli" collection which depends on...
and the "gui-extra" collection will depend on the "gui" collection which depends on...

The mybld script is sufficient for binary package management.
It has some very handy options for the packager. 
For example, the command: mybld 5.18.2 5.18.3 will compile all packages whose version is 5.18.2 to version 5.18.3 and
this in the correct order of collections AND packages.
Once the build is complete, the user can accept the commits and cards will update the recipe git automatically.
Updating firefox for example is as simple as: mybld firefox 108.0.2

CARDS being a fork of the CRUX Pkgutils package manager,
it seemed logical to me to keep as many existing functionalities as possible.

A NuTyX recipe is therefore logically similar to that of CRUX with many additions:
Packager, contributors, categories, groups, locales, package set, aliases, runtime dependencies,
circular dependencies, compilation dependencies.

Predefined functions for compiling similar packages like xorg, kde, python.
Inspired this time by ArchLinux, the prepare() and package() functions are also available.
Other functions specific to the standard groups available are also provided if the predefined functions are insufficient:

devel(), doc(), service(), lib() and man()

As explained above, cards automatically manage the separation of base packages and sub-packages
(devel, doc, service, lib, man and all defined locales).

The user does not have to worry about the locales of his packages since all the packages are provided with the subpackages of locales.
That is, if a Spanish user installs firefox as a package, the Spanish locale is installed automatically.
No need to search for packages like under many distributions.

When searching with CARDS, the search method will search in the following order:
The category, package set, name, description, URL, packager, and version.
We can therefore for example search for all the packages of a certain version.
A very practical function.

The management of orphan dependencies is completely transparent and greatly simplifies the life of users.
A dependency that is no longer used by any user-installed package is automatically removed.

Unlike other package managers,
CARDS does not allow you to blacklist a package, i.e. make it impossible to update it.
The reason is very simple, blacklisting a package can very quickly render the operating system unusable.
Imagine you blacklist icu (highly sensitive library).
Under NuTyX, a new version of this library implies that all the packages dependent on this library are updated.
So if for example blacklisting the icu library would be possible, during the next update of it, the operating system would be unusable.

A simple command is enough to make a complete update.
The "cards upgrade" command synchronizes metadata info with the remote server,
downloads updates of obsolete installed packages,
update obsolete packages,
removes installed package archives.
The user should not worry about it.

An interesting function on CARDS is the base command which allows you to return to a base system without risk
(if correctly configured).
A folder containing the name of each package to keep is sufficient.
By default, the base collection folder is used.
But you can very well add other folders if you wish.

cards base -r then removes all packages that are not listed in that folder(s).
I use this feature in the test battery which I will explain later.

And finally, what really makes the difference with other package managers,
CARDS is also used as the rendering engine of the nutyx.org site.
The site is powered by CARDS.
The reason is very simple, the main function of the site is the search for NuTyX packages.
It is not possible to login on the nutyx.org site.

Last point, no cookies are installed when visiting the site www.nutyx.org.

5. NuTyX Target Audience
This is a recurring topic on NuTyX.

There is no graphical installer and therefore installing NuTyX is scary from the first screen.
If a new user has never installed an operating system other than Windows ® or Apple ®,
he will naturally be shocked by NuTyX.
It's very ugly and probably won't work...

Despite this, in the list of installation possibilities there is indeed a completely automatic installation
i.e. partitioning, formatting and boot installation will be done without any user intervention.
The reason for this approach was twofold:

The first being for me, who has to test each ISO produced, it is extremely simple and fast.
This saves me having to choose the same options for each new installation.

The second being for the new user
which in 90% of cases will do a first test in a virtual machine, therefore with a completely blank disk devoid of any partitions
(required conditions to trigger a possible automatic installation).
Even if the user is an expert, he can very quickly install a NuTyX completely automatically.

6. Organization of the NuTyX project.

The organization is very simple.
We are three people on the project.

Spiky, whom I salute very warmly, is exclusively responsible for updating packages on the “testing” version.
He is very responsive, and takes full advantage of the simplicity of mybld.

Guth, whom I also salute very warmly, is a very discreet but very important person.
He is responsible for the proper functioning of the master repository server.
In 16 years, I don't remember having had a break.
He does an extraordinary job.

I support Spiky when he is in trouble with certain packages.

I update security vulnerabilities, kernels, browsers and other applications not providing dependencies on the "rolling" version.
I maintain the documentation pages on the nutyx.org site.
CARDS is also one of my daily tasks.
Sometimes I find new features to implement.

When the freeze of the "testing" version arrives (i.e. more or less every 1 to 2 months)
I take the branch that Spiky prepared me so well and I start my battery of tests:
- Merging of the rolling branch to testing
- Installation of ALL packages to detect some duplicate files, missing or obsolete dependencies.

I generate all the ISOs and test them all in a virtual machine.
Together Spiky (in English) and I (in French) are writing the news announcing the next version of NuTyX available.
Once the “testing” version has stabilized and therefore passed all the above tests.
The “rolling” version is overwritten with the “testing” version,
ISOs are generated in “rolling” version and published.
The installation script available on nutyx.org is updated.
The pages of the nutyx.org site are updated with the new version.
The news is published on the site and on the nutyx-annonce@nutyx.org mailing list.
And the cycle begins again.

7. Statistics and acknowledgments

I could, if I wanted to, obtain statistics on the number of pages visited on the site of tuxfamily.org at:
https://stats.tuxfamily.org/nutyx.org

To know the number of downloads of ISOs, you have to go to the site https://sourgeforge.net/projects/nutyx/files.
The ISOs are updated there each time the new NuTyX version is released.
I admit that I don't pay much attention to it.

I believe this is a very specific project with specific expectations that first meet my needs.

I am aware that today the level of requirement of an OS has become very high. It is very difficult
for me to meet all these requirements.

I would like to warmly thank Spiky again for his unfailing commitment to the project.
He is a very precious person who helps me every day in the progress of this magnificent project.

A huge thank you also to the Tuxfamily team for the logistical support of the nutyx.org site and the forums
forum.nutyx and forums.nutyx.org.
A big thank you especially to Sylvain who will have allowed the integration of the site and the access to the forums.
The site being written in ... C++...

  Let me introduce myself, I,m Spiky.
I was a long time LFS/BLFS user, I was also looking for a package manager for my LFS.

  I looked at Pacman, Apt, Rpm, I then stummble across NuTyX knowing Thierry Nuttens (Tnut) from LFS.
I installed NuTyX and found it work just as I liked fast installation and a small installed size even with Gnome.
I would remove NuTyX and reinstall it Using the install-script which i found, just what I wanted (My now prefered way to install).

  I carried on using NuTyX alongside LFS, I was looking to implement CARDS into my LFS system and go my own way,
 but i just didn't have the required knowledge and I was also enjoying the community, 
You could speak to the creator which is almost impossible with other distro's, and it is still like this today
a new user can interact with the team and not be belittled.
Help is always availble.

  CARDS has grown since i started using it, there are many additions to it,
Create an ISO, even create a Customized ISO as you wish to have it, with your choice of packages.
This I find usefull for installation on other machines.

  There is also a script to create a qemu vm and start it, which again is 1 of my favorites.

  I joined the Team and started working alongside Thierry Nuttens helping to update packages.
My main worry was breaking things but Tnut gave me confidence that nothing would go wrong,
ha ha proved him wrong sometimes, But the mybld scipt just makes things build and work.

  All in all this distro seems to have everything combind into it.
