changelog shortlog graph tags branches changeset files file revisions raw help

Mercurial > org > notes / annotate 20240218.org

changeset 0: 87b04952fb18
child: 04e86b94ef1a
author: Richard Westhaver <ellis@rwest.io>
date: Sun, 28 Apr 2024 19:51:45 -0400
permissions: -rw-r--r--
description: init
0
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
1
 * NOTE WL vs X
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
2
 :LOGBOOK:
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
3
 - State "NOTE"       from              [2024-02-18 Sun 11:55]
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
4
 :END:
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
5
 In the past few months there has been drama regarding Wayland vs X. It
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
6
 seems to be on everyone's minds after Artem's freakout issue and the
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
7
 follow up YT vids/comments.
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
8
 
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
9
 I admit that it made me reconsider the fitness of WL as a whole -
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
10
 there was a github gist that made some scathing arguments against it.
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
11
 
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
12
 It's an odd debate though. I think there are many misunderstandings.
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
13
 
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
14
 So first off, if we look at the homepage
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
15
 https://wayland.freedesktop.org/, Wayland claims it is a replacement
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
16
 for X11. It now has /manifest destiny/, which in my opinion is a great
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
17
 shame.
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
18
 
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
19
 X-pros seem to agree that Wayland has /manifest destiny/ - like if you
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
20
 are building softwares that look remotely like a window system, it's a
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
21
 successor to X. That's the model of doing things and there's no way
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
22
 around it.
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
23
 
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
24
 The disagreement starts with how this destiny - of an X2 - should be
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
25
 fulfilled. X-pros want a fork of X, but it's too late for
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
26
 that. WL-pros want X to run on top of Wayland compositor:
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
27
 https://wayland.freedesktop.org/xserver.html.
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
28
 
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
29
 Xwayland is a problem for me. From the project description: 'if we're
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
30
 migrating away from X, it makes sense to have a good backwards
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
31
 compatibility story.' Full disclosure: I have never done significant
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
32
 work on Xwayland, so perhaps my opinion is unwarranted. But I have no
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
33
 intention of attempting to maintain a computer system that uses
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
34
 Wayland and X clients at the same time.
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
35
 
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
36
 To me, X is ol' reliable. Every distro has first-class X support, and
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
37
 it runs on most systems with very little user intervention. Where it
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
38
 doesn't, there is 20+ years of dev history and battle-tested
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
39
 workarounds for you to find your solution in.
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
40
 
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
41
 Wayland is the new kid on the block, born just in 2008. It's a fresh
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
42
 start to one of the most difficult challenges in software - window
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
43
 systems. A re-write would be pointless though, and so the real
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
44
 value-add is in design. Wayland is designed as a protocol and
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
45
 collection of libraries which are implemented in your own
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
46
 compositor. Coming from Lisp - with ANSI Common Lisp and SRFIs, this
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
47
 feels right even if the implementation is something very different
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
48
 (compositor vs compiler).
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
49
 
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
50
 With X, it is assumed to be much harder to write an equivalent
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
51
 'compositor'. Here's the thing though - with a significantly complex X
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
52
 client implementation, it is /impossible/ to replicate in WL. This is
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
53
 really the crux of Artemi's argument in his issue. He asked for a 1:1
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
54
 equivalent X/WL comparison when no such thing exists, and in my
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
55
 opinion it is a waste of time.
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
56
 
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
57
 The WL core team is fully aware of this dichotomy, but also that this
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
58
 is in no way a problem or weakness in either system. It means they're
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
59
 different systems, goddammit.
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
60
 
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
61
 If it was up to me, Xwayland wouldn't exist. I understand why it does,
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
62
 and that it does make things easier for developers who need to support
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
63
 both, and users who have multiple apps with multiple windowing
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
64
 requirements. It's a bandaid though, and one that is particularly
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
65
 dangerous because it re-enforces the idea that Wayland is just X2 and
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
66
 that they're fully compatible.
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
67
 
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
68
 What interests me in the Wayland world right now is the idea of a
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
69
 small, modular, full-stack Wayland compositor API. There are several
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
70
 'kiosk' based compositors for single applications (cage), but these
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
71
 aren't complete solutions. It is possible to get much closer to the
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
72
 metal, and that's where I want to be so that I can build my own APIs
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
73
 on top - I don't want to live on top of X, and I certainly don't want
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
74
 to live on top of X on top of WL. I want a /pure/ solution that hides
Richard Westhaver <ellis@rwest.io>
parents:
diff changeset
75
 as little as possible, exposing the interesting bits.