X2Go Bug report logs - #1633
New clipboard issue in Libreoffice with X2Go

Package: x2goserver; Maintainer for x2goserver is X2Go Developers <x2go-dev@lists.x2go.org>; Source for x2goserver is src:x2goserver.

Reported by: Jens Reyer <jens.reyer@leberrohstoffe.com>

Date: Wed, 12 Mar 2025 10:05:01 UTC

Severity: normal

Full log


🔗 View this message in rfc822 format

X-Loop: owner@bugs.x2go.org
Subject: Bug#1633: [X2Go-Dev] Bug#1633: New clipboard issue in Libreoffice with X2Go
Reply-To: Ulrich Sibiller <ulrich.sibiller@gmail.com>, 1633@bugs.x2go.org
Resent-From: Ulrich Sibiller <ulrich.sibiller@gmail.com>
Resent-To: x2go-dev@lists.x2go.org
Resent-CC: X2Go Developers <x2go-dev@lists.x2go.org>
X-Loop: owner@bugs.x2go.org
Resent-Date: Mon, 17 Mar 2025 20:40:02 +0000
Resent-Message-ID: <handler.1633.B1633.17422437981507028@bugs.x2go.org>
Resent-Sender: owner@bugs.x2go.org
X-X2Go-PR-Message: followup 1633
X-X2Go-PR-Package: x2goserver
X-X2Go-PR-Keywords: 
References: <CANVnVYLkcoG0nfM1j5kRJ2yYxX2TTiBcc3k6QuqYPLG7Q6FW5w@mail.gmail.com> <810710459.135614.1741783851926@195.98.208.36> <CANVnVYL+si4Dn5OypG3iBYgwD-uf-n=mgLmWbFj6eoTv47S0aA@mail.gmail.com> <CANVnVYJX1DNocs6252Vin_G-_W8+h4amJ2wFgmu0AV6A=BqVhA@mail.gmail.com> <1728065184.137568.1741862572763@195.98.208.36> <1081187274.137588.1741862691938@195.98.208.36> <CANVnVY+DBpxq8E8KrAdP75+YEsKGM-Eup9dADxyCnntwjz8uLw@mail.gmail.com> <1748520028.138240.1741874623478@195.98.208.36> <999247165.134927.1741773596827@195.98.208.36> <CANVnVYLD5DjxtGQpb=S_0_95eMW2=Up0z1napK6CqTBuNTTa6A@mail.gmail.com> <192506419.142362.1742212383293@195.98.208.36> <CANVnVYK=JUV9-xmZPdOcme0SEFqk+jsxLEL7WJyYJQ2Eg3qk=Q@mail.gmail.com> <999247165.134927.1741773596827@195.98.208.36>
Received: via spool by 1633-submit@bugs.x2go.org id=B1633.17422437981507028
          (code B ref 1633); Mon, 17 Mar 2025 20:40:02 +0000
Received: (at 1633) by bugs.x2go.org; 17 Mar 2025 20:36:38 +0000
X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on
	ymir.das-netzwerkteam.de
X-Spam-Level: 
X-Spam-Status: No, score=-2.0 required=3.0 tests=BAYES_00,DKIM_SIGNED,
	DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FROM,RCVD_IN_DNSWL_BLOCKED,
	RCVD_IN_ZEN_BLOCKED_OPENDNS,SPF_HELO_NONE,URIBL_BLOCKED,
	URIBL_DBL_BLOCKED_OPENDNS,URIBL_ZEN_BLOCKED_OPENDNS autolearn=ham
	autolearn_force=no version=3.4.4
Received: from mail-lf1-x135.google.com (mail-lf1-x135.google.com [IPv6:2a00:1450:4864:20::135])
	by ymir.das-netzwerkteam.de (Postfix) with ESMTPS id EEE1C5DA7C
	for <1633@bugs.x2go.org>; Mon, 17 Mar 2025 21:36:28 +0100 (CET)
Received: by mail-lf1-x135.google.com with SMTP id 2adb3069b0e04-549b116321aso5395723e87.3
        for <1633@bugs.x2go.org>; Mon, 17 Mar 2025 13:36:28 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=gmail.com; s=20230601; t=1742243788; x=1742848588; darn=bugs.x2go.org;
        h=content-transfer-encoding:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:from:to:cc:subject:date
         :message-id:reply-to;
        bh=zvJqi2hGmXzqEH17cTv9BIegd4Pxm3tD9JtwZ+9REfI=;
        b=B5xxVi0ImI0cquK88mM1lo7Pj+NAxnB02cnuDGTsPrzGbfzYSKeDXzCE2fLYtlXp1M
         p32g9ppGFEj+E7vlwk14ItlWhF2GyThD1RDsKB5waWJC4n1tcDuESTZePqV7VQ1ncB3n
         owDEa2WIO4nOe0VB3DrRYLroAsl0iJiTORowh1GYqZdiYe59OtrMC6vN5O6HOkl8gsma
         KKTiGCZfa8UUvoXxwNqxFcmoujLD1Flpn3JhFnJ+1o3piJm1im0BxBEv7IX+GLCR60/R
         05IibDgs74UdbF+hiWqsNqhqHpKC1LgfBhxFonPDhA4T5tDdqpz4t4RbXoqJ6KaSgLim
         fXVA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
        d=1e100.net; s=20230601; t=1742243788; x=1742848588;
        h=content-transfer-encoding:to:subject:message-id:date:from
         :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc
         :subject:date:message-id:reply-to;
        bh=zvJqi2hGmXzqEH17cTv9BIegd4Pxm3tD9JtwZ+9REfI=;
        b=Z0nCBQOkQoxdPCniCnzxLZUIrG/8IboZcUhWVBm5TEsp9zuZgrXqEUry1tvlNgu2gh
         hBteUA3QKfMoKY9lEuO7nbToEDrtf6rLMCR5WvyfiQ0EUq3cJZZ5CXeziZSNJRlhNv3h
         Z6oLuUsZcVPVuEcnmDuCpaIAC/mLLVdT00ij/dBgTRHLy4sIqPvZkhz075koMvyCZal0
         EDtM+QkkY5T4t3djpl4QlDJnNQKzIUYBtLVb98nXc53Q6OBJE9y6uLN5CZdZNgh6+OAj
         VurNAvByd2kPuYL0YufMpuOtt51NK2rIZ87Nnp963d/16Hd080b2Nhvi1SWHvD9kD6Z6
         gU9w==
X-Forwarded-Encrypted: i=1; AJvYcCVxZIOr8R7iPuxCGjqUOfUke39zILEePkGOO4Tjeit76wp8VLKGAKgeUqpjPq21xWLmutAi@bugs.x2go.org
X-Gm-Message-State: AOJu0Yw2TgF7RfdTG8EEMwRIR6/oc+/lFD9HUC3RsfR9rBZxpOywC+vZ
	COopNy3yyJPEBJeS17g/xWgyMo1vW4KeWh2MuVGXbw74APBv+9nPi/E/gtGcSYoQ1xUhHq8+dp3
	iOEtzIQaEBDgdEgrt2dzqA7qUzThkCgOI
X-Gm-Gg: ASbGncvl3fW8oTixX2a6qU3Ca2PZnDUM7ty5b7Q3r6uMYggT9W35tHLtTEyyd+18TgV
	HeRuqVZ0TXtD/CLqze6Rkak5W2NsnGG7jj2ctHtxd1133EvFPX7JJ+G/z9sjFXil73FVOlz/Xbn
	7zOtGovaj5HVzBT29PrNvQEj+5Jnf+9ZbhmjLd
X-Google-Smtp-Source: AGHT+IGt3PYmykuiT7rzjQidf2gxP2Yapjs1+x4JB9a38LqIgDbWG5oFVEkjwW0f7tHTwUVykaOICm1M253rQ2e9Sto=
X-Received: by 2002:a05:6512:3da2:b0:545:1db5:f224 with SMTP id
 2adb3069b0e04-549c38cfa91mr8595259e87.11.1742243787230; Mon, 17 Mar 2025
 13:36:27 -0700 (PDT)
MIME-Version: 1.0
In-Reply-To: <CANVnVYK=JUV9-xmZPdOcme0SEFqk+jsxLEL7WJyYJQ2Eg3qk=Q@mail.gmail.com>
From: Ulrich Sibiller <ulrich.sibiller@gmail.com>
Date: Mon, 17 Mar 2025 21:35:59 +0100
X-Gm-Features: AQ5f1Jpw0JOKv-iaZZaFfmHuZ4v4gcv4QDDdpu4kjjrDsOOfHOQGwvCQbgP3r6I
Message-ID: <CANVnVYLAGWS4Kc5xpv-dAGhrbUuQXU5Fs258oHP6Fxewvas3XQ@mail.gmail.com>
To: Jens Reyer <jens.reyer@leberrohstoffe.com>, 1633@bugs.x2go.org
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Hello again,

I had a look at the logfile. It's been a while since I worked on the
clipboard code. But I _think_ there are a few things you should test:

- restrict clipboard to text only: add X2GO_NXAGENT_DEFAULT_OPTIONS+="
-textclipboard" to /etc/x2go/x2goagent.options on the server side and
start a NEW session (no reconnect). Does that help?

- not sure what exactly you have been doing while creating the session
log. But I can seen "caja" on the server side requesting clipboard.
Please try to run a session without caja (which is a file manager,
unclear what it does with selections).

- it _looks_ like something on the client side is requesting the
clipboard when you are doing your tests. The question is what program
is doing that. If possible run a few programs on the client side,
preferably only a very simple session (fvwm twm or so) and an xterm.
Run x2goclient from there.
To find out what program on the client side is requesting the
clipboard you can check the server log file for lines like this:
nxagentHandleSelectionRequestFromXServer: Received
SelectionRequestEvent from real server: selection [529][CLIPBOARD]
target [469][TARGETS] requestor
[display[nx,options=/tmp/.x2go-localadmin/C-localadmin-50-1742211621_stDMATE_dp24/options:50.0]/0xe09e31]
destination [386][GDK_SELECTION] time [13640727]. The bold number is
the requestor. You can check that with xwininfo -id <number> on the
client.

- there's an option to include the clipboard content (or rather the
data being transferred) in the session log in DEBUG mode. This helps
in identifying what stage we are in. Change #undef
PRINT_CLIPBOARD_CONTENT_ON_DEBUG to #define and recompile

- while at it you could also try to change the timeout for the
clipboard transfer. I hardcoded 5s when I wrote all this and it was ok
for me ever since. But YMMV. #define CONVERSION_TIMEOUT 5000. In your
log I see errors like this "nxagentConvertSelection: got new request
before timeout expired on previous request, notifying failure to
client [20] (addr [0x557c39ea2f40] PID [18630] Cmd
[/usr/lib/libreoffice/program/soffice.bin])". This means that the
previous clipboard-related communication has not finished when soffice
starts another request which then is denied. So this indicates that
some answer from the client side is still due. I suspect that this
answer is never sent so your diagnosis that every second paste is
working might in fact resemble a 5s pattern. Meaning: you can only
successfully paste every 5s, but not quicker. So I suggest to decrease
the timeout to 2s or so and see if that makes a difference for you.
One thing here is strange here, though: Doing a copy in soffice on the
server side makes soffice the clipboard owner. So while you are
working inside soffice there should be no communication to the client
that awaits any answer. Which again leads me to the suspicion that
there's some clipboard manager involved.

- x11 clipboard transfers are size restricted. That means that bigger
selections are to be transferred to the requestor in multiple packets.
nx does not support this currently, so you are restricted to 256kB. Is
it possible that your selection is bigger than that?

- I also see SelectionClear requests from the client side. Which also
indicates there's something dealing with clipboard on the client side.

- I played around with these tools:
https://github.com/phillbush/xcliputils Using xclipowner -w you can
watch if the clipboard owner changes. Run that on the client and then
do clipboard stuff in libreoffice on the server. The owner as printed
by xclipowner should never change except for the first time. If it
does we have another indication of a clipboard-manager-in-the-middle
attack ;-)

Hope that helps!

Uli





On Mon, Mar 17, 2025 at 1:13 PM Ulrich Sibiller
<ulrich.sibiller@gmail.com> wrote:
>
> Hi,
>
> I don't know the differences between the x2go repo (I have nothing to do with this; I am developing solely on the arctica repo) and the arctica repo. But since this is 3.5.99.27 there shouldn't be too many differences, especially regarding clipboard. So this is ok.
>
> The results are interesting (and match my assumptions). Now that we know that the client to server synchronisation is the culprit we can deduce some problem on the client side. I will scan the logfile later, maybe it will shine some light on the issue. For now it might be interesting to know if the server server clipboard can be pasted _on the client side_.
>
> Uli
>
>
>
>
> On Mon, Mar 17, 2025 at 12:55 PM Jens Reyer <jens.reyer@leberrohstoffe.com> wrote:
>>
>> Hi
>>
>>
>> I recompiled nx-libs (based on the current Debian 2:3.5.99.27-2 code, NXAGENT Version 3.5.99.27). I hope this works, tell me if I need to switch to the Arctica code). There I enabled TEST and DEBUG and installed those packages.
>> Attached is a session.log (Mate, with LibreCalc autostarted, where I first type in a cell, then do a successful ctrl+c, ctrl+v, then a failed one and then a successful one.
>>
>>
>> results for different clipboard settings:
>>
>> Clipboard bidirectional between client and server: first, and then every second attempt work
>>
>> Clipboard client to server: half of the attempts fail, no clear pattern which ones fail
>>
>> Clipboard server to client: everything works
>>
>> Clipboard between server and client disabled: everything works
>>
>>
>>
>>
>> Thanks!
>>
>>
>> Ulrich Sibiller <ulrich.sibiller@gmail.com> hat am 13. März 2025 um 15:15 geschrieben:
>>
>> Hi,
>>
>> disabling clipboard via these setting will effectively suppress communication between the client and the server regarding clipboard. All clipboard communication will then happen between libreoffice and the nxagent on the server side. No remote communication involved, not slowing down anything.
>>
>> So chances are that your communication is too slow. I _think_ playing around with the other clipboard options will show that it works with one of the "copy from X to Y" options and not with the other. Can you confirm?
>>
>> Uli
>>
>>
>> On Thu, Mar 13, 2025 at 3:03 PM Jens Reyer <jens.reyer@leberrohstoffe.com> wrote:
>>
>> I did the lightweight test on the client side, my local PC at work.
>>
>>
>> And indeed, if I open a Mate x2go session to localhost's IP on the Linuxmint 22.1 Mate client (so server and client are the same, just different users) I can NOT reproduce the issue.
>>
>>
>> Now I connected from another client/PC to my PC (so what's usually a client acted now as remote server): the issue still exists but only in about HALF of the cases, while it previously existed consistently in every case after the first try.
>>
>>
>> In the original tests the server's were VMs (Proxmox PVE).
>>
>>
>>
>> Tests with connection settings:
>>
>>
>> Previously I had the issue while connecting to the reomote server with connection LAN (here at work) and probably ADSL (from home). Now I tested the same remote server with MODEM: the issue still exists.
>>
>>
>> Then I changed the clipboard from bi-directional (German: "Zwischenablage-Modus: Kopieren und Einfügen in beide Richtungen möglich" to disabled ("Zwischenablage komplett deaktivieren"). The issue is NOT reproducible anymore.
>>
>> So now we've found a workaround, good :)
>>
>>
>> Setting the keyboard from auto-detect to "Model pc105, layout de" didn't help.
>>
>>
>> Are there any other settings I should test?
>>
>> I'll recompile nxagent later.
>>
>>
>>
>> Ulrich Sibiller <ulrich.sibiller@gmail.com> hat am 13. März 2025 um 13:08 geschrieben:
>>
>> Hi,
>>
>> just to be sure: have you done the lightweight test on the server side or the client side?
>>
>> Assuming you have done the test on the server side. This indicates that the problem is somehow tied to the connection. Can you please check if different connection settings in x2go lead to different results?
>>
>> You don't need to compile x2goserver, just nxagent. Compiling is done like this:
>> 1. checkout nx-libs from ArcticaProject on github
>> 2. run make
>>
>> If this fails you probably need to install more dependencies. If it succeeds, you need to repeat that after changing these lines in nx-X11/programs/Xserver/hw/nxagent/Clipboard.c:
>>
>> #undef TEST -> #define TEST
>> #undef DEBUG -> #define DEBUG
>>
>> After running make again you should find a new nxagent in nx-X11/programs/Xserver
>>
>> Uli
>>
>>
>>
>> On Thu, Mar 13, 2025 at 11:45 AM Jens Reyer <jens.reyer@leberrohstoffe.com> wrote:
>>
>> Sorry for yet another PS:
>> Yes, I may recompile a test x2goserver, if you tell me what changes/options you need.
>>
>> Jens Reyer <jens.reyer@leberrohstoffe.com> hat am 13. März 2025 um 11:42 geschrieben:
>>
>> I could NOT reproduce the problem with your lightweight test on Linuxmint 22.1 Mate:
>>
>> nxagent -ac :55
>>
>> DISPLAY=:55 twm
>>
>> DISPLAY=:55 soffice
>>
>> --> OK (except maybe one fail, but that was probably human failure)
>>
>>
>> For the previous non-lightweight-test in twm on the remote Debian Trixie server I started in that x2go/twm session a terminal and from there soffice, since I couldn't find a direct Libreoffice launcher. So I tried this for the lightweight test - still works:
>>
>> nxagent -ac :55
>>
>> DISPLAY=:55 twm
>>
>> DISPLAY=:55 xterm
>>
>> In xterm: soffice
>>
>> --> OK
>>
>>
>> I agree there must be something specific with newer Libreoffice versions, since I neither found this with other applications, nor with libreoffice 7.3.7. But as just discovered this is only an issue with (remote?) X2Go sessions.
>>
>>
>> Ulrich Sibiller <ulrich.sibiller@gmail.com> hat am 13. März 2025 um 10:52 geschrieben:
>>
>> Ok, thanks for the information. The nxagent is the current version, that's ok. Also I think we take out the client from the equation.
>>
>> I have just tried your reproducer with LibreOffice 6.4.7.2 on RockyLinux 8.10 in a rootless NX session without any problems. Maybe this is tied to newer LibreOffice versions?
>>
>> You can also do a very lightweight test locally like this:
>> 1. run nxagent -ac :55
>> 2. DISPLAY=:55 openbox (or any other WM)
>> 3. DISPLAY=:55 soffice -> will open soffice in the nx window.
>>
>> Is the problem showing up then, too?
>>
>> Maybe we need more debugging information which would require to recompile nxagent on your server system.
>>
>>
>> Uli
>>
>> On Wed, Mar 12, 2025 at 3:00 PM Ulrich Sibiller <ulrich.sibiller@gmail.com> wrote:
>>
>> Sorry, x2goserver-x2goagent is only a wrapper. The real functionality sits in the nxagent package, and that's the version I need. Alternatively you can run /usr/bin/x2goagent -version on the server.
>>
>> KDE includes a clipboard manager. What DE are you using?
>>
>> Does the problem also show up when you are using a very simple window manager like twm or fvwm2 or openbox?
>>
>> Uli
>>
>> On Wed, Mar 12, 2025 at 1:55 PM Jens Reyer <jens.reyer@leberrohstoffe.com> wrote:
>>
>> Hi,
>>
>> thanks for the quick answer.
>>
>>
>> x2goagent 4.1.0.6, as provided by the distributions,
>>
>> so on the affected Debian Trixie/Sid Mate server:
>>
>> x2goserver-x2goagent 4.1.0.6-1.1+b1
>>
>> and on LinuxMint 22.1 Mate:
>>
>> x2goserver-x2goagent 4.1.0.6-1.1build1
>>
>>
>> To the best of my knowledge there's no clipboard manager running on the systems, neither on the 2 tested servers nor the 3 clients.
>>
>> Most systems were just set up recently by myself, and I never used or even heard about clipboardmanagers before. Neither clipman nor xclipboard are installed.
>>
>>
>> Greets
>>
>> jre
>>
>>
>> Ulrich Sibiller <ulrich.sibiller@gmail.com> hat am 12. März 2025 um 11:13 geschrieben:
>>
>> Hi,
>>
>>
>> please let us know the version of nxagent (x2goagent) you are using. Also ensure that there’s no clipboard manager running (on both sides!).
>>
>>
>> Uli
>>
>>
>> On Wed, Mar 12, 2025 at 11:11 AM Jens Reyer <jens.reyer@leberrohstoffe.com> wrote:
>>
>> Package: x2goserver
>>
>> Version: 4.1.0.6-1.1+b1
>>
>> Severity: normal
>>
>>
>> Hi,
>>
>> since an update/reinstallation copy&pasting in Libreoffice in X2Go always needs to be repeated, only the very first run works instantly.
>>
>> We found this issue only when using X2Go, but not when working directly on the same machine.
>>
>> It happens only in Libreoffice (Calc and Writer), but not in e.g. Firefox or an editor.
>>
>> Starting Libreoffice in safe mode (soffice --safe-mode) does not help.
>>
>>
>> Steps to reproduce:
>>
>>
>> Start Libreoffice
>>
>> ctrl+c, ctrl+v OK
>>
>> ctrl+c, ctrl+v FAIL (nothing is inserted)
>>
>> ctrl+c, ctrl+v FAIL (nothing is inserted)
>>
>>
>> Start Libreoffice
>>
>> right-click > copy, right-click > paste OK
>>
>> right-click > copy, right-click > paste FAIL (Libreoffice Calc asks where to shift the cells, but then nothing is inserted)
>>
>> right-click > copy, right-click > paste FAIL (Libreoffice Calc asks where to shift the cells, but then nothing is inserted)
>>
>>
>> Workaround:
>>
>> ctrl+c, ctrl+v OK
>>
>> ctrl+c, ctrl+c, ctrl+v OK
>>
>> ctrl+c, ctrl+c, ctrl+v OK
>>
>>
>> Tested affected servers:
>>
>> Debian Trixie/Sid Mate (libreoffice 4:24.8.5-2 amd64, x2goserver 4.1.0.6-1.1+b1)
>>
>> LinuxMint 22.1 Mate (libreoffice 4:24.2.7-0ubuntu0.24.04.2, x2goserver 4.1.0.6-1.1build1)
>>
>>
>> Previously not affected server:
>>
>> LinuxMint 21.3 Mate (libreoffice 1:7.3.7-0ubuntu0.22.04.8, x2goserver 4.1.0.3-5)
>>
>>
>> Tested Clients:
>>
>> Debian Trixie (x2goclient 4.1.2.3-3)
>>
>> Linuxmint 22.1 (x2goclient 4.1.2.3-1build3)
>>
>> Win10 (X2GoClient 4.1.2.2), with the X.org server option "do not use primary clipboard" both checked and unchecked
>>
>>
>> I reported this issue only here, not with the distros or Libreoffice. Please tell me if I should otherwise or if I should provide additional info or tests.
>>
>>
>> My boss is willing to pay for a solution. Just contact me.
>>
>>
>> Thanks in advance and thanks for all your work!
>>
>> Jens Reyer
>>
>> _______________________________________________
>> x2go-dev mailing list
>> x2go-dev@lists.x2go.org
>> https://lists.x2go.org/listinfo/x2go-dev
>>
>> _______________________________________________
>> x2go-dev mailing list
>> x2go-dev@lists.x2go.org
>> https://lists.x2go.org/listinfo/x2go-dev
>>
>> _______________________________________________
>> x2go-dev mailing list
>> x2go-dev@lists.x2go.org
>> https://lists.x2go.org/listinfo/x2go-dev
>>
>>
>>
>> _______________________________________________
>> x2go-dev mailing list
>> x2go-dev@lists.x2go.org
>> https://lists.x2go.org/listinfo/x2go-dev
>>
>> _______________________________________________
>> x2go-dev mailing list
>> x2go-dev@lists.x2go.org
>> https://lists.x2go.org/listinfo/x2go-dev

Send a report that this bug log contains spam.


X2Go Developers <owner@bugs.x2go.org>. Last modified: Wed Apr 2 16:32:01 2025; Machine Name: ymir.das-netzwerkteam.de

X2Go Bug tracking system

Debbugs is free software and licensed under the terms of the GNU Public License version 2. The current version can be obtained from https://bugs.debian.org/debbugs-source/.

Copyright © 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson, 2005-2017 Don Armstrong, and many other contributors.