On portability

There has been a lot of hand-wringing lately about how GNOME is supposedly forcing everybody to use systemd, and is not caring about portability.

That is of course not true at all.

Theory

Portability has been a recurring topic in the discussions of the GNOME release team (of which I am a member). We don’t make it a secret that modern Linux is the primary target that we are developing on and for. And we are aiming to use technologies that are best suited for the task at hand – which has led us to use more of the services implemented by systemd (some of which are direct descendants of earlier mechanisms shipped with gnome-settings-daemon).

But we are happy for everybody who wants to try GNOME on other platforms, and we have a strong interest in making GNOME work well there.

Reasonable patches to help with this are always welcome. The shape of those patches can vary from case to case: it could be reduced functionality, alternative backends, or a shim that puts systemd-like interfaces in place.

Practice

To show that these are not just empty words, here is a screenshot of GNOME running on FreeBSD:

GNOME on FreeBSDThe screenshot was provided by Ryan Lortie, who has done a lot of work on making jhbuild work on FreeBSD.

And here is a video showing GNOME running on OpenBSD, courtesy of Antoine Jacoutot:

GNOME on OpenBSD

Pointers

Go here  to read more about the release team position on portability.

If you are interested in helping out with making and keeping GNOME running on more platforms, this page is another good place to go. It lists platforms that are well supported by GLib.

20 thoughts on “On portability”

  1. I think that this post is important, but doesn’t deal with the systemd-requirement-related FUD as well as it could.

    What it achieves very well is demonstrating that there is an official position statement on the portability issues, and that it does not preclude the use of GNOME in non-systemd environments. Also the demonstration of modern GNOME on OpenBSD is quite impressive, and, for me personally, is a strong motivation to try that platform.

    What the post does not do well is to explain where this FUD originated from. If I understand the situation correctly, this comes from bugs like https://bugs.debian.org/726763 . They are the thing that allowed FUDers to claim that, despite the existence of the official statement on portability saying the contrary, systemd must be considered the required dependency until the logind shim appears, because otherwise the functionality loss is currently unacceptable.

    And it is not clear from the video and other information in the post whether this is due to something misconfigured in Debian, or something bitrotten in GNOME, or some magic that BSD packagers forgot to contribute back to GNOME, or due to BSD users forgiving the loss of functionality (e.g. related to screen locking on suspend) that Debian users consider mandatory.

    Still, with the logind shim now in Debian, I think that this FUD is now irrelevant.

  2. All said and done, Gnome Shell’s share when compared to other desktops is still a mere 14 % so whats the point even if gets ported onto Mac. People aren’t using it.

    1. and you know this… how, exactly? when even distributions don’t have a proper metric on their installed base.

      also, porting GNOME Shell to MacOS would be pointless: you cannot change the compositor there.

  3. So is GNOME on FreeBSD missing some features? If so, portability is not really a first-class concern. If not, why not use the same implementation as on FreeBSD (i.e. not depending on systemd) on all platforms, including Linux, which would avoid having two code paths and allow GNOME to work correctly on Linux distributions without systemd?

    1. you cannot use the same *implementation* on different OSes: they offer different features.

      GNOME uses interfaces, which are currently implemented by systemd (and by Upstart as well, on Ubuntu); if other userspaces on different kernels provided an implementation of those interfaces then GNOME would work fine on them.

      1. @Emmanuele: It is often argued that the header files that define those interfaces lack comprehensive documentation, hence making the interfaces difficult to re-implement. Do you have any pointers to information that would counter that position?

        Do you think that the current problem is just that a lot of functionality still needs to be implemented on non-systemd systems, and that doing so will just take a while?

        Are the interfaces generic and stable enough to serve the role of a standard (to be implemented by non-systemd systems), or are they tied to rather specific systemd implementation details?

        1. I’d start with documentation of systemd. I haven’t read in-depth but it looks quite well documented and there are existing implementation. On some interfaces GNOME has optional dependency AFAIK – for example multi seat and logind.

          The table documents if interface is Linux-specific, if it is stable and if the in-systemd implementation works on other OSes.

  4. I’d just like to interject for a moment. What you’re refering to as Linux, is in fact, GNU/LInux, or as I’ve recently taken to calling it, GNU plus Linux. Linux is not an operating system unto itself, but rather another free component of a fully functioning GNU system made useful by the GNU corelibs, shell utilities and vital system components comprising a full OS as defined by POSIX.

    Many computer users run a modified version of the GNU system every day, without realizing it. Through a peculiar turn of events, the version of GNU which is widely used today is often called “Linux”, and many of its users are not aware that it is basically the GNU system, developed by the GNU Project.

    There really is a Linux, and these people are using it, but it is just a part of the system they use. Linux is the kernel: the program in the system that allocates the machine’s resources to the other programs that you run. The kernel is an essential part of an operating system, but useless by itself; it can only function in the context of a complete operating system. Linux is normally used in combination with the GNU operating system: the whole system is basically GNU with Linux added, or GNU/Linux. All the so-called “Linux” distributions are really distributions of GNU/Linux.

    1. @rms this really is not the place for being pedantic. However since you brought it up…

      “it can only function in the context of a complete operating system. Linux is normally used in combination with the GNU operating system: the whole system is basically GNU with Linux added”

      This is untrue unless you can reasonably claim 1) a Linux OS is impossible with out a complete GNU user land. 2) you view the OS stack as starting with a user land and finding a kernel that runs it 3) a userland and a “complete operating system” are in fact the same thing. Could you point me to your definition of an operating system?

      Given the additional context of the term Linux is often used as shorthand for “GNU/Linux” you often present your case as one of being nit-picky and end up dieluting your own points. Your contributions to the FOSS world are numerous and great but your personal vendetta over the lack of 3 typed letters has a different place. This is not that place.

      1. @Stephen Tanner: He didn’t say it depends on GNU, but on “a complete operating system”, and GNU is one. One other would be Android, but I don’t think, GNOME runs on that.

        Also he did not say, that GNU was a complete OS, but that Linux is a “free component of a fully functioning GNU system”.

        [WORDPRESS HASHCASH] The poster sent us ’0 which is not a hashcash value.

      2. You do realise that any idle person on the Internet can create a comment linking to RMS’s website and call themselves “rms” right?

    2. @rms I do agree with you that its becoming increasingly important to distinguish between “traditional” GNU/Linux and other Linux based operating systems that do not make use of a GNU userland. However, as the GNU/Linux system continues to evolve with a a large chunk of it being neither GNU nor Linux … I think another term should be used. Any suggustions are welecome.

    3. Are you serious? See, this is all about removing Linux and GNU specific code. Is there any chance we can remove RMS as well?

  5. RMS… GET a life. I guess GNU/Mac is appropriate also? You waste so much effort w/such pathetic comments. Want to name something, BUILD IT. But, if you could’ve, you would’ve. You do more harm than good to the entire community and while we may owe you a debt you are quickly making yourself 100% irrelevant. Pathetic. Linus Linux You sir are sad and a horrible representitive of the communtiy. Please just give it up, and move on.

    [WORDPRESS HASHCASH] The poster sent us ’0 which is not a hashcash value.

  6. I’ve taken to calling it GNU myself. When I talk about the Kernel, I bring up Linux, but the system is largely GNU. As I cannot reliably use HURD at the moment, my GNU system uses the Linux kernel, positive or negative.

    That said, the GNU Network Object Model Environment is definitely optimized for GNU distributions, especially those that use the linux kernel, such as Debian GNU. Is there any areas in which GNOME interacts with a kernel/OS that suffer because the kernel/OS is of a variant of true unix?

  7. People in the FreeBSD community are interesting in using Gnome 3 and are interested in working on it. A few years ago before I started I started a forum post on how to install Gnome 3 in PCBSD and it has since received over 25,000 views.

    http://forums.pcbsd.org/forumdisplay.php?f=28

    As it has been if not the highest one of the highest viewed topics on the PCBSD forums for some time I really do think there is some interest. As a result of improved packaging tools I started a 3rd party packagesite and eventually assisted in committing Gnome3 directly in to PCBSD. So now PCBSD 10 now includes Gnome 3 as an option.

    I appreciate the efforts that Ryan Lortie, Koop Mast, and others have put in to getting portability issues with Gnome 3 fixed upstream. I was looking forward to assisting with Gnome 3.11 development on FreeBSD myself so that Gnome 3.12 can be installable for PCBSD users as well. I do hope that Gnome 3 will continue to be portable into the future and that portability support will continue to improve.

Comments are closed.