if both opensuse and fedora use rpm why are they not always compatible
Fedora and openSUSE might not always give the same package the same name.
So if you try to install a Fedora package that requires package xxx, you might not be able to do it because openSUSE doesn’t contain xxx, but it’s called yyy there.
You can get around this by using the “–nodeps” rpm option (or select “break zzz by ignoring dependencies” in zypper).
A bigger issue is that they include different versions of the same software, which can cause incompatibilities.
The same problem does exist even with different openSUSE versions though. A package for openSUSE X might not always be compatible with openSUSE Y.
Finally there might be other differences. F.e. the init system (well, nowadays both use systemd), installing software to different directories, software is configured to use different paths, and lots more. (think of /etc/sysconfig f.e.)
Your best bet is to rebuild the src rpm if you want to install Fedora packages on openSUSE, I’d say.
But why would you want to?
Nearly everything is available on OBS anyway…
RPM is only the package <management> system.
Although Fedora and openSUSE might share the same package manager, the contents described in the individual package manifests will usually be different, but not always. If you can’t find something in openSUSE but can find a Fedora, CentOS or RHEL package, it’s often still a worthwhile try to install the package, the package manager will tell you if it’ll work or not.
Besides file/library names, there can be differences in the libraries themselves, paths, more.
Under the hood, Fedora and openSUSE have many differences although there are also shared and similar systems.