OT: 'conduct unbecoming of a hacker'
Laeeth Isharc via Digitalmars-d
digitalmars-d at puremagic.com
Tue Feb 9 18:11:25 PST 2016
http://sealedabstract.com/rants/conduct-unbecoming-of-a-hacker/
(His particular suggestion about accept patches by default is not
why I post this).
'
We’re all talk
Back when I joined the hacking community, it was about making
things. There were mailing lists, and before them there were
dead-tree magazines, and they would be full of things that people
had made. And there was discussion about those things that people
made.
...
Now, it has always been a critical culture. The phenomenon of the
top HN comment that complains about OP is not a new phenomenon,
it is older than HN and it is older than the Internet. Various
people occasionally argue that we need to be “less critical” and
“less abrasive” and I am sorry to be so critical and abrasive,
but I think that viewpoint is dumb. Making critical remarks is
how we make code better.
However that only counts if the remarks actually do make the code
better. At one time, this was more true than it is today.
Minimally, criticisms were sent to a person who could do
something about it, not about them, to the Internet in general.
And when that person elected to do nothing in particular, the
canonical reply was to write a patch yourself. And that patch was
posted for discussion, and people would poke and prod at it, and
see how good of a patch it was. Did it solve the problem? Did it
introduce any new issues?
And if nobody was willing to write the patch, then that was the
end of the discussion. A problem is not a real problem if nobody
is willing to solve it.
And if you did continue to whine that nobody else would solve
your problem for you, you got booted from the list. People did
whine, in a sense, but it was very different. Stallman is
probably the canonical example: he whines more than just about
anyone, but his whining is neatly interspersed by patches, and he
is probably one of the most prolific hackers of his generation.
In spite of the fact that his complaints are extremely
abstract–copyrights, patent law, etc.–they are at once concrete,
because he has actually built the copyleft utopia he advocates
for. Not blogged about how other people should build it, or
gotten into flamewars about how good it might be–he built it. The
GNU project is an actual project with actual software and actual
users, and now we can post that to the list for discussion.
Stallman wrote a patch, and today you can poke and prod at it.
This idea that people just whine and whine until they run out of
breath is relatively new. One of the first times I really saw it
in full force, accepted by most of the community, was with the
App Store Wars in 2008. This was the time that Apple instituted
app review for all iOS apps and for one reason or another this
was going to End Computing As We Knew It. Blog articles were
written and heated debates were had. Even pg got in on the
action. But as far as I can tell, everybody complaining just
eventually ran out of oxygen. There was no mass customer exodus,
and there was not even a mass hacker exodus. Android did
eventually rise to become a viable competitor to iOS, but it
seems to me this had more to do with pricing and carrier partners
than an ideological struggle; certainly the toppling of Apple’s
kingdom over this issue never happened. At best, a few egregious
app review problems got fixed.
There was another tempest in a teacup when Apple got serious
about their 30% cut. Article after article about how now, this
time, Apple must correct this injustice or face the terrible
consequences of software developers rising up to demand money
that is rightfully theirs. Or something. What actually happened
is that Kindle removed their online store so now you had to use
(the horror!) Safari to buy books, and everybody else just raised
their prices 30%. The end. No uprising, no injustices corrected,
nothing.
Is it my point that Apple was right and everybody was wrong? No,
not really. My point is that in the 80s and 90s when the hacker
community was in crisis, the response was to write a patch. Not
to whine endlessly in the blogosphere. When we were threatened by
Ma Bell and Microsoft (which, kids these days forget, were way
way scarier than Tim Cook can even dream of being), we wrote GNU
and Linux and the BSDs. And you can laugh about things like
“Linux on the desktop” all you like, but these projects are all
seriously impressive achievements in their own right, that
fundamentally shifted the needle on the software industry.
Hackers didn’t topple Microsoft, but they seriously threatened
it, and they won several battles, like the battle for servers and
the battle for the Internet. Hackers of today can’t threaten
anyone, or win anything. We’re all talk.
...
his “bikeshedding culture” wouldn’t be so bad if you saw it only
in hacker discussion spaces, like HN, because at worst you can
just add them to your hosts file. However I am sorry to report
that the malaise has now infected places of actually writing
code, so the problem is now unavoidable.
I have been working on a project lately that requires me to rope
together various FOSS projects and extend them in logical ways.
And so the last few months have been a lot of this:
Hello folks, I need [obviously useful feature]. I realize
that this is a lot of work, and you’re not going to get to it any
time soon, and I need it, so I’m going to do it this week myself.
I plan to do the X followed by the Y followed by the Z, and then
contribute that back under [your license]. Does that basically
sound mergeable to you, or are there other things we should
discuss?
(Un)fortunately I have decided not to name the guilty, which
makes the next part of this narrative unfalsifiable. For those of
you joining us from very well-run projects like git, the Linux
Kernel, FireFox, WebKit, etc., it may even be hard to believe.
However if you ever have the misfortune to venture into the
GitHub Graveyard of projects that aren’t quite popular (and even
a few that are, in a way) you will see at once the force I am
wrestling with.
My email is inevitably met not with acceptance, nor with
constructive discussion, but with some attempt to derail the
entire enterprise. Here are some real examples, paraphrased by
yours truly:
I think it should be done some other way, even though the
other way obviously doesn’t work for you and so far nobody has
ever been found who is willing to implement it that way
I don’t want to solve this problem without also solving
[unrelated problem X], your proposal doesn’t address [unrelated
problem X], therefore I am inclined to reject it
I don’t know you and there might be a bug in your patch. This
patch is too important to leave to somebody new. At the same time
it is not important enough for any of the core committers to get
to it.
Defend this proposal. You’re telling me you “need” encryption
in an internet communications library, or you “need” unicode
support in an object storage library. I don’t believe you. We’ve
gotten along just fine for N months without it, and we’ll get
along for another 2N months just fine thanks.
Look, we’ve already implemented [sort-of related feature]
even though it’s buggy and doesn’t cover your usecase. That
decision was complicated and people were arguing about it for
years and I really don’t want to go through that jungle again. If
you wanted to do it this way you should have spoken up two years
ago.
Common objections to patches on mailing lists
]11 Common objections to patches on mailing lists
In some cases I have made this proposal to my first-choice
project, gotten one of the numbered responses, then went to the
second and third-choice projects only to get a different
rejection at each one. I track most of these in a spreadsheet,
and many of them get in long flamewars that run on for months
after I’ve unsubscribed, forked, and shipped the solution I
originally proposed. Most of those flamewars come to nothing, but
a few of them even end up implementing an equivalent solution to
the one I proposed, all that time later. Exactly one project in
my dataset ever reached a decision that actually improved on my
proposed solution, and so far that decision was made in theory
only–a separate flamewar erupted between the spec writers and the
implementers, and that flamewar continues to this day. Meanwhile
my code shipped in 2012.
Is my point that I am the best hacker, mwahahaha? No. These are
largely pretty easy patches that most software developers could
write in a few days. I do not claim any special talent in writing
them. I simply claim that while everybody else was arguing, I was
the one who did write them. And without exception, every single
argument over one of these patches caused a delay and produced no
benefit, at best. I am sorry to report the facts today are that
flamewars, not patches, are king.
...
Who cares? Let people argue if they think it’s fun
Well, let me be clear: I am in favor of recreational arguing.
Just read this blog; that is an exercise in the discipline. 2.
However, there are some limits. It’s all fun and games until
somebody loses an eye. One problem is that when all the hacker
spaces are infected with patchless argumentation, we discourage
all the up-and-coming hackers who do, actually, write patches.
The Rachels of the world are confused: is this what programming
is about? It’s about winning the mailing list thread? We also
attract people who are good at arguing, instead of people who are
good at patches. Those are mistakes, and probably enormous ones,
but the effect is hard to prove.
...
Hacking should be about making things. And yet a great many of
our institutions are set up to discourage, distract, destroy, and
derail the making of anything. It’s time we called it what it is:
conduct unbecoming of a hacker.
'
More information about the Digitalmars-d
mailing list