Now there's precedent. Other people's turbulent emotions define what is acceptable in redis, and all you need to do is throw tantrums and say your feelings are hurt.
This is sheer insanity. If the words are that offensive that they should be removed from a computer program, should they be removed from the dictionary next?
Antirez, I sympathize with you. I'm sorry you have to put up with this madness.
Your argument is sheer insanity. Should history books teach facts about slavery and holocaust? Of course they do. Should slavery still be preserved nowadays in a normal society and defended in a normal context? Of course it shouldn't. What's your point?
This incident didn't come out of nowhere and I personally have also always felt the terminologies to be a bit unsavory. I'm glad that somebody out there actually did the job of calling it out. I don't think this is generalizable to many other situations as well. I don't think there are any other terms that made me uncomfortable as this one. Can you come up with an example that might be "subject to whimsical fit"? What a way to distort the argument really.
Now there's precedent.
This sort of thing comes down to either telling people to shove it, or not. Some people can drop that hammer every single time, others are pained by it, and take the path of least resistance.
Telling people to get bent was a thing for decades, but internet amnesia means some people have either forgotten about it, or never learned how to do it in the first place.
In light of that, I'm going to take some time today to do something random, just for fun, and share it with others.
Which was proposed by http://www.gnuterrypratchett.com/ and as far as I know no one have noticed :)
but you know who doesn't joke around? The government doesn't joke around. So yeah, as soon as it was found by a user, that button was immediately removed. It's just a shame that some contexts are deemed "too serious" for an obviously lighthearted addition with no real detrimental effects.
At least some software has managed to maintain their humor, like Phabricator - https://www.phacility.com/phabricator/
I think that's a good thing. The early hackers could get away with being playful because their work was, in the grand scheme of things, not actually all that important. No businesses were using their code to run payroll and inventory systems. No hospitals were using their code to make treatment decisions. No oil refineries were using their code to runs pumps and valves.
However, as more and more things have become computerized, it's important that we, as a profession, recognize the increasing responsibility that has been placed upon our shoulders. It is time to put away childish things, and focus on what really matters: building fast, reliable, secure software.
I'm not opposed to antirez coming up with a new playful hack to celebrate each edition of Redis. But why does it have to be part of the Redis codebase? Why does it have to be invocable with a Redis command?
Don't let anyone convince you engineers having fun is the reason for all the garbage software. That's pure stockholm syndrome. The reason for garbage software is that developers aren't treated like real engineers, and don't act like real engineers. They're children in a room full of adults making Important Business Decisions That They Just Need To Accept. So what if those decisions are bad engineering? You're not a real engineer anyway so listen to the grownups.
The worst part is they do it to themselves. In the biggest sellers market in history, developers don't put their feet down about bad decisions because b-b-but I might get fired! They passively watch, nod sagely when it all goes to shit and say "mmm, I knew that was going to happen" like ignoring the responsibility that comes with professional training is something to be proud of.
You think sales people make more money because they studied harder? It's because they know their value. You think lawyers get taken more seriously because they dress better? It's because they are personally and professionally liable for everything they say - or don't say - to a client. You think doctors have more autonomy because they never have any fun? It's because every doctor knows that no extenuating circumstances, no "but management said", no piece of paper can ever clean the blood from their hands.
Believing that the problem is easter eggs is buying into the same mindset that brought us here in the first place. Those naughty developers again! Gosh, when will they start wearing ties to work, sit patiently in meetings while we talk at them, and then sign off on half-finished garbage code? Don't they know we have a business to run!
But the Challenger didn't explode because of Silly Shirt Friday. It exploded because management didn't respect their engineers. When the first fatal microservice is written, it won't be because developers had fun. It'll be because they don't respect themselves.
That's a myth. I encourage you to read Challenger Launch Decision, by Diane Vaughan. Challenger didn't explode because management disrespected their engineers. Challenger exploded because the engineers themselves normalized deviance. They would launch, observe anomalous results, note that the system hadn't failed, and then expand the envelope of normality to include the anomalous results. At no point did the team working on the SRBs say, "No, we should stop the Shuttle program and redesign the booster," not even to other engineers. Repeatedly, in interviews, engineers expressed surprise and shock at the failure, because they thought that the problem of O-ring blow-by was a minor problem that could be fixed with tweaks. Indeed, on many an occasion, they thought that they had fixed it, only for the issue to recur in the future.
It's easy and comforting for us engineers to think that Challenger was due to myopia on the behalf of NASA management. But it's wrong. Challenger was the result of cascade failure of rationality all throughout the NASA organization, and the engineers are as culpable as the managers.
I think you have this very wrong. Until personal computers went mainstream, all programming was for business (or the military, or research).
It's great that a ton of businesses are benefiting for free from antirez's work (including my own) but we owe him and all the other creators/maintainers of the OSS software we use a debt of gratitude. If antirez wants whimsy in the code base, more power to him.
I didn't start programming as "a profession", and have zero desire to "put away childish things".
Sure, I get paid (and paid well) to do some of this stuff, and accept "the increasing responsibility" while doing it at work on someone else's dime.
I do it for a living because I enjoy doing it for fun - and as a result of that I'm good at it. I started programming in high school because I was intensely curious about how computers worked, and how other people made them do "interesting things", and how I could do similar or radically different "interesting things" myself. I still (when I'm not too burned out solving work's problems, which are "in the grand scheme of things, not actually all that important") retain that curiosity and the hubris to think "I could do that. In fact, it'd be _more_ hilarious if they'd done it differently... _I_ could do it better!"
Businesses benefiting from my work, or payroll systems/hospitals/oil-refineries using any of my creativity or problem-solving is - for me - purely a side effect of the whimsy and childishness that makes me interested in and good at what I do.
I realise this is a very personal point of view - and I recognise there are people out there (including some of my co workers) who pursued CompSci or other IT related degrees based purely on potential career earnings, and I don't for a minute look down on them or their motivations. But I recognise around me people - like antirez - that obviously share some of my joy and delight in the ability to "just make computers do interesting shit for the hell of it".
(To be honest, I'm in one of my "burnt out by work" patches right now, and this piece by antirez has inspired me to get back to my notebook and pinboard bookmarks, to do something hardware/software related which is completely useless, apart from making me and perhaps a few friends smile...)
It does irk me to see people be so demanding with antirez. They are in many cases benefiting financially from Redis, all for free. It's ridiculous to get on a high horse and start shaming/bullying someone who created something that you benefit from, even if your benefit wasn't the author's intention but merely a byproduct of them making something awesome.
Back on topic, it's great to see people who can be on opposite sides of the major areas of debate in our industry have a common underlying love of tech that's bigger than business (and politics).
Antirez has already written his one, in which he's chosen to include whimsy.
Your objections to him doing that seem... I dunno. Pointless? None of your business? Overly entitled? Not quite sure exactly, but since you didn't pay him to write it for you, objections from you on what he should or shouldn't include in the thing he's allowing you to use for free seem to be at the very least impolite...
While you're happy to burden Antirez with "increasing responsibility" placed on his shoulders in the name of "the profession", you seem to be fairly quiet on one of the fundamental aspects of "profession", which has always implied "getting paid for it". Being part of a profession fundamentally implies "imposing cost on others" for your work. How much money have you offered (or would you be prepared to offer) to Antirez or Redis Labs for a version of redis _without_ whimsy? I'm sure at least Redis Labs have someone in their sales team who'd be happy to negotiate an appropriately professionally priced and supported license for that.
The very name of this command seems to be a perfectly reasonable response to your complaint that this piece of free-as-in-beer as well as free-as-in-freedom software is somehow "imposing costs on you" - LOLWUT?
You're misunderstanding my point. I said all of their code. I was referring to the code written by the early "hackers", in university labs. Of course there was computer code being run to compute payrolls and run industrial systems. But you'll notice that that code was very rigorously written, and an Easter egg of this sort would not have been accepted into those codebases.
I hope he at least lets you invoke these commands with a version at least. I'd hate to let a work of art go unappreciated.
I like these, Sidekiq also have the tableflip methods (with tests) that does exactly nothing, https://github.com/mperham/sidekiq/blob/927680cae78731c540fe...
According to wikipedia https://en.wikipedia.org/wiki/Easter_egg_(media) :
> "In computer software and media, an Easter egg is an intentional inside joke, hidden message or image, or secret feature of a work. It is usually found in a computer program, video game, or DVD/Blu-ray Disc menu screen. The name is used to evoke the idea of a traditional Easter egg hunt. The term was coined to describe a hidden message in the Atari video game Adventure that encouraged the player to find further hidden messages in later games, leading them on a 'hunt'."
He is not an exclusionary person, and labeling him as such, based on an impulsive reaction to an abstract word, with multiple contextual interpretations, is a misguided interpretation of recent events.
His frustration at irrational demands for unnecessary effort is understandable.
By the way, “irrational demands for unnecessary effort” is a value judgment.
Kudos to antirez for starting this refactoring. Switching to replica will clear up this confusing terminology.
There may even be a more accurate term for Redis' architecture, great. Is it worth a breaking change to get a better metaphor? IMO not in software deployed at the scope of Redis and those offended should have the onus of implementation and support.
I don't think that's a powerful argument _against_ the change antirez has chosen to make. There are a lot of other terms that were in common use for decades, that confused no-one, that reasonable people have stopped using because they're offensive to other groups of people.
My argument against making the change is that it's high risk for a functional NOOP.
Rosa Parks would have risked much less and still have gotten home if she'd given up her bus seat. Would that have been a "functional NOOP" too?
(Edit: In rereading this I can see it might be taken as accusative or aggressive. It's not intended in that way, and certainly not intended to accuse you personally of overprivilege or racism...)
I think it's not safe to assume people who are from minority groups or people from underprivileged backgrounds have a problem with this (source, myself).
When you experience actual racism, something like this looks pretty silly. I'm in agreement with antirez. I wouldn't use these terms in a new project, but their use for the past half a century should be pretty uncontroversial and definitely not cause for mass mobbing/shaming...
P.S would’ve been even more awesome if Antirez could’ve slipped this one in without the whole world noticing but I guess that’s impossible for a hugely popular open source project.
On my personal site there's something similar to this, a link to a page that technically got moved and should have a proper redirect but instead I left it and replaced the contents with a gif of the Ferris Bueller after credit scene "Are you still here? Go home".
A few people have stumbled across it and sent in humorous tweets telling me they found it. Never fails to put a smile on my face in the middle of the day.
Have you read Ready Player One?
Lolwut is the perfect break from madness.
There are a few hundred other examples to pull from, these are just a few I chose at random while trying to select ones that are more about the code, or terms used in the code, than contributors or maintainers of the code.
I found some of the requests to be pretty reasonable. Some were reasonable, but not very pragmatic. Some just kinda elicited an "eh, come on?" sort of response.
I then started browsing through my own code to see if anything seemed offensive. One thing that caught my eye: in SPI communications, there is very clearly a "master" and a "slave". I have programmed many SPI-related code... So now I wonder, what was the original complaint in calling Redis servers "master" and "slave"? That terminology is very, very common in computers.
EDIT: I guess this is the original complaint?: https://github.com/antirez/redis/issues/3185
EDIT #2: I guess I'm late to this conversation: http://antirez.com/news/122
I miss the days when politics and political correctness didn't directly affect software projects. What do these political police stand to gain from all of this?
A warm fuzzy feeling of seemingly contributing to the Forces of Good and fighting the Forces of Evil. Some launch rockets to the Moon, some create beautiful art, some create awesome software. Some instead bully people to not use certain words. The consider it their contribution to the society. Unfortunately, as more and more people fold to their pressure, this serves as confirmation that this contribution is worthwhile and there's more to come. If you write a symphony and it is applauded, you want to write another one. If you speech-police one project and it works, you want to speech-police another one.
It's not bullying. In fact, I'd say active code maintainers who receive these requests and don't _reasonably_ accommodate them are the real bullies.
Somehow I feel less welcome in a culture where there are lots of people vigilantly seeking offense where none ever was and waiting to pounce on the use of every word they can find any reason, real or imaginary, to feel slighted with. In fact, I feel a strong desire to not touch such a culture with a ten foot pole. I am glad to contribute my time and my effort to open source (and I regularly do), but I would not want to be a target of hate mob trying to ruin my life or argue with concern trolls, that's just not how I want to spend my life.
> It's not bullying
You do what they want, or they'll hurt you and your project. How it's not bullying?
> In fact, I'd say active code maintainers who receive these requests and don't _reasonably_ accommodate them are the real bullies.
You may say whatever you want, but you will be wrong. Actual bullies are those who try to force people to behave to their liking with threats and hurt. No amount of redefining terms will change that. If you threaten to hurt someone in any way - virtually or physically - over some words that they say or don't say to your liking - you are a bully. It's not hard to see.
That's a lot different than simply submitting a PR to change "man" to "person" -- If there's actual physical threats occurring on a regular basis within our communities I'm severely uninformed. No argument, it's bullying and it's wrong.
I suppose in that case, I advocate the underlying message but not its conveyance.
If you don't like the code, fork it if you must but don't harass the creator of the thing you get to use for free.
They've always affected software projects, they just haven't affected you.
> What do these political police stand to gain from all of this?
Making other people feel as welcome in software as you've already been by default.
Not OP but it's extremely pretentious to assume that.
More generally, assuming that "people against changes (that you personally think are positive towards minorities)" are not part of said minorities tends to be as incorrect as assuming that the people in favor of those changes are part of them.
Furthermore, just because the term "minority" implies that there is a minority of people in that group, there are many minorities which together form far larger groups. So "encountering a minority" isn't uncommon. And I've seen on multiple occasions horribly-arrogant people addressing some of my white male friends, claiming they're oblivious to "the plight of minorities", all because said friends didn't come forward to explain they're gay.
So all that to say, don't assume the person you're replying to hasn't been affected by those things. Even if you're correct, it's not a correct nor even safe thing to assume.
> Making other people feel as welcome in software as you've already been by default.
If you're only superficially aware of the issues involved, it's easy to think that superficial changes will suddenly improve things. It's also all too easy to ignore the fallout of those changes.
Reminds me of PETA's philosophy towards animals: If they can't be free, then they're better off dead. Ignoring that PETA:
1. Isn't objectively correct / morally right
2. Harms the greater cause with their methods (by harming public perception)
In general, not being tactful is a terrible idea. Forcing changes through is a terrible idea. Bullying people is a terrible idea. And if you think these tactics are worth it to "make people feel more welcome", I don't know you.
Apart from that, I'm not suggesting that people should ignore normal contribution procedures and conventions when making such contributions. Nothing in my comment is endorsing ever single person who has ever made such a contribution, regardless of the approach they took. I am, however, suggesting that maintainers who refuse such contributions (for reasons like "I don't want to do this" rather than "this change has issues, please address them") are part of the problem.
Perhaps it's a "good" thing I haven't created any major OSS projects...
In essence, they get to tell themselves (mostly convincingly so) that they have contributed to reduce inequality and discrimination, and are helping right a historical wrong.
In the end, I dont think it changes things one wit - but it makes people feel better, so I guess its a net good over time - albeit an unconscionably silly one.
The only thing that has changed is that social media and the Internet in general have made it much easier to organize.
Software projects have always been plagued by humans arguing with each other.
If it is such a big issue, then those who had the problem can fork the repo and change the terminology in their fork. Legacy code that wants to use updated redis won't be affected.
If you think it's that easy, you personally should be the one to do the work to change it.
Now that sounds incredibly snarky, for that I apologise. But it does sum up a lot of people's thoughts towards it, and it's no more snarky that the typical twitter driveby of 'it's just a find/replace'
Anyone who has actually read the author's explanation (not saying you haven't), knows that he would choose different terminology in hindsight, but the work involved in updating documentation, and maintaining protocol compatibility that allows redis to keep its backwards compatibility features it aims for is non-trivial.
Not to mention all the documentation, and also the ongoing responsibility to third party code and infrastructure which relies on the ecosystem, that has to update along with this.
That's all work, constant, ongoing work.
Should they still make this change? Maybe, master/slave isn't exactly accurate.
But my point is that talk is cheap, and the loudest voices seem to be the folks with no willingness to put skin in the game to change it.
If you truly believe it's so trivial, why won't you help with the labour, both initial and ongoing?
EDIT: Actually, I take that back, sorry. If we both have different estimations of what the community discomfort actually is (both the discomfort currently and the discomfort that will be caused technically), then I can't make that call and say you were trivialising it.
My point is that a lot of the more vocal elements were definitely trivialising the work involved, going as far as suggesting that the maintainer is an asshole for not just doing a find/replace.
It's hard to take that in good faith, as if it were just a find/replace, why don't they offer to take care of it along with any ongoing technical consequences?
The answer is that they're both ignorant of the technical implications, and ultimately, more comfortable shouting from the sidelines than rolling up their sleeves, preferring instead to make innate character judgements about the maintainer.
It's very easy to assume that things that impact oneself negatively were done out of malice. Most of the time, these are innocent or naive, not malicious. However, as humans, we tend to jump to the worst possible case and _act on that assumption_. That's the real problem here.
With that said, changing terminology is more than just a code change, there's a bunch of documentation, as well as possible downstream effects that would need to be clearly communicated without causing breaking changes. I still think it's worth being conscious of the words we use, and rather than looking at it as a "us vs them" political game, as a way to introspect and reflect on how we use words, and what they communicate. Falling back on "it's how we always did it" is a cop out, but if you're the maintainer of a project, it's up to you if you want to do that or not, and I don't think it's worthwhile for a community to harass someone for their decision, antirez was pretty open about this all.
Seemed to me like it was a subtle middle finger to the complainers.
Since people don't like discomfort, squeaky wheel gets the grease, even if the squeaky wheel represents only a tiny minority of the community, because other people are not interested in wasting time and emotional energy on arguing and being target of the outrage-of-the-day mobs.
It might become more subtle in scenarios where the two are disjoint groups, raising the question of how to compare them. I don't see an easy way of quantifying each that allows for such, but I'm sure that's just my own failures of imagination. Can you help me?
It's pretty obvious terminology for systems that don't support dynamic hierarchy changes.
EDIT: Consulting some docs from the time ( http://www.eugeneleeslover.com/USNAVY/CHAPTER-10-D.html ), this may not be the case. I'm genuinely curious now.
And I'm pretty sure it originates in slavery. (Glad to be wrong on that if there's any experts around)
A lot of times it's use similarly like "Master Clock". The term in technology is strongly connected to that root; the master in a protocol is the leading participant.
I think simply not using "slave" for the passive or accepting device would be sufficient to reduce the problem since that is the word that has even in the deeper roots of it's origin the same meaning as today. (Slave comes from Slav, a group of people enslaved in the medieval ages and later expanded to cover all "slavs")
For a current project I'm using master/client as terminology.
This is the future we chose. :(
On the other hand, personally I would have just said: "deal with it".
The fact of the matter is, virtually no one has been or is a slave, no one is being mocked, no one is being belittled, it's a term used to describe a system. Sure, it could be more "politically correct" (I use master and worker, personally) - however, if I inherited or was working on a code base. I would not have been as open to changing terminology as this guy.
As he put it, we are there to program.
If it doesn't enhance readability, speed, etc. it's not changing - stop wasting my time. As a "computer scientist" we should try to be objective about terms, and build forward. That means, potentially changing that terminology for the future, but also not being emotionally attached to the terms which are not intended to be subversive, subjective, etc.
We live in a society, people are going to use the term "slave" to describe things, people are going to say things you don't like, use terms you don't enjoy. I hate acronyms, I find that it is a way to segment a society or group into those who know them and those who don't. Even the term "LOLWUT", means you need to understand the term "LOL" and where "WUT" comes from.
... And that's my point, as a society, I shouldn't be pushing my preferences onto you. I should be learning to deal with my own emotions and understanding. If it's something that impacts my freedom, then maybe I should bring it up. Calling something a "slave" doesn't mean it impacts your freedom.
why do you believe that?
One source puts the number of humans alive in 2016 that have been or are currently slaves by some definition at 40.3 million.
I disagree. Having terminology that is clear (which master/slave is not) decreases the time needed to spend to get an understanding of whatever it is you're working on.
Also related, if someone is offended by terminology then that will slow down their progress in understanding because they first have to process those feelings in order to continue.
Don't give me that - also as a maintainer, I wouldn't want to work with people who slow me down on terminology issues (when they feel offended, for industry standard terms).
Master/replica makes sense to me in the context of copies that all perform the same function, including the master.
I feel like there is probably an exact term for this arrangement, from another discipline. Maybe choreography?
• There are principal dancers and back-up dancers. People performing the same action are dancing in unison.
• There are cheerleading captains and their squads, which consist of the roles of base, flyer, and spotter. Interestingly, being captain (giving orders) is disjoint from a member's performative role within the squad; a member of any role could also be the captain.
• There are operatic prima donnas (or primo uomos)—the lead singers—and a chorus, though these are not mirrored.
• Orchestral organization has tons of different roles: the orchestral ensemble composed of players; their conductor; the principal of each section; the concertmaster (the principal of the section leading the melody of the piece, usually the first violin section.) You can also speak of accompaniment.
Interestingly, most of these disciplines lack a term for "everyone of a group being led, besides the leader." I would assume that this is because the leader is taking part in the group, and so there is no explicit action taken by the group-minus-the-lead, only actions taken by the lead or taken by the group as a whole. (On the other hand, for machines, it is useful to talk about the process of following the lead's... lead. Humans generally do this implicitly, and don't really refer to it as an explicit action they're undertaking, separately from the actions that they're mirroring.)
Even cooler apropos of the stuff he alludes to on Twitter last week.
A part of our humanity will always be in 'obfuscation'/'code golf', demoscene, abandonware, easter eggs, the humble quine, dot plan files, muds, the icfp contest. Could the preservation of 'fun' and 'sheer fun' be above these other conflicts? If ai destroys humanity, it will definitely do well to start with the 'fun'.
I hope this late reply finds you, beaconstudios.
I was deeply involved in hacker culture in my teens and, while I can't describe what "it" is, I really rather miss it. Your mentioning the demoscene reminded me of how their community reminded me of the same. A few other subcultures I've encountered echoes of on the internet too. I've been reading a few of h0p3's posts over the last few days so hopefully I'll find some pointers.
Lol I like how this guy thinks 60's hackers didn't have an ideology.