node-gyp
node-gyp copied to clipboard
"gyp" is a racial slur
The word "gyp" means "to cheat or swindle". It's a shortened version of "gypsy" a slur for Roma people who are commonly maligned as cheaters and swindlers.
Some references:
- https://en.wiktionary.org/wiki/gyp
- https://www.urbandictionary.com/define.php?term=gyp
- https://www.npr.org/sections/codeswitch/2013/12/30/242429836/why-being-gypped-hurts-the-roma-more-than-it-hurts-you
https://en.wikipedia.org/wiki/GYP_(software)
The word "gyp" means "to cheat or swindle". It's a shortened version of "gypsy" a slur for Roma people who are commonly maligned as cheaters and swindlers.
Some references:
- https://en.wiktionary.org/wiki/gyp
- https://www.urbandictionary.com/define.php?term=gyp
- https://www.npr.org/sections/codeswitch/2013/12/30/242429836/why-being-gypped-hurts-the-roma-more-than-it-hurts-you
Get a life
Just because it's an acronym, doesn't make what the acronym spells ok. Until today, I had no idea it even was an acronym. This isn't the first time this sort of thing has come up. See the current discussions around master in Git and the recent ones about GIMP that resulted in the Glimpse fork.
@erbridge There's undoubtedly a trend, this recent one about allopenissues also comes to mind.
https://jira.atlassian.com/browse/JRASERVER-65811
For the record, in that case the decision was ruled against the change. Despite the fact that there's ample references to the possible interpretations of the word and them not being gender-neutral, there was no consensus that while somebody might take offence in that, the technical term is in fact offensive by itself.
If you feel that there's a need for change, I think it'd be beneficial for the community as a whole to provide more context to show how this node-gyp issue differs from allopenissues.
Sharing some context: gyp was created by Google many years ago to be the Chromium build system. Node.js adopted it as building V8 (which is part of both Node.js and Chromium) with it was a lot easier than writing and porting every change to make or other build system. Google deprecated it and replaced it with GN in 2016, but Node.js didn't move to GN as the effort is too big and general consensus is to move to CMake in the future (which is also a huge effort). Recently a fork of gyp was created to apply any patches Node.js might need until the efforts to move to CMake are finished. node-gyp is a wrapper around that build system, which is why it is named that way (although arguably the name is not so meaningful and can be confusing for folks who are not familiar with gyp as a build system).
Changing the name without a strategy is not feasible as it would likely cause a disruption in the ecosystem, breaking many packages. Also, changing the name of this project alone wouldn't be of much use, as gyp-next would still have the name, and so would other projects like node-pre-gyp, not to mention one of the extensions used by the build system is .gyp. So any changes in name here would be a much bigger effort, and someone would need to volunteer to lead it.
One plus side (technically speaking) of changing the name IMO is that we could choose a package name that is build system agnostic, and it could be used as a front-end package to make migration between build systems easier.
Reopening as I believe this is worth at least discussing. But just as recent discussions around the master name as default git branch, this will need a technical strategy to migrate without ecosystem disruption before any decision is made. Also, maybe it makes sense to move this to nodejs/gyp-next, since, as I mentioned before, any changes would not be limited to this project alone.
cc @nodejs/community-committee as it might be of your interest
For completeness sake, here are some other potentially offensive build system names.
Rake
https://github.com/ruby/rake
Rake (top definition) A long-handled gardening tool that can also mean an immoral pleasure seeker.
https://www.urbandictionary.com/define.php?term=Rake
Buck
https://github.com/facebook/buck
Buck (2nd definition) 3.n: slang for a young black man 4.n: a male deer
https://www.urbandictionary.com/define.php?term=buck
These projects should probably have same problems regarding renaming the tool (disruption in the ecosystem, breaking many packages, existing CI/CD environments, etc.)., so when evaluating cost vs. benefit, I would discuss it with these communities as well.
Feel free to open an issue in corresponding repositories for Rake and Buck.
Honestly they shouldn't have to change the name of the project, its been that way for quite some time just because it by the imagination resembles something somewhat of a slur if you connect distant dots, doesn't mean it should be changed and if you had to connect those dots to make a concern about something thats never been both the philosophy of the name of the project is completely stupid, and you should spend more time trying to make rockets at that point.
This is obviously going to be an emotionally charged thread so from the get-go, I hope a healthy discussion takes place.
Reading through this grammarphobia post it seems that the status of Gypsy as a slur against the Romani is disputed, even within Romani culture (emphasis mine):
Some people who identify themselves as ethnically Roma (also called Romani or Romany) are offended by “Gypsy,” and most standard dictionaries have reservations about using it to mean Roma. On the other hand, some Roma people don’t mind being called “Gypsies” and others even embrace the term.
This story from 2016 uses the term Gypsy liberally, as does one of the subjects of the piece who says:
I've always been incredibly proud of my Gypsy heritage
Consider this story from this year titled ‘I’m A Gypsy – I Want My Grandchildren To Be Proud Of That Fact’. The subject of that piece who works for Gypsy and Traveller Empowerment (GATE) Essex explicitly says:
I am a Gypsy challenging inequalities and prejudice to my people in any way that I can.
If that’s politically campaigning with a board in Parliament Square, online or through mentoring – however I can help my community.
I say ‘Gypsy’ because there’s a lot of beliefs that that word isn’t liked by us anymore – it is.
The fact that the Gypsy and Traveller Empowerment organisation, an advocacy group for the Romani, uses that word in their title, as does the Gypsy Lore Society tells me that the time has not yet come to cancel the term.
If node-gyp mentioned the Romani in the readme alongside a stereotypical Gypsy as a mascot, thus implying equivalence, we would definitely have a problem. If no mention of the Romani was made, we would have less of a problem but eyebrows might understandably be raised at the mascot. What the repo in fact has is no mascot, no mention of the Romani, and the only reason that 'gyp' appears in the name is because it's an acronym for Generate Your Projects. I think that the case for a rename will be far stronger after Gypsy and Traveller Empowerment and the Gypsy Lore Society change their own names.
But I'm not an expert so I'm happy to be swayed otherwise :)
@jesseduffield "Gypsy" is arguably not a slur. "Gyp" is widely considered a slur, so your (well cited) discussion of whether the term "Gypsy" is offensive in an of itself is not particularly relevant to this issue. See https://www.telegraph.co.uk/news/uknews/law-and-order/5483053/Judge-accused-of-using-racial-slur-against-gypsies.html for example. The name of this project is not "node-gypsy", it's "node-gyp".
Just going to observe that every time I see this name show up in a build failure, it makes me think less of everyone involved. Ignorance is one thing; knowing harm is another.
I opened a PR to fix this issue (https://github.com/nodejs/node-gyp/pull/2211) and @rvagg closed it as a duplicate, which makes no sense. Could someone please explain how a PR with passing tests dupes an issue?
@ussjoin thank you for taking an interest in this issue. I suggest reading my comment above (https://github.com/nodejs/node-gyp/issues/2168#issuecomment-661202736) to understand the technical challenges and unintended consequences of changing this package name (tl;dr it would be a huge breaking change for the entire Node.js ecosystem). As @rvagg also pointed out in the PR, the gyp/ directory is vendored from https://github.com/nodejs/gyp-next and any changes in that directory should happen on the upstream repository instead, but note that changes there would have the same unintended consequences.
With that being said, we have an ongoing initiative to deprecate gyp on Node.js and move to a different build toolchain, and while this effort will probably take a couple years it also means that the ecosystem cost of renaming node-gyp/gyp-next won't be worth it (as it will take time to get it right anyway, and by the time we get it right we'll be changing to another build toolchain).
@mmarchini Just so I'm sure I understand you: your position is that it "won't be worth it" to remove a racial slur from the core of NodeJS for an unbounded period of at least several years, despite the notes upthread in this issue? That seems to be at odds with the Node community's Code of Conduct.
To be clear, "we took the name from Google" is non-responsive to "this is a racial slur." That just explains why it started out this way, not why anyone would defend it remaining this way.
@ussjoin I think the origin of the name matters quite a bit: if the name is in reference to Gypsies or theft, that would make the case for removing it stronger. As it stands: it's a three-letter acronym for something completely unrelated. I don't think the onus is on the repo maintainers to think about all the ways somebody might take offence to an acronym, especially when a company as progressive as Google came up with the name in the first place and nobody has expressed concern about it until now.
@jesseduffield I'm going to just leave "a company as progressive as Google" aside for others, and simply respond to "nobody has expressed concern until now:"
Scrolling up in this very thread, I see several other people "expressing concern." I'm sure they're not the only ones; this only came to my attention because I was installing a tool written in NodeJS and this tool crashed horrifically, which caused me to wonder "I'm sorry, what on earth is this thing?" While many people capable of using NodeJS tools may not be capable of submitting PRs, I am, so I stepped up. I can't speak for everyone else who ought to have done in the past, but this issue is here, now, and as much as you clearly don't want to "think about all the ways somebody might take offense to an acronym," that doesn't make it right; it just makes it convenient for you to ignore the issue.
@ussjoin FWIW I don't think I would characterize what @mmarchini said as "won't be worth it" but rather "this will break a TON of stuff and we need a clear plan for the ecosystem".
I think that a plan that simply removed gyp from node altogether and replaces the build system is one that is VERY appealing to me. That being said we can't make breaking changes on LTS meaning that at the very soonest we would have to wait for v14.x to be end of life before this could truly be removed and gone.
@MylesBorins To be clear, I was quoting @mmarchini:
the ecosystem cost of renaming node-gyp/gyp-next won't be worth it
It seems like a series of commenters asked you to create a "clear path for the ecosystem," and you declined. I've now provided a PR to fix this repository and allow other repositories to fix themselves. Seems like a path!
I disagree with the assessment of
the ecosystem cost of renaming node-gyp/gyp-next won't be worth it
In particular I was trying to point out that the appropriate move forward is to move to a place where we can simply drop gyp altogether and replace it with a different build system.
It seems like a series of commenters asked you to create a "clear path for the ecosystem," and you declined
One thing I think is worth keeping in mind is that this project, as well as node, is primarily run by volunteers. We have limited bandwidth and limited time. There are many issues, both technical and cultural, that we care a great deal about but don't have the time to do. For example I would love to see fetch in core, for change master to main, and genuinely for us to stop using gyp (both as a slur and as a technology).
That being said simply flipping the switch is going to cause significant ecosystem fallout, and this is not theoretical. It is not as simple as s/gyp/nnabt as much as I personally would like it to be. Gyp is deeply integrated into the build system of node.js core and of the entire native module ecosystem. We have to carefully plan how to deprecate and move off it (or rename it) and that will end up rolling out over many years as Node.js 14 doesn't EOL until 2023.
I respect your energy and passion for this, I truly do, but I hope that you can approach this assuming that many of us here are attempting to operate in good faith and want to make these changes... but that there is a significant amount of labor required to do it.
and as much as you clearly don't want to "think about all the ways somebody might take offense to an acronym," that doesn't make it right; it just makes it convenient for you to ignore the issue.
I'm surprised somebody supposedly compassionate about other people's feelings would say something so callous.
You yourself thought 'what on earth is this thing', and then you found that it was an acronym. Were you still offended after learning that? If I get offended by something and then discover that I misunderstood the intention and context, I'm typically no longer offended. Even in those times that I'm still offended, I don't pin it on the person saying the thing, I just mark it up as a misunderstanding. You're ascribing malevolence where there is none.
(of course this is now somewhat besides the point as the maintainers agree the name is problematic)
EDIT: I forgot to mention this initially: but I actually have thought about whether Roma people would be offended by the repo name and have reached out to a representative org (one I mentioned in my first comment) for their perspective to better calibrate my own.
As for what I've found on the internet, here's a screenshot from an AMA of a self-identifying Gyspy:

I'll ask everyone to refrain from personal attacks in this issue, as those are unproductive to the discussion.
You yourself thought 'what on earth is this thing', and then you found that it was an acronym. Were you still offended after learning that? If I get offended by something and then discover that I misunderstood the intention and context, I'm typically no longer offended. Even in those times that I'm still offended, I don't pin it on the person saying the thing, I just mark it up as a misunderstanding. You're ascribing malevolence where there is none.
I ascribed no malevolence to the original package creators; simply ignorance. That's why I made a PR---to provide a comparatively easy fix to the issue. I wasn't even aware of the existence of this thread until my PR was closed as a dupe of it. Malevolence comes in defending the package name when many people before me (even in this thread) have pointed out the issue.
Again I take issue with your charge of malevolence, as I would say it's quite clear that everybody in this thread is acting in good faith, but I think belabouring the point would distract from discussing the long-term solution here.
I'd like to request that we stop debating about whether the phrase is offensive or if the etymology matters. The meaning of words change over time, and words can hold charge and power unintended by those who wielded them. I don't think we do anything but create an unempathetic environment when we attempt to explain away the emotions of others with logic + reasoning.
node-gyp is unfortunately named and WILL BE offensive to some individuals. That is not and should not be a subject of debate and attempting to do so is honestly a waste of our time and only serves to create division.
@ussjoin I very much appreciate you submitting a pull-request to help try and move this forward. I did a very quick scan and noticed one very obvious example of how the regex replace method it appears you took here will not be sufficient as a broad solution to this problem. https://github.com/nodejs/node-gyp/pull/2211/files#diff-26b681bd4dac10f25d5293c7595c435bR37
There is a function called loadConfigGypi which remains unamed while you have renamed all the references to .gypi files to .nnabti. A quick scan of GitHub shows over 450k files referring to the .gypi extension. While we can come up with solutions that deprecate or replace .gypi long term, we can't simply stop supporting it altogether. Many moons ago we dropped support for an api in node.js that was unfortunately named. (Trigger warning self-harm). We did so in stages which included leaving the original API as an alias with a deprecation warning. In fact deprecations in Node.js have a policy for deprecations that we will likely have to follow if we want to remove / deprecate even just the .gypi extension.
For example our central build config is in common.gypi and you will fine 90+ refrencess to .gypi throughout our source code. This is the type of complicated detangling we have to deal with.
Again, I appreciate your enthusiasm, but there is not relatively easy fix to this and implying otherwise is IMHO not operating in good faith.
@jesseduffield I'd also like to request that you please refrain from continuing to engage if you are going to debate the validity of the complaint. If you would like to work towards solutions that would be awesome, but the general direction and tone of this conversation has gone slightly off the rails and the way you are personally engaging is not helping to de-escalate this.
@MylesBorins apologies, I'll leave you to it :)
Strong agree that our time would better be spent migrating away from node-gyp than working to rename it.
@ussjoin 👋
First of all thank you for engaging, championing this change and starting to do the technical work in that PR. I think there are some misconceptions, I am going to write down things as I understand them and please let me know (you or other parties) if I got anything wrong:
- The term gyp (which node did not pick) is unfortunate since it might be considered a racial slur. This is something that is not contested and we agree with. Everyone in the project so far is OK with changing the name
gypin principle and some people (like Myles above) feel strongly that we in fact should do it. - In addition there is a considerable amount of technical debt around gyp and Node wants to replace it with a different meta-build system altogether. This is a lot of concern regarding a rename and some people think it might not be worth it (which mostly means they are not willing to put in the large amount of effort for this to be done in a way that will not break a lot of user code). There is ongoing work regarding replacing the build system and dropping gyp altogether.
- Replacing gyp is a big undertaking that involves a lot of breakage. In particular this comment by Myles gives a good summary of why.
- People in Node in fact do care enough to undertake these sort of projects (namely Myles, Tierney and a few others were engaged in the renaming of the main branch from 'master'). Small renames happen all the time.
In particular, opening a PR without first talking to the project or people involved (they're friendly and usually communicative, I promise) isn't a great way to interact with the project because it invites a lot of miscommunication (like we saw here). I can see why it would look like the changes are relatively easy but please bear with us and assume good faith.
I encourage you to instead reach out to the people in this thread and ask how to help and how you can promote this. I am sure that we can align both our goals here (as little ecosystem breakage as possible and renaming the unfortunate terminology). Please keep in mind that comments like this one that isn't assuming Mary is acting in good faith when she comments aren't helpful in progressing this issue. The Node.js project is committed to not be complicit in racism and while we live in a complicated world we are trying and we would appreciate help.
P.S. If you want to discuss how to effectively make this change and don't feel welcome/safe here - you can also email me directly (my email is at https://github.com/nodejs/node ) or ask the moderation team to help facilitate discussion ( [email protected] )
@benjamingr great summary, I'd just like to point out that:
In addition there is a considerable amount of technical debt around gyp and Node wants to replace it with a different meta-build system altogether. This is a large concern and some people think it might not be worth it (which mostly means they are not willing to put in the large amount of effort for this to be done in a way that will not break a lot of user code).
Is not accurate anymore (it might've been a couple years ago). There's general consensus that we should move to a different meta build system and I don't remember anyone objecting to it in a long time. We even spun this as a strategic initiative recently, Ben has a proof of concept building V8 with CMake and I'm investigating a hybrid build system with CMake and GN.
@artsyca
Edit: hiding as the comment has been removed.
Hey.
If you are bothered by this and are open to convincing other people of the importance of renaming JS in our code base or doing the actual work of making sure the acronym isn't present and are willing to collaborate and gain consensus - I am 100% willing to support this change. I am thankfully not sure what the inappropriate connotations are.
As a side note - please don't mix issues about naming you don't like in the project. We are willing to have a conversation about unfortunate or problematic naming, learn and correct ourselves. The naming issue here (gyp) is unrelated to the issue you are discussing and I would prefer it if you opened a separate issue if you feel strongly enough.
I cannot stress enough - we take complains regarding naming seriously and we take the project and the culture seriously. People in the project are bound by a code of conduct and a lot of us want to do better with regards to problematic naming.
I would also like you to ask you to self-moderate "semantically hypersensitive", you don't get to dismiss other people here outright even if you are a project member or leadership. Please read our code of conduct if you are not sure what is appropriate here and you're welcome to reach out if not sure.
@benjamingr This thread provides a pretty great reason why someone wouldn't want to reach out in private to maintainers:
- The PR was immediately closed.
- When I asked why, it was reopened, then immediately downvoted by @rvagg.
- The thread is filled with maintainers saying that it's not worth the effort, then walking that back.
- Not to mention the other people jumping in to tell me how terrible I am, like @artsyca and @jesseduffield (leaving aside the other people who mocked the original requesters in this issue, months before I independently came across the same issue).
Regarding breakage: yep, it's true that I intentionally broke loading of the old, slur-named files. If you wanted to add a bridge to pick those up as well for the interim, that'd be fine. Instead it sounds like this whole thing is just being downvoted as "too hard, we'll get to replacing it eventually (but not until at least 2023?) and you should just deal with it until then."
So: I won't be reaching out in private. If you, as you said, would appreciate help, then I think you and the rest of the Node team ought to reach out to the other people you've driven away upthread, as well as actually starting the work and declaring a "by X date this work will be done." For my part, while I tried to help by creating the PR in the first place, I think I've gotten my answer---and it makes me pretty sad that the Node community would rally around protecting a racial slur in the core of the language system.