Hacker News new | comments | show | ask | jobs | submit login
[flagged] On Redis master-slave terminology (antirez.com)
188 points by kragniz 41 days ago | hide | past | web | favorite | 95 comments



Good for antirez. We all know what master-slave mean in a computing context and separate it from distant historical meanings, just as we don't get offended by `parent.kill(child)`.

Some people get moral enjoyment from finding ways to feign offense... at best, it is a waste of time to indulge much of these false complaints.

Our goodness and values show in our worldly actions.


Some people get moral enjoyment from finding ways to feign offense... at best, it is a waste of time to indulge much of these false complaints.

It has become a way to get the effects of political terrorism while avoiding the risk and backlash of actual terrorism. The real purpose at this point isn't to actually convince or cow people into obedience. It's low-risk practice for training radicals, and any political movement seeking rapid change needs about 10% of its membership to be radicals.

Even short of violence, human politics boils down to "bigger army diplomacy."


> just as we don't get offended by `parent.kill(child)`

I think this is an excellent analogy. The Linux OOM killer even has a log message about sacrificing children:

https://unix.stackexchange.com/questions/282155/what-is-the-...

And that, AFAIK, isn't part of the Linux kernel API/ABI, so it could be changed more easily than Redis' SLAVEOF command could. But it's clear from context what it's referring to.


> Some people get moral enjoyment from finding ways to feign offense

Why not assume good faith? Surely you can make an argument against changing technical terms without assuming the person bringing up the changes is just trolling.


> Why not assume good faith?

> "After it was clear that I was not interested in his argument, Mark accused me of being fascist"

No need to assume.


The irony of calling someone a fascist for using the wrong word.


Other people have had a similar complaint, that this one person resorted to name calling immediately doesn't offer proof to me they were not sincere or that this issue isn't something some people legitimately care about.


Why not assume good faith on the part of the people who used the terms "master" and "slave"?


The person mentioned in the post obviously didn't assume that after they started name calling but I think you could assume good faith usage of those words and still have a problem with it.


>... I think you could assume good faith usage of those words and still have a problem with it.

One should also understand that not all countries have the same political activists and race-baiters that the US has and therefore the words master and slave don't carry the same baggage as they do in the US.


Master/slave doesn't carry baggage because of political activists and race-baiters but because of the US' history of slavery/racism.


People who are arguing in good faith don't start calling their opponents vile names after one exchange.


Even if we accept that to be generally true, and I do, that doesn't mean that the person that you replied to was wrong.


Not to mention SIGABRT.


There have been discussions about that, glibc had this written in its docs about the abort() function since the 90s:

> 25.7.4 Aborting a Program... Future Change Warning: Proposed Federal censorship regulations may prohibit us from giving you information about the possibility of calling this function. We would be required to say that this is not an acceptable way of terminating a program.

https://www.theregister.co.uk/2018/05/09/gnu_glic_abort_stal...


I mean, I don't disagree with your premise that very few people are actually offended, but this is one of those low-effort, doesn't-matter changes so why not do it?

If it does offend anyone at all, why not change it? If it might offend anyone at all, why not change it?

It's not like we're redefining the color blue to appease red-ists. There's a dozen synonyms that convey the same relationship construct as master/slave without using the word slave.

It's not the hill to die on, or take a stand on.


"If it might offend anyone at all, why not change it?" is simultaneously gracious, well-meaning, and completely oblivious to the actual mechanisms that drive these offense debates.

It doesn't offend anyone. If it does, it's easily cleared up with a broader understanding of the english language. That doesn't matter, though, because it doesn't offend anyone.

The hunt for these righteous stances _is_ the goal.

You don't change it, because 1) it's a weird bid to control the behavior of someone else, 2) you didn't gain anything. the priesthood wants to find your dirty stain, shine the light of an extremely flexible outrage on it, make an example of your submission to their humbling cleansing, then move on.

All you've done is apologize to the no one who was actually harmed, add fuel for the next imaginary incident, and waste your time.


Because being offended is cheap and it being real is unverifiable. Thus there is a cost asymmetry which makes it trivially exploitable.

> It's not like we're redefining the color blue to appease red-ists.

I am deeply offended that your source control denigrates people from non-conventional families[0]. Please purge this insult from the internet on my behalf.

[0] https://en.wiktionary.org/wiki/git#Etymology_1


Because at what point do you stop and who dictates what offends people and what does not. It is all opinion based and is a never ending catastrophe of ever changing definitions and verbiage.

This is just more distractions from what really matters, writing coding and completing the task at hand.

Like you said, "one of those low-effort, doesn't-matter changes", so why change it?


> this is one of those low-effort, doesn't matter changes

antirez, at least, says otherwise.

> [...] to change the documentation, deprecate the API and add a new one, change the INFO fields, [...]


Please - it's a find/replace. The API is a bit stickier, but they can of course just map the old 'slave' designation to a new call.


Feel free to submit a PR, just make sure it passes all the tests!


what about log history? If I want to find a history of slave errors I need to account for both words? Its not worth it.


He touches on something very important when he describes the change as being "for Americans to make peace with their past" and says "it focuses on formalities, but actually it has a real root of prejudice against others". I'd hazard a guess that most of the people who are offended are offended because they feel guilty, and not because they're harmed by the terminology.

Maybe those people should feel guilty. Maybe, as a European, he doesn't want American guilt to control the way he uses language.


> I mean, I don't disagree with your premise that very few people are actually offended, but this is one of those low-effort, doesn't-matter changes so why not do it?

Not doing what this particular brand of moralising busybodies wants sends a message to them, other busybodies and more importantly everyone else involved with Redis that this organisation will not instantly roll over to pressure. If you remember the Drupal controversy where some activists were trying to get someone expelled from the community for their sex life the maintainers rolled over until over a hundred contributors and sponsors said to reverse the decision or they’d fork Drupal.

The principle is the same. If you pay the Danegeld you will never be rid of the Dane. If you don’t feel like giving a mile, consider very strongly whether to give an inch.


"I originally copied the terms from MySQL, and now they are the way we call things in Redis, and since I do not believe in this battle (I’ll tell you later why), to change the documentation, deprecate the API and add a new one, change the INFO fields, just to make a subset of people that care about those things more happy, do not make sense to me."

Sounds like it's more work than you imagine.


Because it reeks of voluntary self-censorship pressed by political correctness?

Also, where to draw the line? Should we rename Brainfuck? Is white-space PC?


> Is white-space PC?

There has been a push to rename "whitelist" and "blacklist":

https://english.stackexchange.com/questions/51088/alternativ...


Because as Antirez pointed out, it is not that simple. One has to change documentation, API, code. It cascades from there.


> If it does offend anyone at all, why not change it? If it might offend anyone at all, why not change it?

Did you read the article? He answers this question. He devotes the last four paragraphs of the article to exactly that.

Edit: tl;dr is that a) it's not as simple a technical fix as you might think and b) it's not just a technical issue.


With no compelling reasons...

If we instead called it Guard and Concentration Camp Prisoner would more people feel differently?

Yes, if we go to the fringes there are ridiculous things that people can get upset by - but this doesn't seem like one of them.

There are plenty of words that are just as descriptive that we can use in place of master/slave at literally zero cost to clarity.


"master" and "slave" are abstract concepts that don't just apply to humans or even organisms at all, while "concentration camp prisoner" and "concentration camp guard" are very specific human concepts.

If it took no effort to make this change, this discussion probably wouldn't even be an issue in the first place since many project owners would change the terminology just to stop the whining and discussion. But it's not that easy, so many people have decided to not bend over backwards for every term that could possibly be twisted into being considered offensive when taken out of context, including "master / slave", "whitelist / blacklist", "forking", and "killer app". Yes, people have taken issue with all of those terms [1] and will probably take issue with even more if developers start to appease them.

This kind of thing is a slippery slope.

[1] https://twitter.com/andrestaltz/status/1030200563802230786


> If it does offend anyone at all, why not change it? If it might offend anyone at all, why not change it?

Because giving in to thought-policing bullies is always a bad idea.

Note how quickly the wannabe bully in this case went from demanding the change to calling the maintainer every vile name in the book.


Given that the explicit "master" and "slave" relationship definition lacks any other common meanings in any other technical field of English (that I'm aware of), I'm not quite sure I understand your point.

The hierarchy of "parent" and "child", at least, is used for terminology in other fields, e.g. euphemistically in psychology, for relationships that fit a particular behavior pattern, even when the participants aren't actually related. Likewise, I'm sure the programmers responsible for the "parent"-"child" metaphor, didn't consider all the possible pseudo-language this method might generate. Just as no one might imagine `chokeAndDieOn(kernel)`.

On the other hand, "master"-"slave" is taken from a pretty explicitly provocative (and negative) situation that still exists in many forms in today's world and was designed as a metaphor explicitly for the relationship, as opposed to being incidental, like your example.

However, if what you say is your firm belief, then you surely wouldn't mind `"dominatrix"-"submissive" databases` or `"torturer"-"victim" databases`?


> The hierarchy of "parent" and "child", at least, is used for terminology in other fields, e.g. euphemistically in psychology, for relationships that fit a particular behavior pattern, even when the participants aren't actually related.

That's metaphor, but not really euphemism.

> However, if what you say is your firm belief, then you surely wouldn't mind `"dominatrix"-"submissive" databases` or `"torturer"-"victim" databases`?

First, I'd have no problems if they actually communicated useful information by way of metaphor, but I can't immediately see any way those examples would.

Second, do you really want, in the course of arguing that describing a relationship of total control between different programs or other inanimate systems as a master-slave relationship is offensive, to suggest that consensual BDSM relationships are analogous to both actual slavery and torture in the offensiveness of having descriptions of other things refer to them?


"dom-sub" makes a lot of sense, honestly; catch me using that in my next project. I would object to "torturer-victim" because it doesn't properly describe the relationship.


I literally chuckled when I saw your message because I actually thought about using dom/sub when I saw the '"dominatrix"-"submissive"' message, and there's the bonus of it being more symmetrical and less typing than master/slave.

The deal killers being that it's less readable due to the lack of established usage and that it doesn't define the relationship as clearly as master/slave. It feels like "dominant" might imply that it has authority in most cases, but not every case.


No, not "dom", "dominatrix". And is your project a popular open-source project? Or will you be committing to a code base at a large corporation? Feel free to screenshot the pull request when you do, otherwise I'll have to assume you're casually bluffing.


Why would I use "dominatrix" when "dom" is shorter? Seriously though, "dom", and "master" are fairly generic terms. "dominatrix" and "torturer" are needlessly specific to point that they don't accurately describe the relationship anymore.

>And is your project a popular open-source project?

Yeah I'm Linus lol.


If you work on an automatic transmission and quite a few other mechanical devices, you’ll learn that “master-slave” in technical English predates modern computing. It’s useful terminology because it’s instantly comprehensible as a metaphor and accurately describes the “slave’s” total lack of autonomy. There’s no reason to make it political, unless someone is endorsing the concept within the context of human relationships.


I dread the day that "male" and "female", with respect to electrical connectors, become controversial.


> or `"torturer"-"victim" databases`?

Torture-testing. Victim threads. Everything has its use.


> Given that the explicit "master" and "slave" relationship definition lacks any other common meanings in any other technical field of English (that I'm aware of), I'm not quite sure I understand your point.

There are plenty of other uses in technology. https://en.wikipedia.org/wiki/Master/slave_(technology)


Would "master-servant" make you happier? "master-subordinate"? "master-follower"? All of these also carry negative connotations. Not as bad as "slave", but people will definitely find ways to point out problems with those, too.

I suppose "leader-follower" might be the least offensive of all, but that's also quite cult-like, and we all know the damage caused to society by cults and leader worship.


I'd prefer primary/replica, because it's both more descriptive and, because Microsoft uses it, is already familiar to a huge swath of techies.

Also carries none of the baggage of slavery.


My understanding is that master/slave more accurately describes the relationship than primary/replica does. A replica implies mirroring, but doesn't imply the other key components that differentiate it from the primary or master node.

I think leader/follower is just as accurate while carrying less baggage, but I could see people getting offended by those terms, too. Follower implies lack of autonomy, blind devotion as in a cult, a follower of a dictator like Hitler, power centered around a possible demagogue, etc.

If I were working on a new project I would probably not use "master/slave", because at that point it's trivial not to use it, but to ask an established project to change what they're doing for something so petty seems very silly.


Since antirez has said "all capitalism is slavery" would be funny if he changed it to 'master/employee'


For how long has people been pulling the master switch? Seems that "master" has long been used as an alternative form of "primary".

I would guess Master and Secondary is the more common relationship in other technical fields, through I would be surprised if master and slave originated in computer technical documentation.


Why not?

yread 41 days ago [flagged]

Perhaps this analogy shows better why master-slave could be offensive to some people:

We could mark deleted rows with a "david star" tag and then run the "holocaust" process on the tables to remove them from storage.

or what about saying "castration" instead of "sandboxing".

Surely, people would agree some words are emotionally loaded and using them is unnecessary


> We could mark deleted rows with a "david star" tag and then run the "holocaust" process on the tables to remove them from storage.

That's not really analogous.

Master-slave refers to a power relationship. “David star” (even more clearly your pre-edit “Jew") is a clear reference directly to a specific people, and “holocaust” to specific historical events.

> or what about saying "castration" instead of "sandboxing".

Aside from being a horrible metaphor compared to sandboxing...what about it?


I've seen the term "neutered" used to describe this. Like, "The test environment is a neutered version of production. It won't make POST or PUT calls to our partner databases"


> Our goodness and values show in our worldly actions.

So, how hard would it be to

    sed -ri 's/slave/receiver/g; s/master/sender/g' redis_source/
...to make this product better for more people and take nothing away from it? That would be a "worldly action" to show some goodness.


A huge diff that doesn't mean anything is a nontrivial cost. Documentation would also have to be changed and articles would have to be updated.

Deprecating something, even terminology, should not be done lightly.


[flagged]


this is how voting works tho


In practice, but not on paper. HN guidelines forbid that sort of voting behavior.


There is no guideline on HN forbidding down voting for disagreement. 'dang as recently as a month ago reiterated this:

https://news.ycombinator.com/item?id=17666145


Ah sorry, not sure where I got that idea from, then. I may've been confused by various subreddit mods establishing rules along the lines of "the downvote is not a disagree button".



Sometimes the right thing is nontrivial.


Maybe. I'm undecided on the issue of changing existing instances of "master-slave", but I would definitely use something else in a greenfield project.

You're getting downvotes not (just) due to disagreements but because your first comment was incorrect (it's not just a sed command) and your second was unproductive.


Standing up to thought-policing bullies is a worldly action that shows goodness, IMO.


Thank you for saying this. I am pretty strongly socially liberal (mainly a "live and let live" type mentality), and strongly support the idea of fairness and equality for all, regardless of race, ethnic group, gender identity, or sexual orientation.

But I too think this level of extreme political correctness and people getting mobbed and harassed as a result has really gotten out of hand.

People do NOT have a right to not be offended. Somehow we've forgotten that.


Good job antirez, do not give into ideologically possessed control freaks and busybodies that actively seek out offense in everything. You can never fully satisfy them so don't even bother trying. They do not care about the 'morality' of the master/slave language here, but merely use it as a tool to control behavior of others and exert unearned power over your project. It's a pathetic power play, and nothing more.


Slavery of the human race, whether 1, 10, or 1000 people, transcends race, culture, and time. It is an issue still going on today due to trafficking, and to place it squarely as an issue with white v. black (which implies only white people have ever engaged in the practice) is ignorant. I welcome all inclusive efforts, but it seems these types of people (activists et al) have forgotten that those terms are not just confined to colonial America.

(Please correct me if there is an error with this process.)

Edit: I would like to point out that this is not a criticism of the author or OP. It's an observation. (Also, edited wording.)


Yeah it feels pretty weird when people act like slavery was a unique thing that happened in the southern US.

I had a french person talking about how they were oblivious to that dynamic because they were raised in france where it isn't a problem.

That takes a pretty bad ignorance of colonial french history to say with a straight face.


I can see the argument for avoiding the terminology for new products going forward. But trying to shame a project lead for not taking on the extra work (and user confusion) to change it after the fact is super gross.


Fully agreed. It's easy enough to pick differently if you start something, but it doesn't seem necessarily to warrant effort to change it where it's been done differently in the past (If a project's maintainers want to do it, they're of course free to do so!) and the behavior of some advocates for changing it is horrible.


Retroactively changing terminology is a pain, but if you're doing greenfield development, you can just as easily use "Primary/Replica," which in addition to being a tasteful use of language, is actually more accurate in the context of databases.

There are a bunch of goofy alternatives as well, like "Master/Minion" or hell, why not "Dom/Sub?"


Is this just virtue signalling or are people actually offended by stuff like this? It reminds me of when Harvard Law tore down their school crest recently because it was the coat of arms of a family in the early 1800s that owned slaves.

If you judge historical figures by modern morals and standards you'll find everyone is a bad person. In that case we should wipe George Washington and Thomas Jefferson's faces off of our currency because their families owned slaves too, nevermind their contributions to America.


I think antirez's initial resistance to changing the terminology is reasonable, and obviously doesn't warrant the name-calling. Without a doubt there would be a lot of overhead to change documentation and code.

That said, regardless of the past and ongoing use of master/slave terminology, we should be trying to steer away from it. It's insensitive and just generally unpleasant.


Antirez has said for nearly a decade that if he was rebuilding the system he would use different terms, but changing the terms would break too many clients. Redis is backwards compatile to v1 - that's an impressive feat!

Also, they've included a note on the official position of the project about this in the docs for SLAVEOF https://redis.io/commands/slaveof


If it was a new product I was writing, I would use different terminology.

But bending over backwards and rewriting and re-documenting a huge part of your extremely popular application because a subset of a subset of people find it offensive is... strange.

Also loved the reply: "You call me a fascist, you know, those people who attacked and killed people over here less than 100 years ago. Maybe YOU should watch your language." OWNED! HA!


The irony of calling someone a fascist for using the wrong word... haha


Great response. I will add: Do not give in to these people, even an inch. If you do, they will never be satisfied, but will find the next hill of offense to conquer, and eventually your entire project will forget its purpose.


When this topic (back then it was Drupal, not Redis) was discussed here five years ago¹, I wrote this:

> Interestingly, DNS has gone the other way. It used to be that it was called “primary” and “secondary” DNS servers, but now the preferred terms are “master” and “slave” servers.

You have to look at really old RFCs to see the old terminology, but it’s there.

1. https://news.ycombinator.com/item?id=6826918#6827140


It's unfortunate that this is so poorly written in terms of it being quite obvious that he speaks English as a second language. I also have mixed feelings about a few other details.

But, on the whole, I agree with the sentiment.

I'm older than I used to be and this has made me more appreciative of polite language. But a lot of people who use what I used to somewhat contemptuously call "polite catch phrases" are often not actually any more respectful of other people than those that don't. That genuine respect matters far more to me.

In essence, I think he is correct that what America needs to do is set things right by its own people instead of telling non-Americans that they need to jump through hoops over our emotional baggage for relatively minor details of this sort.


I'm not native english speaker.

To me, someone who speaks English as second language really shouldn't be concerned about non-technical meaning of a word. It almost feels like he is trying to be offended for someone else.


As an American I don’t feel any guilt or emotional baggage. This kind of issue is brought up by people with severely underdeveloped moral codes who have latched on to the candy equivalent of morals. Which is to say, unsophisticated but provides an easy sense of superiority.


As a white American who was born and raised in the Deep South, I can't say I feel guilt per se, but I do feel the weight of baggage in the culture around me. I do feel burdened by not knowing how to talk to people of color at times about some subjects and not knowing what I can do today to help kill this legacy rather than inadvertently keeping it alive.

In my twenties, my husband spent months going on endlessly about his new best friend "John." John this. John that. It aggravated the hell out of me. He gushed about the guy.

Then one day hubby and John arranged for the two families to meet and it turned out John and his family were black. The surprise showed on my face, which made for a very awkward meeting.

I didn't care that they were black, but my husband had never once mentioned that John was black. So I assumed he was white.

In that moment, I realized this was a racist assumption. This assumption that if he isn't white, my husband will inform me of this fact, was an artifact of a deeply racist culture. And I was tremendously upset to realize I had drunk the koolaid when I thought of myself as an idealist and not racist and so forth.

So I am very uncomfortable with the possibility that I may yet still be obliviously doing things that help keep racism alive, help keep people of color oppressed, help keep doors shut in their face without being aware of it. I don't know the solution to that and I think if you really truly believe in justice and equality, that should bother you. If it doesn't, then you are probably part of the problem and just not really wanting to take responsibility for that fact.

But, yes, nitpicking about a single word (or a couple of words, in this case) is often a cheap way to lord it over people and act morally superior without really doing anything of significance. That much, I agree with.


> I didn't care that they were black, but my husband had never once mentioned that John was black. So I assumed he was white.

How can an assumption be racist anyway? If my friend told me about a friend I might imagine that person tall and slim with brown hair and whatever other look and if this person turns out to be short and chubby with blond hair - who cares. Obsessing about skin color like you are doing right now is completely meaningless, doesn't help anybody and just feeds the segregation even more. You can't be "subconsciously racist", don't believe those hoax psychologists that claim it.


How can an assumption be racist anyway?

The assumption was rooted in cultural practices of the Deep South.

Studies show that people who disagree with primary racism will still agree with secondary and tertiary rules that help enforce it. So you may not like the idea of subconscious bias, but it's quite real.

It is sort of a social "Jim Crow" law. Like when people say they aren't racist, but they wouldn't hire anyone who "sounds" black (who has the so called black accent) because you need to be articulate for the job. My rebuttal to that back in the day was "George W. Bush." Because if you actually need to be articulate, then a white man widely mocked for his speech issues should have never been president. But that's not really it.


> How can an assumption be racist anyway?

Very easily: "you're Irish, I just assumed that you were a drunk".


FWIW other large vendors like Microsoft use terms like primary/replica instead of master/slave. That one database uses the phrase in 2018 (MySQL) does it doesn't mean we shouldn't still strive to find more precise language


Perhaps more precise language exists, but my understanding is that master/slave more accurately describes the relationship than primary/replica does. A replica implies mirroring, but doesn't imply the other key components that differentiate it from the primary or master node.


> my understanding is that master/slave more accurately describes the relationship than primary/replica does

Please, do go on—what else about the master/slave relationship is implied by the terminology?


Control mostly. Slave processes are controlled by the master totally and do work on the masters behalf. Parent/child does not work here as child processes are created by the parent, and do not necessarily follow the parents commands. A child can do other work, without the parent being aware of the goals. Replicas on the other hand clone behavior, it has to be identical to the primary.


Cheers Salvatore. I appreciate your stance on this ("political bikeshedding", if that's a thing).


Term "political correctness" is very loaded, and using it basically flags a narrative.

No one would argue for "political correctness", only some would argue against it, because only place it exists in their imaginations.


Context: I'm in the "source and replica"-camp. I'm English and white passing.

I really appreciate antirez's point on this, "Mark" definitely seems to be a person with their heart in the right place but lacking tact and being intolerant to decisions not going his way; especially given the technical work this change would necessitate the change does not seem appropriate.

That said, I hope that in time the technical world will settle on some alternative to ensure we can talk freely without distracting or offending folks.

A few years ago I was in a meeting talking about database options, hitherto I had used "master/slave" to describe this database topology. In that meeting was an African American co-worker ("Frank") and as the words left my mouth I realized that completely irrespective of my intent I brought into the room the spectre of times past. I've no idea how Frank felt about it - but all of a sudden I had lost all ability to continue my point. I paused and said something that amounted to: "you know,... that phrase is fucked up - let's not use it - what words should we use?" and Frank suggested we look at what terms Amazon uses; they used "source and read replica" and that's what we went with. I've never regretted recoding my use of words on that one.

If there's anything that this post-Trump era has really brought into focus for me: it's that my privileges of being white, able bodied, and male results in me being least well positioned to say what is offensive or not. If you think it's offensive, open it up to the rest of the room and establish how to move forward.


Ah, yes, the widespread cancer of critical theory strikes Redis.

mjkunc 40 days ago [flagged]

Or maybe, you could not write a blog post and just fix your fucking terminology.


The next time someone uses the phrase "political correctness", replace it in the sentence with "treating people with dignity" and re-read it.


I would if that's what all, or even most, instances of modern political correctness were. It's also telling that the person trying to bully him into the change definitely did not treat him with dignity, by falsely accusing him of being a fascist when his family suffered and died at the hands of fascists and when his own views are the opposite.

Computer code can't literally enslave other computer code (at least not until AI improves by a lot). Inanimate objects can't cause or experience suffering to/from other inanimate objects. Abstract concepts don't have agency. A master-slave relationship is just an accurate and abstract way of describing certain kinds of concepts.


>Moreover I don't believe in the right to be offended, because it's a subjective thing. Different groups may feel offended by different things.

Spoken like someone who has never had to face systemic oppression.




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

Search: