xsel

Program for manipulating the X clipboard
git clone https://git.sinitax.com/kfish/xsel
Log | Files | Refs | README | LICENSE | sfeed.txt

commit 1a1c5edf0dc129055f7764c666da2dd468df6016
parent 9a68356b0475b651e1c560ae66432fc35285d3bd
Author: conrad <conrad@9c49b5d1-7df3-0310-bce2-b7278e68f44c>
Date:   Thu, 14 Feb 2008 12:55:55 +0000

add text copy of ICCCM rant


git-svn-id: http://svn.kfish.org/xsel/trunk@213 9c49b5d1-7df3-0310-bce2-b7278e68f44c

Diffstat:
Arant.txt | 115+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 115 insertions(+), 0 deletions(-)

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