The term "userland" can refer to many things in different contexts, but here I interpret "GNU userland" vs "BSD userland" as the default, minimum set of programs that come with a distribution.
The big main difference is that the two userlands start with completely different source code. GNU cat source code NetBSD cat source code. Just from that simple-in-concept program, you can see that NetBSD's cat uses traditional, single-letter command line flags. GNU programs tend to have single-letter flags, but also the --something-long
type options. GNU programs also tend towards POSIX compatibility.
That difference in source code will lend the two userlands different behavior in some cases.
It also looks like NetBSD (at least) uses its own version of libc, the standard C library. I'm getting in over my head here, but libc and dynamic linking are strangely inter=related. Again, different source code will lead to different behavior.
I think that as a shell user, you'd find that ps
would act different, and ls
might give you slightly different output than you're used to. You'd have to find equivalent command line flags for some programs, if you use the --long-option
type of command line flags.
Historically, my understanding is that BSD userland descends more directly from V6 and V7 Bell Labs Unix, via the 32V port to VAX hardware. GNU userland is newer, written at least somewhat in reaction to AT&T's attempts to keep code a closely guarded secret in the early 80s. After the 1983 Bell System divestiture, AT&T tried to "monetize" Unix. Part of that was to license the source code in a way that prevented most people from ever seeing it. Richard Stallman and others had problems with this. Their GNU project existed specifically to create a freely-shareable Unix-like system.
In the meantime, by 1993, AT&T sued the University of California system over the BSD ('B' is Berkeley, where University of California is located) systems. People at Berkeley had replaced all of AT&T's original source with new code, and that new code became the ancestor of at least NetBSD's userland. AT&T and UCB came to a settlement in 1994, revealed to the public in 2004.
Naturally, at least ideas cross-pollinate, so there's at least conceptual similarity between GNU and BSD userland, but corner cases definitely differ.
Best Answer
@rob is right. GNOME is technically an official GNU project. However, there is a lot of interesting history.
Let's roll back the clock
It's 1996. There are no desktop environments. Users and sysadmins assemble environments from a hodge-podge of programs. Different window managers, different applications, maybe a dock. There are two major toolkits on the market: Qt and GTK+. Qt had been around for a while, and was a commercial product of a company called Trolltech. GTK+ had also been around for a fair while. It was loosely associated with the FSF, since it was originally written for use in the GIMP. There were more toolkits, like (for example) Motif, but for the purposes of this discussion, we don't care about them.
The Kool Desktop Environment, also known as KDE, was created in October of that year in response to the fact that there was no unified desktop environment for UNIX systems. (The KDE project quickly dropped "Kool" in favor of just an undefined "K". It was clearly a good choice.) The creator of KDE, Matthias Ettrich, chose to use Qt for his new desktop. This was a major problem for the free software community. It meant that in order to use the awesome, free desktop that Matthias had created, they would have to install proprietary software - Qt.
What to do?
The FSF responded with not one but two projects, both working in parallel just in case one didn't pan out. The first was a project called Harmony. Harmony was intended to be an LGPL-licensed, API-compatible free software clone of Qt. The idea was that the community would keep KDE, simply replacing the proprietary bit.
The Harmony project never really worked out. Development went on for about 4 years before Qt was relicensed in 2000 to be fully free software (as defined by the FSF), thus eliminating the original motivation for Harmony. Due to both the relicensing and the success of the second project, Harmony was abandoned.
I bet you've guessed what the second project was by now. It was GNOME.
Tying it all together
I've given the history above. Now let's tie it all together in a nice knot.
So, to answer your question: yes, there is a relationship between GNU and GNOME. GNOME is the official desktop environment of the GNU project and is therefore an official GNU project and a part of the GNU operating system. Historically, it was created by GNU in response to KDE's dependence on Qt. In fact, the G in GNOME stands for GNU. The full acronym expands to GNU Network Object Model Environment - this refers to a technology that was planned but never implemented, as the project decided that it "didn't fit with the core GNOME vision".
That being said, GNOME is a huge project now. GTK+ is maintained by the GNOME people nowadays, for example, instead of being an independent project. It is safe to say that GNOME as an entity is independent of GNU, even though they are historically and technically related. GNOME has its own infrastructure; its own community; its own governance processes.
As a side note, this is also why GNOME and KDE are (friendly) rivals nowadays. It is because back in 1996, when KDE was founded, GNOME was created with the express purpose of directly competing with KDE. And that rivalry has persisted all the way up until the present.