|
| 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