From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp2 ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms0.migadu.com with LMTPS id CO+tBXFYw2FKSQEAgWs5BA (envelope-from ) for ; Wed, 22 Dec 2021 17:55:13 +0100 Received: from aspmx1.migadu.com ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp2 with LMTPS id 2HaHAXFYw2EHKgAAB5/wlQ (envelope-from ) for ; Wed, 22 Dec 2021 16:55:13 +0000 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id BBCC0B599 for ; Wed, 22 Dec 2021 17:55:12 +0100 (CET) Received: from localhost ([::1]:51560 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1n04tT-0002pY-Sa for larch@yhetil.org; Wed, 22 Dec 2021 11:55:11 -0500 Received: from eggs.gnu.org ([209.51.188.92]:39984) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1n04sd-0002XY-Rg for guix-devel@gnu.org; Wed, 22 Dec 2021 11:54:20 -0500 Received: from minsky.hcoop.net ([104.248.1.95]:43404) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1n04sW-0006dP-FR for guix-devel@gnu.org; Wed, 22 Dec 2021 11:54:14 -0500 Received: from marsh.hcoop.net ([45.55.52.66]) by minsky.hcoop.net with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1n04sV-0003HF-Dl for guix-devel@gnu.org; Wed, 22 Dec 2021 11:54:11 -0500 Date: Wed, 22 Dec 2021 11:54:11 -0500 (EST) From: Jack Hill X-X-Sender: jackhill@marsh.hcoop.net To: guix-devel@gnu.org Subject: Browsers and Gstreamer plugins Message-ID: User-Agent: Alpine 2.21 (DEB 202 2017-01-01) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="925712948-1005798304-1640192051=:9433" Received-SPF: pass client-ip=104.248.1.95; envelope-from=jackhill@jackhill.us; helo=minsky.hcoop.net X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: guix-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+larch=yhetil.org@gnu.org Sender: "Guix-devel" X-Migadu-Flow: FLOW_IN X-Migadu-Country: US ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1640192112; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type:list-id:list-help:list-unsubscribe: list-subscribe:list-post; bh=slV95JEX33UcyyLtDDaUJMy/AiTrMYiKnU87UDy+bfA=; b=S384436HLpV2AWCrHKBtfJSMUc7NCD2d8W19kt/v/9RvkgAVEL+xvG2rV025jKoWzkV3Li ggfJw2hSFrabwtJ9wk9m7aA58t09ySBDAuabnV/MW5YvF7iiIpIRoKAkUe6bJh6chqEfuG ASVEVIezfaBasESwpKWvK2RJ7J29Dub8YdCSeuLUNiZ3yqe1+NU+/E6aYwKrVdjuREde6h mOq6hVbhsYZPICfTU+ZQYGZsce42sxvdRyzl4eH01gf6bJTA1xoxMIbbEOvCPAmLohKYzp M3taw7mzOUC1A+3BhbxMpbMzDPBCrp943o2q886kAkxnM1djA093eWzgH23RKg== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1640192112; a=rsa-sha256; cv=none; b=Hh5szlNtoKNfPuSgnqWwk0IHk4n0UQJ/Pg0R1S6/ccmMCxdtsZvcUNWQ2eXSm88iN5tS6x /7SpJMaqQVL2/+UmrVInTvYmqdc0jwURD/N1SWRm1StSiX+z6ofLL5/sJ81akE1lc7zaOI 0ucLPBd2jp4X3Fc+mWdWScA+AHt/mMHeEYj4nqY83NeAt91GpRLNqx+6jKiD6iMm1I+nf2 cq/3SSW+ytOcHpEWJ/AIYnR46XF1emV4Wh1pyJZTvoTmlq+/in9Yf/eobQiT/ObyUAffmx fotULLYAJi4t3ytZ89mUZFSbogKBuraJCHx+uO/1nUqPVNrMDO+8ni/cuenp9Q== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=none; dmarc=none; spf=pass (aspmx1.migadu.com: domain of "guix-devel-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-devel-bounces+larch=yhetil.org@gnu.org" X-Migadu-Spam-Score: -2.44 Authentication-Results: aspmx1.migadu.com; dkim=none; dmarc=none; spf=pass (aspmx1.migadu.com: domain of "guix-devel-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-devel-bounces+larch=yhetil.org@gnu.org" X-Migadu-Queue-Id: BBCC0B599 X-Spam-Score: -2.44 X-Migadu-Scanner: scn0.migadu.com X-TUID: ZZzzr12uIfQv This message is in MIME format. The first part should be readable text, while the remaining parts are likely unreadable without MIME-aware tools. --925712948-1005798304-1640192051=:9433 Content-Type: text/plain; format=flowed; charset=US-ASCII Hi Guix, While we have made progress on #52375 [0], the way forward remains unclear. In summary, WebKitGTK expects certain GStreamer plugins to be available. Depending on which plugins are missing and the web page content, the process corresponding to a browser tab may even crash. Currently, we expect folks to manually install the necessary plugins into their profile/environment. Complicating matters, it is not clear to me which plugins WebKitGTK needs or optionally makes use of. At least some of the needed plugins are from gst-plugins-bad, which upstream considers to be of lesser (code) quality [1]. gst-plugins-bad is also a large dependency. Adding it would increase the closure size of browsers by almost 1GiB! [0] https://issues.guix.gnu.org/52375 [1] https://gitlab.freedesktop.org/gstreamer/gst-plugins-bad/-/blob/ca8068c6d793d7aaa6f2e2cc6324fdedfe2f33fa/README#L80 I believe that what I have written above is more or less factual. Now for my opinion: I think that we should make browsers work out of the box on commonly-encountered web content. To that end, I propose that we wrap WebKitGTK-powered browsers so that they can find the necessary plugins. I have attached a proof-of-concept patch that does just that for Vimb. I used the gst-plugins/selection procedure [2] to to add just one plugin from gst-plugins-bad that fixed the crash I was seeing in #52374. Size comparisons: Existing Vimb: 1397.5 MiB Vimb with my patch: 1409.9 MiB Vimb with all of gst-plugins-bad: 2298.6 MiB Of course this is just the bare-minimum set of plugins. We may want to work with WebKitGTK upstream to determine any additional ones that we should be including. [2] The patch depends on the fix for gst-plugins/selection that I submitted in https://issues.guix.gnu.org/52730 A note on the approach of wrapping browsers rather than somehow including the plugins in WebKitGTK. It is much more obvious and straight forward (to me at least) to wrap the browser executable. Also WebKitGTK could in theory be used to render content that comes from a controlled environment, not the web, and therefore doesn't need the "web plugins". A downside to doing it this way is that each browser would need to be wrapped in the same set of plugins. Perhaps we can factor that out so that the plugin list only has to be maintained in one place. Questions and comments? How shall we move forward? Is it ok to wrap browsers in this way? Best, Jack --925712948-1005798304-1640192051=:9433 Content-Type: text/x-diff; name=0001-gnu-vimb-Wrap-with-required-gstreamer-plugins.patch Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=0001-gnu-vimb-Wrap-with-required-gstreamer-plugins.patch RnJvbSA0NDk3MWI1YzVjMmQzNTVlZDZiMjcwODEwZWU3ZmNiMTZiMTA2ZWRi IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQ0KRnJvbTogSmFjayBIaWxsIDxq YWNraGlsbEBqYWNraGlsbC51cz4NCkRhdGU6IFdlZCwgMjIgRGVjIDIwMjEg MTE6MDc6MzYgLTA1MDANClN1YmplY3Q6IFtQQVRDSF0gZ251OiB2aW1iOiBX cmFwIHdpdGggcmVxdWlyZWQgZ3N0cmVhbWVyIHBsdWdpbnMuDQoNCiogZ251 L3BhY2thZ2Uvd2ViLWJyb3dzZXJzLnNjbSAodmltYilbbWFrZS1mbGFnc106 IFN3aXRoIHRvIHVzaW5nIGdleHBzLg0KW3BoYXNlc106IEFkZCAnd3JhcC1n c3QtcGx1Z2lucy4NCltpbnB1dHNdOiBSZW1vdmUgaW5wdXQgbGFiZWxzIGFu ZCBhZGQgZGVidWd1dGlscyBmcm9tIGdzdC1wbHVnaW5zLWJhZC4NCi0tLQ0K IGdudS9wYWNrYWdlcy93ZWItYnJvd3NlcnMuc2NtIHwgMjkgKysrKysrKysr KysrKysrKysrKy0tLS0tLS0tLS0NCiAxIGZpbGUgY2hhbmdlZCwgMTkgaW5z ZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pDQoNCmRpZmYgLS1naXQgYS9n bnUvcGFja2FnZXMvd2ViLWJyb3dzZXJzLnNjbSBiL2dudS9wYWNrYWdlcy93 ZWItYnJvd3NlcnMuc2NtDQppbmRleCAxYTU2ZDlhOTMzLi4yNjE1MWZiNTZm IDEwMDY0NA0KLS0tIGEvZ251L3BhY2thZ2VzL3dlYi1icm93c2Vycy5zY20N CisrKyBiL2dudS9wYWNrYWdlcy93ZWItYnJvd3NlcnMuc2NtDQpAQCAtNDQs NiArNDQsNyBAQCAoZGVmaW5lLW1vZHVsZSAoZ251IHBhY2thZ2VzIHdlYi1i cm93c2VycykNCiAgICM6dXNlLW1vZHVsZSAoZ3VpeCBidWlsZC1zeXN0ZW0g Z28pDQogICAjOnVzZS1tb2R1bGUgKGd1aXggYnVpbGQtc3lzdGVtIHB5dGhv bikNCiAgICM6dXNlLW1vZHVsZSAoZ3VpeCBkb3dubG9hZCkNCisgICM6dXNl LW1vZHVsZSAoZ3VpeCBnZXhwKQ0KICAgIzp1c2UtbW9kdWxlIChndWl4IGdp dC1kb3dubG9hZCkNCiAgICM6dXNlLW1vZHVsZSAoKGd1aXggbGljZW5zZXMp ICM6cHJlZml4IGxpY2Vuc2U6KQ0KICAgIzp1c2UtbW9kdWxlIChndWl4IHBh Y2thZ2VzKQ0KQEAgLTY4LDYgKzY5LDcgQEAgKGRlZmluZS1tb2R1bGUgKGdu dSBwYWNrYWdlcyB3ZWItYnJvd3NlcnMpDQogICAjOnVzZS1tb2R1bGUgKGdu dSBwYWNrYWdlcyBnbm9tZSkNCiAgICM6dXNlLW1vZHVsZSAoZ251IHBhY2th Z2VzIGdub21lLXh5eikNCiAgICM6dXNlLW1vZHVsZSAoZ251IHBhY2thZ2Vz IGdudXBnKQ0KKyAgIzp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMgZ3N0cmVh bWVyKQ0KICAgIzp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMgZ3RrKQ0KICAg Izp1c2UtbW9kdWxlIChnbnUgcGFja2FnZXMgaW1hZ2UpDQogICAjOnVzZS1t b2R1bGUgKGdudSBwYWNrYWdlcyBsaWJldmVudCkNCkBAIC01NTEsMTcgKzU1 MywyNCBAQCAoZGVmaW5lLXB1YmxpYyB2aW1iDQogICAgICAgIChmaWxlLW5h bWUgKGdpdC1maWxlLW5hbWUgbmFtZSB2ZXJzaW9uKSkpKQ0KICAgICAoYnVp bGQtc3lzdGVtIGdsaWItb3ItZ3RrLWJ1aWxkLXN5c3RlbSkNCiAgICAgKGFy Z3VtZW50cw0KLSAgICAgJygjOnRlc3RzPyAjZiAgICAgICAgICAgICAgICAg ICAgICA7IG5vIHRlc3RzDQotICAgICAgICM6bWFrZS1mbGFncyAobGlzdCAi Q0M9Z2NjIg0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIkRFU1RESVI9 Ig0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cmluZy1hcHBlbmQg IlBSRUZJWD0iICVvdXRwdXQpKQ0KLSAgICAgICAjOnBoYXNlcw0KLSAgICAg ICAobW9kaWZ5LXBoYXNlcyAlc3RhbmRhcmQtcGhhc2VzDQotICAgICAgICAg KGRlbGV0ZSAnY29uZmlndXJlKSkpKQ0KKyAgICAgKGxpc3QgIzp0ZXN0cz8g I2YgICAgICAgICAgICAgICAgICAgICAgOyBubyB0ZXN0cw0KKyAgICAgICAg ICAgIzptYWtlLWZsYWdzICN+KGxpc3QgIkNDPWdjYyINCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICJERVNURElSPSINCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChzdHJpbmctYXBwZW5kICJQUkVGSVg9 IiAjJG91dHB1dCkpDQorICAgICAgICAgICAjOnBoYXNlcw0KKyAgICAgICAg ICAgI34obW9kaWZ5LXBoYXNlcyAlc3RhbmRhcmQtcGhhc2VzDQorICAgICAg ICAgICAgICAgKGRlbGV0ZSAnY29uZmlndXJlKQ0KKyAgICAgICAgICAgICAg IChhZGQtYWZ0ZXIgJ2dsaWItb3ItZ3RrLXdyYXAgJ3dyYXAtZ3N0LXBsdWdp bnMNCisgICAgICAgICAgICAgICAgIChsYW1iZGEgXw0KKyAgICAgICAgICAg ICAgICAgICAod3JhcC1wcm9ncmFtIChzdHJpbmctYXBwZW5kICMkb3V0cHV0 ICIvYmluL3ZpbWIiKQ0KKyAgICAgICAgICAgICAgICAgICAgIGAoIkdTVF9Q TFVHSU5fU1lTVEVNX1BBVEgiIHN1ZmZpeA0KKyAgICAgICAgICAgICAgICAg ICAgICAgKCwoZ2V0ZW52ICJHU1RfUExVR0lOX1NZU1RFTV9QQVRIIikpKSkp KSkpKQ0KICAgICAoaW5wdXRzDQotICAgICBgKCgiZ2xpYi1uZXR3b3JraW5n IiAsZ2xpYi1uZXR3b3JraW5nKQ0KLSAgICAgICAoImdzZXR0aW5ncy1kZXNr dG9wLXNjaGVtYXMiICxnc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzKQ0KLSAg ICAgICAoIndlYmtpdGd0ayIgLHdlYmtpdGd0ay13aXRoLWxpYnNvdXAyKSkp DQorICAgICAobGlzdCBnbGliLW5ldHdvcmtpbmcNCisgICAgICAgICAgIGdz ZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMNCisgICAgICAgICAgIChnc3QtcGx1 Z2lucy9zZWxlY3Rpb24gZ3N0LXBsdWdpbnMtYmFkDQorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICM6cGx1Z2lucyAnKCJkZWJ1Z3V0aWxz IikpDQorICAgICAgICAgICB3ZWJraXRndGstd2l0aC1saWJzb3VwMikpDQog ICAgIChuYXRpdmUtaW5wdXRzDQogICAgICAobGlzdCBwa2ctY29uZmlnKSkN CiAgICAgKGhvbWUtcGFnZSAiaHR0cHM6Ly9mYW5nbGluZ3N1LmdpdGh1Yi5p by92aW1iLyIpDQotLSANCjIuMzQuMA0KDQo= --925712948-1005798304-1640192051=:9433--