https://magcius.github.io/xplain/article/x-basics.html is probably a good place to start, as is the official documentation (indexed at https://www.x.org/releases/current/doc/index.html , but the stuff at the top may not be what you want - you probably want to start with the protocol docs https://www.x.org/releases/current/doc/xproto/x11protocol.ht... or perhaps the libX11 docs https://www.x.org/releases/current/doc/libX11/libX11/libX11.... ).
It's a great resource for sure. If you scroll down to the bit on software architecture - that's the part I'm wanting to understand better by picturing it. Again probably just a "newbie in the deep end" situation, I'm sure it'll all click eventually.
Honestly the entire system is staggeringly complicated because (if you're asking about the bits in the diagram there) it includes hardware input devices, user accounts, applications, GPU output, and the network (so basically the entire computer).
X11 is a protocol that clients (applications you run) use to communicate with a display server (it sends them input events and outputs things to the screen for them). Anyone can implement a display server that speaks the X11 protocol and clients can connect to it.
Xorg is one such server implementation. Unlike other server implementations, Xorg does all the heavy lifting to deal directly with a wide range of real world hardware devices (mouse, keyboard, GPU) which makes it quite complicated. Adding to that, it's also quite old and thus supports some rather outdated hardware.
Just to make things super confusing, X.Org (the project) provides additional X11 display servers such as XWayland and Xephyr. These alternative implementations are much simpler than Xorg because instead of directly interfacing with the hardware they nest inside some other windowing system.
An "X server" is the program that owns your graphics card [0], your screen, your mouse and your keyboard. Everyone who wants to use them is an "X client" (e.g. a text editor), it communicates with the X server via a network connection (Unix socket or TCP/IP) and speaks a protocol called "X11". In order to speak to the X server, X clients use the standard library "libX11" so you don't have to reimplement the X11 protocol. For example, when an image viewer wants to show a picture, it opens the picture locally, then pushes the pixels to the X server by calling a function in libX11.
An analogy is "userspace vs kernel", kernel is the X server and provides many services for the userspace, an userspace program is the X client, it communicates with the kernel via syscalls to do things by speaking a protocol called the calling convention. All the syscalls are encapsulated inside the C/POSIX standard library, libc, so you don't have to replement the calling convention by putting parameters in the registers manually. For example, when a text editor wants to open a file, it asks the kernel for the file by calling a function in libc.
"X" is usually the catchall phrase for the software in general, but sometimes especially refers to the X server. "Xorg" is a particular brand of software implementation of X, which is maintained by the "X.Org Foundation" (other implementations include XFree86, XQuartz, etc). "X11", in a narrow sense, is the protocol that is spoken by all X servers and X clients, and can also refer to the broader architecture of X server in general. But since it's extremely unlikely to be updated to X12, so "X11" is also another way to say "X".
Again, analogy. "Unix-like" is the catchall phrase for the operating system in general, but sometimes especially refers to the kernel. "Linux" is a particular implementation of Unix-like operating system [1] (other implementations include FreeBSD or Solaris), which is maintained by the "Linux Foundation".
[0] We only consider 2D graphics without hardware acceleration. If OpenGL is involved, it's more complex.
[1] It's only a kernel so it's not entirely correct. But let's ignore it for the moment.
That's how X is used today. The system was designed and implemented completely differently from today's use. The server had fonts and the client asked to get characters drawn. Or arcs. Sending pixels was a big exception for rare cases and it was far too inefficient for the machines of the 1980s and 1990s.
Nowadays the main usage is over a little corner case of the protocol and implementation. The bigger part of code is just collecting dust, bitrotting, a maintenance burden, probaby a vector for security attacks (though not very bad ones, because they typically require local access to the workstation computer). For this reason X is being replaced by Wayland for over 10 years. The speed of adoption seems to be "twice as fast as IPv6"... As IPv4 continues to do the work for the majority of Internet usage, X continues to do the work on the majority of Linux desktops.
I don't know. I received an IPv6 address at home since a few years ago and I've been using it and pulling a lot of traffic since then. On the other hand, it's extremely unlikely for me to ever switch to Wayland on my desktop in the foreseeable future because I need some niche and legacy features that are not supported by Wayland. Network transparency and VirtualGL is a big one, it allows me to run an unmodified X application in a 2D-only X server while outsourcing all the 3D graphics to a 3D X server on a separate machine.
Right, and the specs were more or less complete in the first half of the 1990s. So it took 20 years. And you are still a minority, global adoption is below 35% years later. Here in this country you can't really get fixed Internet connections for consumers supporting IPv6 at all. So I don't have it. (Although we have cheaper and better mobile broadband than nearly everywhere else and there the majority of the operators supports IPv6 by default. So when I want to play with IPv6 I just use mobile data.)
Wayland became somehow useable for those who really wanted a bit less than 10 years ago, Fedora bot not many others use it by default now.
That was my reference to twice the speed, 10 instead of 20 years. Of course it's a rough oversimplification, details are much more nuanced. My point was really lack of speed in both cases.
Edit: details added
I already saw your point initially, I remember browsing some IPv6 specs with a timestamp of 1999. My point was that at a personal level, I had every reason to use IPv6 and it was only a matter of whether it's provided, thus I started using it immediately after it was made available. However, speaking of the Wayland migration, I have personal reasons for staying on X and not to run Wayland in the foreseeable future, which is why I said my migration to Wayland is probably going to be slower, not faster, than my migration to IPv6.
X11 (and X windows) is a standard and a protocol. X is a short term for X11 and X Windows Xorg is a specific implementation of X11 protocol under the GNU open source project.
Pretty much every UNIX under the sun had some kind of X11 implementation, until proprietary UNIX workstations became a thing of the past.