Hacker News new | past | comments | ask | show | jobs | submit login

I'm not for the change in terminology at this step, because it is very unfortunate to change the terminology of a project that is here for years, however I tried to use the fact we have this terminology to remind people of what slavery looked (and still looks in certain parts of the world) like, so:

1) We have a SLAVEOF NO ONE command which is very popular.

2) We have a note about slavery here: https://redis.io/commands/slaveof

For new projects I suggest to pick other terms as well, even because master and slave are kinda inelegant IMHO other than linked to bad things.

I was looking for an issue to see if the project had addressed this at all before I posted this (failed to find it until after). I also had not read the SLAVEOF man page. So, I apologize for bringing up something I'm sure you're less than excited to have keep coming up.

I can respect (and disagree with!) the backwards compatibility argument.

I've always found you to be a considerate and thoughtful maintainer (no easy thing) whose work I really admire. So, I'm very glad to see that you've taken the steps you have on this front.

Thanks for your reply.

It's admirable you and the project edit yourself in this way. Although some will say they are only words, and only have the meaning we give them, the legacy of suffering the words bring to mind are nearly unbearable. Speaking for myself here obviously.

It's a choice whether or not to use these words, and any project can use them or not as they see fit. They are common in the field after all. I definitely think there's a high road here, and you've taken it, cheers!

antirez, this is easily one of my favorite comments I've seen on Hacker News in a number of years. In looking into what you've said here, I've learned that this is a bigger movement in software than I was aware of with projects like Drupal[1], CouchDB[2], and Django[3] taking similar stances. The github issue[4] spawning your change contains even more profoundly good ways of thinking about how software can do more, in the code itself, to "be the change you want to see."

Bravo and thanks for pushing the envelope forward.

Regardless of whether you agree with the changes, the fact that these discussions are occurring about the code that we write is really great. I love seeing how we can take code to a much different level than the 1s and 0s it is often reduced to in the mind.

I'd love to see some other examples of similar movements in software whereby we are taking great care of the code we write as an author, historian, or any other writer would take care of their own words.

[1] - https://www.drupal.org/node/2275877

[2] - https://issues.apache.org/jira/browse/COUCHDB-2248

[3] - https://code.djangoproject.com/ticket/22667

[4] - https://github.com/antirez/redis/issues/3185

Here's another example of changing terminology in software for similar reasons to master/slave: Changing PetSet to StatefulSet in Kubernetes: https://github.com/kubernetes/kubernetes/issues/27430

Maybe a simple solution is to leave SLAVEOF in place for compatibility, and implement a REPLICAOF command as a synonym. Update the docs to use the synonym. Not sure what to do about the INFO output, though.

Neat, I didn't know that.

Worth mentioning that "ciao" originated from "I'm your slave" - maybe in v5 we can have "ciao <master_ip>" :)

> The word derives from the Venetian phrase s-ciào vostro or s-ciào su literally meaning "I am your slave". https://en.wikipedia.org/wiki/Ciao

It's excellent to see you're taking the issue seriously.

Comparing this carefully considered reply to all the others also gives me some more evidence that those that excel at technology are often remarkable people in many other aspects as well.

> because it is very unfortunate to change the terminology of a project that is here for years

...is it? i guess my interpretation of saying 'unfortunate' here is that there is some kind of sentimental attachment or something.

are there legitimate practical issues?

A huge backwards incompatible change

  If slavery is not wrong, nothing is wrong.
  -- Abraham Lincoln
I've been trying to get an intuition (make myself feel good) about the material conditional logical connective and this seems to satisfy the case for a false antecedent and false consequent (¬p→¬q). The equally true statement seems to check out:

  If slavery is not wrong, something is wrong. (¬p→q)
However this also evaluates to True which annoys me:

  If slavery is wrong, something is wrong. (p→q)
And this evaluates to False:

  If slavery is wrong, nothing is wrong. (p→¬q)
I get that the formal definition of → is different from English's if/then but that just makes understanding proofs so much harder. Perhaps someone could better paraphrase Lincoln in first-order logic?

I'm not sure if you're trying to make a joke. In any case, quotes such as this are ill-suited for learning formal logic, because they rely on a lot more than their literal meaning.

In this case, you cannot see the statement as being about boolean true/false values. It only works on an ordinal scale, and our calibration of the cutoff for "wrongness". Slavery here is assumed axiomatically to be "really really bad". In fact, among all the bad things, it is the worst. But is it wrong? That depends on how bad something must be to be wrong. But if you do not consider slavery to be wrong, but merely bad, nothing can be wrong, because everything is less bad than slavery.

So this is basically Lincoln trying to argue for AUC as a better metric than sensitivity/specificity.

Applying logic to pithy quotes is generally going to be painful, because there's tends to be a lot of implicit meaning. But let's have some fun and break this down.

(Bear with me, it's been a while since I've done rigorous proofs.)

Let's say there's a function R that outputs a numerical value of an actions morality.

Let's define an action as wrong if R(action) is below some threshold M.

So what Lincoln is saying is:

R(slavery) >= M -> R(action) >= M for all actions

If we assume Lincoln's statement to be true, that must mean that R(slavery) <= R(action) for all actions.

Which can be reduced to R(slavery) = min(R(actions))

Translated to English, Lincoln is saying that slavery is most morally despicable act.

If at least one thing is wrong, slavery is wrong?

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact