Skip to content

Commit 1a1c5ed

Browse files
author
conrad
committed
add text copy of ICCCM rant
git-svn-id: http://svn.kfish.org/xsel/trunk@213 9c49b5d1-7df3-0310-bce2-b7278e68f44c
1 parent 9a68356 commit 1a1c5ed

File tree

1 file changed

+115
-0
lines changed

1 file changed

+115
-0
lines changed

rant.txt

Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
To: Sean Neakums <sneakums@xxxxxxxx>
2+
Subject: [chat] Re: [SLUG] Ximian / Gnome and Xalf
3+
From: Conrad Parker <conrad@xxxxxxxxxxxx>
4+
Date: Thu Jul 12 21:14:01 2001
5+
Cc: slug-chat@xxxxxxxxxxx
6+
User-agent: Mutt/1.2.5i
7+
8+
On Thu, Jul 12, 2001 at 09:32:45AM +0100, Sean Neakums wrote:
9+
> >>>>> "JW" == Jeff Waugh <jdub@xxxxxxxxxxx> writes:
10+
>
11+
> JW> (The cynical prat in me says: Did you honestly expect a global
12+
> JW> option, and software to interact and cooperate correctly on
13+
> JW> this platform?)
14+
>
15+
> Go read the ICCCM. Come back when you're done crying.
16+
17+
d00d, that document is devilspawn. I've recently spent my nights in pain
18+
implementing the selection mechanism. WHY OH WHY OH WHY? why me? why did
19+
I choose to do this? and what sick evil twisted mind wrote this damn spec?
20+
I don't know why I'm working with it, I just wanted to make a useful program.
21+
I didn't know what I was getting myself in to. Nobody knows until they try
22+
it. And once you start, you're unable to stop. You can't stop, if you stop
23+
then you haven't completed it to spec. You can't fail on this, it's just a
24+
few pages of text, how can that be so hard? So what if they use Atoms for
25+
everything. So what if there's no explicit correlation between the target
26+
type of a SelectionNotify event and the type of the property it indicates?
27+
So what if the distinction is ambiguous? So what if the document is
28+
littered with such atrocities? It's not the spec's fault, the spec is
29+
authoritative. It's obviously YOUR (the implementor's) fault for
30+
misunderstanding it. If you didn't misunderstand it, you wouldn't be here
31+
complaining about it would you?
32+
33+
It's all about understanding. Obviously, once you come to understand how
34+
the Atoms all fit together and exactly what the sequence of events for an
35+
incremental transfer is, and once you come to APPRECIATE how Atoms are so
36+
guilelessly delicately cast and communicated, its BEAUTIFUL it really is,
37+
I'm like SO GLAD I spent my last few evenings bashing my head against this
38+
damn document because now I can SEE CLEARLY and it all fits into place and
39+
you know what, it damn well better because you just know that if one Atom
40+
is out of place or you mistake the requestor's property's window with your
41+
property's requestor's window or you forget to delete an empty property at
42+
the right time, then, well, you're screwed and the whole thing is going to
43+
come tumbling down and then who's going to look like a fool, huh? The
44+
malicious bastards who designed ICCCM? NO! YOU you idiot fool coder for
45+
misunderstanding such a seemingly benign (maligned) document. It all makes
46+
perfect sense and who ever heard of synchronous error handling anyway?
47+
48+
Name one fucking program in the whole world that uses MULTIPLE selections
49+
by choice? "ooh, for performance" well kiss my ass, if no other program
50+
is going to fucking care about my packet then why the fuck would I send
51+
such a thing? Optimize ZERO you fucking overengineered piece of shit. And
52+
XA_SECONDARY? Who the fuck uses the SECONDARY selection? and who actually
53+
queries TARGETS? All anyone ever fucking does with the selection is COPY
54+
TEXT!! That's what its fucking used for, that's what its good for so why
55+
is it such a fucking pain in the date to just share a fucking STRING? How
56+
about HOSTNAME? ooh I want to find a random HOSTNAME. I'll just ask
57+
whichever random process happens to be the selection owner right now to
58+
tell me it's fucking HOSTNAME! Yes, that sounds like a worthwhile bit of
59+
behaviour, let's just stick it in Xmu and hope noone notices for the next
60+
fucking 30 years. Same goes for the fricking IP_ADDRESS. Oh yeah, and
61+
the user's name. getenv("USER")? Nooooooooo! primitive idiot. Let's just
62+
query a random selection owner and hope it feels like telling us. Yes, yes,
63+
remind me to put THAT into production code; about as reliable as cleaning
64+
your motherboard with fried eel and it smells bad too. Can I have mine in
65+
Motif please?
66+
67+
The ICCCM is the coding equivalent of the Medieval rack, except its
68+
advertised as some kind of X11 swingers party. "Wanna see hot sexy X
69+
applications getting it on with each other live? Wanna join in the
70+
action? Come and lie down here, we're all waiting for you!"
71+
72+
ZZZZZZZZZZZzzzzzzzzip! Then they close the handcuffs and you realise
73+
you're lying in a cold dark room and all you can see are Atoms blocking
74+
you in and every time you think you understand CCRRreeeeeeeaAACK! they
75+
turn the rack a notch and you turn the page to find another 20 paragraphs
76+
of hellborne protocol fantasy.
77+
78+
I've seen more elegant protocols in unlikely places. When blowflies fight
79+
over a pile of elephant shit, their pecking order is a more elegant
80+
protocol than ICCCM. You should watch it some time; if you're an X hacker,
81+
you'll see the beauty. You'll wanna dig right in there and get your hands
82+
dirty. Italian cabbies. English football hooligans -- if I want to get a
83+
short message to the other side of the field, do I use my ICCCM-based X
84+
Window PDA? no, I tell it to a random hooligan, poke him in the ribs and
85+
hope he gets riled up enough to start a riot. Will my message get to the
86+
other side? who knows? at least the resulting carnage will be more orderly
87+
than that fucking Interclient protocol.
88+
89+
ALL OR NOTHING! ALL OR NOTHING! Either you understand it ALL, or you are
90+
NOTHING!
91+
92+
OR BOTH!
93+
94+
I. C. C. C. M.
95+
96+
Inter-
97+
Client
98+
Communications
99+
Conventions
100+
Manual!
101+
102+
Manual, like in "manual labour", like in "pain"
103+
Conventions, like in "not required, just do ALL OF IT or you SUCK!"
104+
Communications, like in "fucking overengineered carrier pigeons"
105+
Client, like in "see that guy with the limp, he was one of my ``clients''"
106+
Inter-, like in "Inter-nal bleeding"
107+
108+
A million monkeys hacking at a million protocol hammers couldn't come up
109+
with this shit in a million years, that's because it's EVIL, E-V-I-L,
110+
it's irrational, it's discontinuous, it is a truth within our codebase that
111+
cannot be derived from the axioms, it's OUT THERE, it was given to us to
112+
degrade us and as a warning to our children. We may have been stupid enough
113+
to work with the ICCCM but what of humanity? the humanity! oh! <sob>
114+
115+
K.

0 commit comments

Comments
 (0)