Play, don't show


The goal of Explanations is to try to allow people to play with fun parts of computers. Graphics, compression, audio. The tagline is my biggest inspiration: "Play, don't show", riffing off the typical "Show, don't tell" rule of writers and authors everywhere. Why bother giving a diagram when I give you an inspector and let you poke at things yourself!

It takes me a long time to write an Explanation, so these might not come out as quick as you like, but I do plan on writing these as long as I'm able to. I also don't claim to be the world's expert on most everything I'm writing about. I might be wrong! Please let me know by email or through a GitHub issue.

Previously, this series was known as "Xplain" and was more focused on the X11 window system and protocol, but I've been slowly moving towards anything that interests me, since I really like the format and style I've developed. The code for every single one of these demos is available in theme GitHub repo, and I do try to comment heavily and try to give more depth. Play with the code! Use it for one of your own projects! It's all MIT/X11 licensed. I also appreciate questions and feedback.

Table of Contents

Credit where credit's due

The source code to this article and all demos is freely available under the MIT/X11 license on GitHub for inspection.

Some of the more tricky code in there has been ported from the Xorg X server itself along with its helper library, pixman.

Some of the images in this article have been adapted from other images on the web. The two kitten images in the Expose event demo were adapted from photos taken by quatre mains and fazen, shared under a CC-BY-2.0 license. Thanks to [placekitten] for finding these images for me.

The cursors and icons used in the demos have been adapted GNOME's default theme, Adwaita. Some of the icons in the inspector have been adapted from the GNOME Art Libre Symbolic Icon Theme, shared under the LGPL and CC-BY-SA-3.0. All rights reserved.

Special thanks to Keith Packard, Alan Coopersmith, Adam Jackson, Peter Hutterer, and Owen Taylor for digging into the source code, protocols, mailing lists and other archives to help me figure out some of the more odd and hairier X11 semantics when I was working on this. Sorry for driving you guys crazy with this project.

Thanks to my friends and colleagues who have sent me feedback on work-in-progress articles, and to anybody who has sent me a pull request. You guys rock.