5 ms·
Pardon the newbie question, but could someone please recommend a good conference talk (or any video I suppose) that provides a good intro and overview of all th
by herodoturtle 6y ago
Pardon the newbie question, but could someone please recommend a good conference talk (or any video I suppose) that provides a good intro and overview of all these terms? I've been using Linux for a couple years now and keep coming across these terms X and Xorg and X11, and whilst I've read up on each I'm admittedly still struggling to understand how they all come together.
- forgotmypw17 6y agohttps://en.m.wikipedia.org/wiki/X_Window_System https://en.m.wikipedia.org/wiki/X_Window_System no offense
- herodoturtle 6y agoNone taken :) 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.
- Reelin 6y ago> probably just a "newbie in the deep end" 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.
- deleted 6y ago[deleted]
- teraku 6y agoThe wayland website has a good overview for how wayland works (in contrast to X): https://wayland.freedesktop.org/architecture.html https://wayland.freedesktop.org/architecture.html
- geofft 6y agoX11 (aka X, because older versions haven't been relevant in decades) is a protocol/architecture for GUIs. The X.Org Foundation is a group that maintains the Xorg server (the engine that actually draws graphics somewhere) as well as several X protocol client libraries (used by applications), other server implementations, and associated tools. libX11 is the primary client library. https://magcius.github.io/xplain/article/x-basics.html 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 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.html 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.html https://www.x.org/releases/current/doc/libX11/libX11/libX11.... ).
- cyphar 6y agoKieth Packard did a talk this year at Linux.conf.au about the history of X[1]. [1]: https://www.youtube.com/watch?v=cj02_UeUnGQ https://www.youtube.com/watch?v=cj02_UeUnGQ
- martyvis 6y agoI've met Keith on a few occasions. Really nice generous smart guy - but just software, but involved in hardware and things like amateur rockets, and working on things that help kids learn computer skills. I'm thinking though he must be one of those 3 hours sleep a night sort of people.
- segfaultbuserr 6y ago> X and Xorg and X11, and whilst I've read up on each I'm admittedly still struggling to understand how they all come together. 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.
- usr1106 6y ago> pushes the pixels to the X server by calling a function in libX11. 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.
- MadWombat 6y agoTL;DR; 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.
- deleted 6y ago[deleted]