Officially supported operating systems?

I tripped over this subject while reviewing Gtk 3, Gdk 3 and other dependencies for Addons. In particular I discovered that the addon PlaceCoordinateGramplet has loading errors because it uses GeocodeGlib 1.0 which has been dereleased for years. The issue is that the new version GeocodeGlib 2.0 requires libsoup 3.0 which is a operating system level dependency which is a) declared nowhere and b) can be a touchy subject

Nick had taken a stab at resolving it back 2023 but it simply was too early for the wide swath of OSes out there, that has since changed and could be fixed now.

This all boils down to one important point: we need more precision in which OSes Gramps (and by extension the addons) will support officially and which are “berst effort” situations. I’ve seen a reference to this for Windows on the Download page, but no overview over the specific Linux versions, etc.

Any thoughts?

The version of OS supported is too much of a moving target to be addressed on the Application side. Anything built into the code quickly suffers linkrot.

It is somewhat easier for macOS and MS Windows where we have had dedicated ‘official’ volunteers who have committed to timely updating and troubleshooting OS installer files.

There are some tools to check what resources Gramps sees (whether sandboxed or a Deep system integration):

An unintended consequence of repairing the AIO installer building tool for MS Windows (about 3 years ago) is that: no developer has to spend 2 days building and testing an Installer for each release. So the the experience and expertise has atrophied. The troubleshooting/validating for that OS is no longer rigorous. To be blunt, there is more current MS Windows installer building skills for Gramps in the PortableApps team than in the Gramps-project team at this moment. This is not taking potshots at our developers
 PortableApps simply has to navigate the idiosyncrasies of MS Windows prerequisites constantly across a broad spectrum of Applications. Smooth installing is their whole raison d’ĂȘtre.

It will be interesting to watch the impact of recent installation enhancements. Hopefully the “Allow Gramps to install required Python modules” in Addon Manager will work and become viable. A functional “prerequisite managing” feature would completely change this discussion.

The discussion of Linux is almost an entirely different subject. There are so many Linux distributions (with subdialects) that it seems that we’ve gotten away from ‘official’ support for an expert install option and all its complexities (like the Debian installer). Instead, we’ve adopted a more watered-down fallback to sandboxed installs, trading the benefits of deep OS integration for convenience.

References:

https://gramps-project.org/wiki/index.php/Installing_Gramps_for_Linux_computers#Linux_distributions

https://gramps-project.org/wiki/index.php/Category:Versions

It might be a better approach to integrate the Prerequisites Checker into the core (which could be superseded by an addon replacement) and to move the “Required” installing feature from the Addon Manager to make it into a Tool instead of a Report.

The Language support checking of the experimental Environment Inspector could be installed there too. Adding options to select the active Locale and install other translations/dictionaries would make it into a Tool instead of a Report too.

Likewise, the experimental Environment Inspector’s constants reporting could be integrated and upgraded to an environment Constants editing tool.

Our geography views require osm-gps-map which depends on libsoup 2.0. It has been upgraded to use libsoup 3.0, but we are still waiting for the release. If you also want to use GeocodeGlib then it will have to be 1.0.

The alternative, which I have been considering for our Snap, is to compile an unreleased version of osm-gps-map that has been upgraded to use libsoup 3.0, and include GeocodeGlib 2.0 in the package.

We only officially support the source distribution of Gramps. All of the operating system packages are community maintained. However, we do like to ensure that Gramps can be packaged easily for Windows, Mac, and popular Linux distributions such as Debian, Ubuntu, Fedora and Arch.

First off, thanks for the references. I struggled finding those via search or a simple click through on the Wiki pages - no idea why.

Second, thanks for some context. I guess “officially support” is the wrong wording. I was thinking more along the lines of “validated and tested” against.

We can build several distros images in CI and validate it that way and I was just wondering what the scope there is - and the apge around Installing Grmaps for Linux pretty much answers that. In principle it means that the addons developers would have to cover the same range or at least the different images cover the same amount.

I’ll definitely dig into the Pre-req Checker as well!

I haven’t dug into that item too much, to be honest. I’m just getting aware how many dependencies a Addon can actually have - you have the PyPI, System Packages, Operating System, versioned GTK and if they don’t come together exactly so, the Addon will fail. Some of those dependencies are declared - PyPI and System for example, the Gtk & Gdk indirectly by Gramps and the Operating System items not at all. I was looking for a why to corral those other dependencies too, tbh

I think I’ve posted this before but the Repology site is good for tracking package support on various OS flavours:

Craig

Dependencies are fun! I use the MacPorts package manager to install Gramps. It can recursively list all of the dependencies of a package, such as Gramps, with ‘port rdep gramps’. It lists 475 unique dependencies although some of these are only required to build and install. The forum software doesn’t allow me to upload the text file so here is the first 50 lines:

The following ports are dependencies of gramps @6.0.5_0+python313+x11:
  intltool
    gnome-common
      xz
        gettext
          xz-bootstrap
          ncurses
          gettext-tools-libs
            libiconv
              gperf
            libtextstyle
            gettext-runtime
      autoconf-archive
    expat
    p5.34-getopt-long
      perl5.34
        db48
        gdbm
          readline
    p5.34-pathtools
    p5.34-scalar-list-utils
    p5.34-xml-parser
      p5.34-file-sharedir-install
      p5.34-file-sharedir
        p5.34-inc-latest
        p5.34-class-inspector
        p5.34-list-moreutils
          p5.34-config-autoconf
            bison
              m4
              bison-runtime
            flex
              lzip
            gawk
              texinfo
                help2man
                  p5.34-locale-gettext
                libunistring
                  autoconf
                  automake
                  libtool
            grep
              pcre2
                bzip2
                libedit
                zlib
            gsed
            pkgconfig
            p5.34-capture-tiny
            p5.34-extutils-cbuilder
              p5.34-ipc-cmd

Craig