Theo de Raadt wrote:
David Uhden Collado <[email protected]> wrote:
Stuart Henderson wrote:
On 2026/09/20 07:01, David Uhden Collado wrote:
The main goal of the packaging is to make these implementations usable
as alternatives to the existing GNU utility ports without requiring
source changes in dependent ports.
For example, uutils-coreutils installs the same g-prefixed command names
as sysutils/coreutils, including gcat, gls, gcp, gdate, gsort, gstat,
gtail, gtimeout and the other GNU-compatible utilities. They are
symlinks to the upstream multicall binary, which is installed under
libexec/uutils.
...
Each package conflicts with its corresponding GNU implementation and
declares the GNU port as a secondary @pkgpath.
I don't think this is a usable approach for ports.
The truth is, I find these Rust reimplementations quite
interesting. Ubuntu 26.10 has already adopted uutils coreutils because
the project has reached a level of maturity and stability where it can
be used reliably. The other reimplementations are still more of a work
in progress.
Smells like agenda.
I also think they fit quite well with OpenBSD as alternatives to GNU
utilities, particularly because they use a permissive MIT license.
Argument is vaguely like: because we already have permissive licenced
utilities, our user base are really interested in having a second set of
permissive licenced utilities which are very subtly different.
That makes no sense. Noone wants subtly different behaving binaries as
part of their workflow. If someone runs the openbsd ls command as part
of a pipeline that uses openbsd sed, or openbsd cut, or some other
openbsd utility and it parses a non-standized output characteristic
by accident, there are no people in this universe who wants to replace
that ls with a different ls and get surprised by un-standardized tooling
behaviour clash.
I'm not sure yet whether it's possible to install the individual
utilities as separate binaries. This is new territory for me, since
uutils is structured as a metapackage, and because it's written in
Rust.
Oh, because it is written in Rust.
Your agenda is showing.
There is no agenda here. My goal is simply to have alternatives for
software that already depends on GNU utilities in order to work
correctly on OpenBSD.
I have always found it somewhat unfortunate that some ports need GNU
coreutils, bash, or other GNU utilities rather than being able to use
the base system tools. Where those dependencies cannot reasonably be
removed because the software genuinely relies on GNU semantics or
extensions, I think having another compatible implementation available
is useful. It is simply about having a choice.
I am not suggesting replacing OpenBSD's base utilities, nor do I want
subtly different implementations appearing unexpectedly in users' normal
workflows. That was never the objective. The intended use case is
specifically software which already expects GNU-compatible utilities and
currently depends on the corresponding GNU ports.
Besides coreutils, there are other projects reimplementing GNU software
in Rust under permissive licenses, such as other uutils projects and
brush. They are not yet 100% compatible with their GNU counterparts, so
I would not claim that they are ready to replace them everywhere today.
But I expect compatibility to continue improving over time.
And no, my interest is not simply "because it is written in Rust." Rust
is relevant to the packaging because it determines how the port has to
be built. The implementation language itself is not the objective.
I also do not understand the hostility towards these projects. If the
concern is that AI or LLM-assisted development may have been involved,
that is a separate discussion from whether the resulting software is
technically useful, compatible, maintainable, and suitable for ports.
LLMs can substantially reduce the amount of time required for some kinds
of software development, including work that would previously have
required much more manual effort. I think the sensible way to judge the
result is by the code, tests, compatibility and maintenance quality
rather than by assuming that the development method itself makes the
project undesirable.
In any case, I would rather keep that discussion separate. My interest
here is much simpler: providing additional permissively licensed
alternatives for ports that already require GNU-compatible tooling.