How do I know my software?

I never said that. I give up - you do not listen and are not interested in the answer.

I am not going to waste time diving into YaST to find out where YaST added these packages for you as you are interested only in ranting.

Yes, YaST may do something during or after installation that is explicitly installing some packages. That does not change anything in the meaning of “user installed” packages. You assume it means something entirely different and complain that your observations do not match what you imagined. You also do not want to accept explanation what it means technically. So be it.

On doing a clean install:

If you want this (good idea), why not just start with that and install packages when you need it?

Also recently did that. What is to my opinion important switching to new clean install is:

  1. Have the right zypper repo’s added/enabled
  2. Do the configuration that you did on your last install

For 1) it is matter of checking old versus new.
For 2) I have a logbook file where I write down everything I changed, sometimes with a link where I got the data from.

Now I run once a while into a problem that a application is not present or that a compile or script is missing a library and I just fix that on the go. I did do that in the past so it should be not to difficult and if so, hopefully the logbook file gives some info.

I saved a list for the old installed using “zypper search --installed-only” and “zypper search --installed-only -t pattern”. I did install on the new install some “devel” patterns I had also on the old install but for individual packages I resort to solving the problem when it happens.

And you posted that after my post where I explicitly named firewalldas an example from my list. I said I did not install that after installation and this is your suggestion that it then was installed implicitly by enabling the firewall once. Which I deny and I tried to make that plausible (but of course can not prove).

In any case, when you see my wish to understand what makes zypper to mark some packages as i+ (instead of i) as a rant (against who or what?), I can not help you because whatever I say you will not believe me.

In the meantime I am still interested what exactly makes zypper note some packages as i and others as `i+'. I seem to be too numb, or my English is to bad, to understand @arvidjaar 's explanation, so please keep it simple and straight forward. Thus, what is the idea behind the algorithm that does this (and let us hope then that the implementation mirrors the idea).

I would be interested in an answer to this question too.

What I understood so far:

Looking at the answers above I conclude:

  • Only packages pulled in by other packages are marked ‘i’.
  • Any package which is installed but was not pulled in on demand of another package has to be ‘i+’ (because there is no third status defined for installed packages).

Considering the fact that you did not select the package firewalld explicitly at install time nor enabled the firewall (neither at install time nor later) the question is

Which other explicit action caused firewalld to be installed (and consequently marked ‘i+’)?

Complete apart from not understanding what defines the difference between i and i+ packages, I have this:

boven:~ # zypper pa -i | grep '^i[+]' | grep kernel
i+ | Updates from SUSE Linux Enterprise 15 | kernel-default                             | 5.14.21-150400.24.63.1                           | x86_64
i+ | Updates from SUSE Linux Enterprise 15 | kernel-default                             | 5.14.21-150400.24.60.1                           | x86_64
i+ | Updates from SUSE Linux Enterprise 15 | nfs-kernel-server                          | 2.1.1-150100.10.32.1                             | x86_64
boven:~ # 

The kernel showing as an i+ package I think I can conclude that the OP is not helped by looking at i+ packages, because the kernel can hardly be categorized as "which software really is installed on top of the basic distribution itself ".