xsel

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

rant.txt (6083B)


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