root/xsel/trunk/rant.txt

Revision 213, 5.9 kB (checked in by conrad, 11 months ago)

add text copy of ICCCM rant

Line 
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.
Note: See TracBrowser for help on using the browser.