On Thu, 2022-03-24 at 09:07 +0300, Andrei Borzenkov wrote:
Moreover, casual contributors would most probably fail at this project. The basic technical part - connecting to the OBS API - is simple enough. But the difficult part - the one at which software.o.o is currently failing [*] - is to figure out which repositories matter for which distribution, a task that sometimes confuses even long time human openSUSE users. I'm not even sure if this could be reliably figured out from OBS in software without a hard-coded and ever-growing list of exceptions and special cases.
When I tried to raise this concern with OBS maintainers the response was
- not our problem. OBS stays for Open *Build* Service, this is not
the tool to build distribution, we do not care what you are doing with packages that we build.
It is possible to dynamically build list of inherited repositories by (recursively) following <link ...> elements. What is not clear - how to resolve ties between these repositories (i.e. if package is present in several of them). Is it done by OBS itself? Is there any side band tool and configuration to select which packages are part of distribution?
Even less clear is the situation with updates. They are "imported" into openSUSE by some undocumented black magic. Somehow they end in different paths on download server and I have no idea whether these paths are present in any (publicly available) metadata.
Thanks a lot for explaining this much better than I did.
Eventually all this is expressed in OBS logic, I suppose. But OBS has a lot of logical concepts (linking, branching, aggregation, repo inheritance, prjconf, locking, maintenance process, you name it) that interact in non-obvious ways. Recreating this logic in a different tool such that it correctly reproduces the OBS logic is a daunting task.
Which is an argument to actually design this tool as a simplifed UI for OBS itself [*], and have it designed and written by people who are deeply familiar with OBS internals.
[*] More precisely, for a limited portion of OBS' functionality, basically just determination of suitable repositories for the given distribution and download of binaries.