Skip to content

Instantly share code, notes, and snippets.

@imobachgs
Last active January 30, 2020 14:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save imobachgs/5651c4833cd8c7365806d3b422fbac51 to your computer and use it in GitHub Desktop.
Save imobachgs/5651c4833cd8c7365806d3b422fbac51 to your computer and use it in GitHub Desktop.
YaST's Online Search Feature

Online Search

As you already know, starting in version 15, SUSE Linux follows a modular approach. Apart from the base products, the packages are spread through a set of different modules that the user can enable if needed (basesystem module, desktop module, server module, devtools, you name it).

In this situation, you may want to install a package, but you do not which module contains such a package. As libzypp only knows the data of those packages included in your registered modules, you will have to do a manual search.

Fortunately, zypper introduced a new search-packages command some time ago that allows to find out where a given package is. And now it is time to bring this feature to YaST.

The User Interface

For technical reasons, this online search feature cannot be implemented within the package manager, so it is available through one of its menus.

"Search Online" Menu Option

QUESTION 1: Should the package manager suggest to use the online search when a user cannot find a package? Or is it too intrusive?

Selecting the Search Online menu option takes the user to the Online Search YaST UI. It mimics the appearance of the package manager with a small search box, a table for the results, and a box for the details.

Online Search UI

QUESTION 2: The layout is similar to the package manager. But, as the search options are quite limited, there is quite some space below the search box. Is it OK? Any suggestion?

QUESTION 3: The table does not reflect whether an addon is registered/selected. You only can see its status in the details box. Should we include a new column for addon status? Or could we use the package status column adding another indicator? Any better idea?

The Current Workflow

In this video, you can see how a user can use the module to search for a container-connect package, registering the Containers module and selecting the package for installation. These are the steps:

  1. The user searches for the packages to install by introducing its name (or part of it) and clicking Search.
  2. The user selects the package for installation.
  3. If the package is included in a module that is not registered, YaST asks the user whether it should register the module. Bear in mind that the module will be registered when the user clicks Next.
  4. The user can repeat 1-3 for any other package. Of course, if an addon was selected to be registered, YaST will not ask again.
  5. After selecting the wanted packages, the user clicks Next.
  6. YaST registers the needed modules (including license agreements, regcodes, etc.).
  7. After finishing, it takes the user to the package manager with the packages selected for installation.

If the user decides to unselect a package, the corresponding module might not be needed anymore (the user has not selected any other package for installation of this module). In this case, the idea is to ask the user whether to keep the module as selected.

Finally, we would like to introduce a Summary screen that should be displayed when the user clicks Next.

QUESTION 4: Does the workflow make sense?

An Alternative Workflow

During a meeting to discuss the current implementation, we got a proposal to use a different approach. Instead of asking whether to register/enable after the user selects a package, we could wait until the end and ask about registering/enabling modules when the user clicks the Next button.

QUESTION 5: Is this approach better?

Things to improve

  • SMT/RMT are not supported.
  • Not tested in openSUSE yet.
  • Better handling of communication problems (network errors, timeouts, etc.).
  • Do not allow to search for the empty string ("") as it might cause getting the full list of packages.
  • When YaST asks a user whether to register/enable a module, it should display its dependencies.
  • Inform when a user is going to need a regcode for a given module.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment