homepage/papers/floss-sucks.md

185 lines
7.3 KiB
Markdown

Title: FLOSS Development Sucks
This Article Is A Work In Progress
====================
I'm not even sure where I'm going with this.
Maybe I just needed to vent.
I think there might be advice in here somewhere,
but right now I'm tired of feeling pissed off,
so I'm just going to save this and move on with my day.
------------
This morning I thought I'd mention to a couple old colleagues
that I was still working on our codebase,
and I was considering splitting it off into something new
because it was looking like it might diverge pretty significantly.
I've been on this IRC channel for about a month.
There have been a sum total of 5 lines pasted,
all of them saying "hello" and "help" before anybody answered.
5+ years ago,
it was just me, the author of the package,
and another guy (the author of ratpoison),
mostly just shooting the breeze about bicycles.
The author had mentioned several times that the package was basically out of his hands,
once it got merged into emacs.
I've submitted a couple patches in the past,
and they've been accepted upstream.
So I tossed this out there expecting, if anything, a multi-day turnaround,
hopefully from the author:
> 08:32 neale> hello
> 08:32 neale> I think I'm going to have to fork rcirc :(
> 08:33 neale> I'm making too many changes and I don't have time to get them merged into emacs.
And then went back to work.
> 08:44 ams> what changes are you doing?
Whoa, somebody responded!
> 09:09 neale> I added a notion of "network" so you could have and distinguish multiple connections to the same server
> 09:09 neale> umm...
At this point I struggle to do a diff against the upstream source,
to see what else I've done.
I definitely wasn't expecting this right away,
I figured I'd maybe put things up on github or something.
> 09:11 ams> you can already do that afaik
> 09:11 [neale raises an eyebrow]
Who is this person?
I read over the code pretty thoroughly before I added this in,
I think I would have noticed if anything resembling my changes had existed already.
Back do the diff, it looks like all my prior changes have actually been merged upstream,
after five years or so!
That's a pleasant surprise!
> 09:12 ams> but if you cannot .. that doesn't seem like a hard thing to merge
> 09:12 neale> I'm going to have to figure out a way to hack in support for channel passwords
> 09:12 neale> that's going to probably need to break syntax
> 09:12 ams> break syntax? of what?
> 09:13 ams> you are being incoherent.
> 09:13 neale> next on the list is I need a way to have channels default to lowpri/ignore when created, so, probably going to tack that on to rcirc-server-alist
This happens sometimes on IRC.
While I was writing that long line, they posted two more.
I see I should now answer their other questions.
But now they're insulting me?
Who *is* this person?
Are they just wasting my time because they like arguing?
> 09:13 neale> of /join
> 09:13 neale> right now /join takes a space-separated list of channels, I'll probably need to bring that in line with how other clients handle multiple channels with a single join (or more likely change it to space-separated)
> 09:14 neale> sorry, change it to comma-separated
I'm getting flustered here.
I wasn't expecting to need to defend my changes.
> 09:14 ams> why?
> 09:14 ams> setting default priority should be trivial, and no need to change rcirc-server-alist
This didn't even register with me until I started writing this paper.
I told them I needed channels to start with a certain priority,
so I was going to add that to the list of channels to connect to at startup.
They referred me to the mechanism to set a global default.
> 09:14 neale> ams: see, this is what I was saying about not having time to merge upstream :)
> 09:15 neale> but it's good to know that there's somebody alive in here :)
Yeah, I think this person isn't going to help.
It's pretty typical that you have to do a sales pitch,
over and over,
to get your changes accepted.
And I don't have time for that.
I've already wasted enough time just trying to convince this one person
that there was even a need for the work I've done so far.
> 09:15 ams> you just said you haven't even written it ..
> 09:15 ams> there is nothing to merge.
> 09:15 neale> LOL okay
Still feeling this person is just trying to waste my time and get me into an argument.
I probably should have just stopped here, but...
> 09:15 ams> and half of the things you mention can already be done
> 09:15 neale> maybe you could write up how to do those things then, because it certainly wasn't obvious from the code :)
If this person had been paying attention,
a full 20% of last month's channel traffic had been requesting this exact feature.
> 09:17 ams> i don't see the use for multiple connections to the same host on the same port, most networks prohibit that.
> 09:17 neale> hahaha, excellent
> 09:17 ams> you can already connect to multiple hosts though with different port numbers
> 09:17 neale> Stop Wanting That!
Now I'm mad!
They're not even interested in why I would want the feature I coded up.
They just want to tell me I'm wrong.
This is the point at which I completely gave up,
and was just saying words out of anger.
I don't do well when I'm like this,
but I know some people who are *excellent* in this situation,
like my friend Nick.
Sometimes I wish I were better,
because people like this,
I feel,
need to be put in their place,
and stop being hostile to everybody.
> 09:17 ams> simply specify a different port
> 09:17 ams> ok, you are trolling. i'll go back to doing something else.
> 09:18 neale> I'm trolling, eh?
> 09:19 neale> Man, look, I'm coming in with a need, you're telling me that a) it already does what I want, b) I don't actually have changes, and c) there's no need for me want what I said
I'm still trying to (angrily) convince them
that this is a horrible way to treat people they don't even know.
> 09:19 ams> no, i didn't say that at all. now you are just spouting lies.
> 09:19 ams> 17:19 /ignore neale
> 09:19 neale> Who's trolling? Anyway what happened to rcy and sabetts? They were friendly :(
> 09:20 neale> Wow, infuriating.
But it's a lost cause.
----
This is pretty frequently how things go.
I wish I'd saved the 20-minute argument I had to endure
to convince some plan9 people
that some users might want a their three-button mouse to have a scroll wheel.
They eventually accepted that,
yes,
some users might actually want that,
and what was the mouse I'd found that does this?
This is not okay.
The community is selecting for people who are good at arguing.
We should not require every code contributor
to champion their code's worth
by besting the local troll in combat.
Even though I envy Nick's level-headedness during empassioned debate,
that skill has no correlation to the ability to make useful code contributions.
In the troll's defense,
this is just human nature.
Say there's this group of men discussing mortise and tenon joints,
and you have a better technique.
The way things work in FLOSS, currently,
is that you must step into this group an tell them they're doing it wrong.
It takes an extraordinary individual to *not* tell you to fuck off.
And you know that,
which is why your social instincts are screaming at you to be very uncomfortable.
So when the "fuck off" happens,
you've steeled yourself for it,
and then you get a slap fight.
There has got to be a better way.