Skip to main content

Releasing version 10

ยท 7 min read

As you can see we have a new place for our Agama blog! So let's start with announcing the Agama version 10 release at this new place! ๐ŸŽ‰

We released the Agama version 10 quite some time ago, but we did not announce it yet because of lack of time. So if you downloaded the Agama installer recently then you are already using this new version.

We decided to separate the Agama blog posts from the YaST blog as those tools are quite different and to avoid confusion about what is what in the future. So welcome at the new blogging place for Agama!

QR codes with Agama URLโ€‹

Let's start with some cool and fancy stuff! ๐Ÿ˜ƒ

We found out that it is possible to display QR code even on a Linux text console. As QR codes can contain an URL then why not use it also for Agama? If you use a mobile phone for connecting to the running Agama instance this makes the process much easier.

Linux console with Agama QR code

The QR code is not displayed on standard 80x25 or 80x24 terminals because there is not enough space, it is displayed only on bigger screens.

Syntax highlightingโ€‹

You can edit the current Agama configuration in a text editor using the agama config edit command. This opens a text editor (Vim by default) with the current Agama configuration in the JSON format.

Previously the configuration was displayed as a plain text file without any syntax highlighting. Now you can enjoy JSON syntax highlighting which makes editing a bit more pleasant.

Editor without syntax highlighting Editor with syntax highlighting

You can use any another text editor for editing the configuration but as the Live ISO content is limited it only offers Joe as an alternative.

EDITOR=joe agama config edit
tip

You can install more editors using the usual zypper install command. But be careful, see the warning below.

Product selectionโ€‹

We changed a bit the list of products which can be installed with Agama. Since version 10 it is possible to install openSUSE Leap 16.0 Alpha. We also created a SLES 16 flavor but for now it is not available for public.

The product selection dialog now contains the product icons so the product selection should be more intuitive. Many thanks to Luboลก Kocman for implementing this!

Product selection

Improvements in storageโ€‹

Agama now supports creating LVM volume groups, logical volumes, thin pools and thin logical volumes in automatic installations. Reusing volume groups or logical volumes is not supported yet.

Also the existing partitions can be deleted automatically. There are two options, unconditional delete and delete only if needed. The first option always deletes the specified partition, the second option deletes it only when there is not enough space to create the needed partitions.

Always delete a partition:

{
"search": "/dev/vda1",
"delete": true
}

Delete a partition only when needed:

{
"search": "/dev/vda1",
"deleteIfNeeded": true
}

See more details in the auto_storage documentation.

Installation repository URLโ€‹

By default Agama installs the packages from the repositories specified in the product configuration. Those normally point to the official SUSE/openSUSE installation repositories.

But for testing purposes, especially in the openQA tests, you might need to install the packages from some testing or staging repository to test the latest versions which are not published in those official repositories yet.

From now Agama supports using the agama.install_url boot parameter for overriding the default installation repositories. You can use multiple URLs separated by comma:

agama.install_url=https://example.com/1,https://example.com/2

Internal changesโ€‹

There are lots of internal changes in Agama so we mention here only the most important ones.

Typescript supportโ€‹

The Agama web UI started in plain Javascript. But that is quite fragile, you can easily by mistake pass wrong arguments to a function or call a missing method on an object. Such a mistake would cause a crash. The Typescript language avoids all these kinds of problems.

Recently we added support for writing parts of the web UI in Typescript. We do not plan to do any big refactoring at once, the files will be gradually switched from Javascript to Typescript when touching them.

TanStack Query state managementโ€‹

In the web frontend we started using the TanStack Query framework for the state management. It provides a mechanism based on promises to fetch or update the state automatically. It takes care of caching, re-fetching, error handling, etc. so you do not have to implement these features by yourselves.

Live ISO free spaceโ€‹

In Agama 9 we fixed locking the package management system so now you can easily install additional packages into the Live ISO system. But it turned out that the available space for installing new packages was just about 0.5GB. That was not much if you wanted to install some big debugging packages or use your own compiled Agama HTTP server (the Rust binaries with debug information can be huge).

In Agama 10 we increased the available space to about 3.5GB which should be enough in most cases.

warning

Because the Live ISO system runs in a RAM disk then any changes to the file system, like installing packages or editing the files, will take the RAM space. Make sure your system has enough RAM for storing the new or updated files otherwise the Agama installer might crash later!

Technically it was a bit tricky because when building the ISO image Kiwi computes the file system size automatically and does not allow to set a custom value. As a workaround we create a big sparse file during the image build which just takes a tiny fraction of its real size so the final ISO size is basically the same. To free even some more space the file is automatically deleted when booting the Live ISO.

Puppeteerโ€‹

For writing the integration tests we originally used the Playwright framework. It works nice, it has great features, but there is one major problem for us: it does not work with original unmodified Firefox browser. For running the tests it downloads a specially patched Firefox binary. That means we cannot use it for testing Agama because we need to test it with the Firefox version we have in our distribution.

Unfortunately the Chromium browser which works fine unmodified cannot be compiled on S390 and PowerPC architectures. That means we would not be able to test Agama in SUSE Linux Enterprise on these architectures.

That is why we replaced Playwright with the Puppeteer framework in Agama 10.

HTTP backend in CLIโ€‹

When moving to the new HTTP-based architecture without Cockpit we took some shortcuts. One of them was not using HTTP clients in the command-line interface (CLI) but using the old DBus API.

This was fixed in Agama 10 so now also the command-line now uses the same HTTP API as the web frontend. This should avoid possible inconsistencies between those two user interfaces.

Conclusionโ€‹

Your contributions and opinions are important sources for feedback about the new release. So don't hesitate to contact the YaST team at the YaST Development mailing list, our #yast channel at Libera.chat or the Agama project at GitHub if you find any problem or have an idea for improvement.

Have a lot of fun!