thoughtbot / factory_bot

A library for setting up Ruby objects as test data.
https://thoughtbot.com
MIT License
7.92k stars 2.61k forks source link

Repository Name #921

Closed tastycode closed 7 years ago

tastycode commented 8 years ago

Every time I refer to this library in code, I'm tempted to alias it to Factory.

I'm curious as to where the name came from?

Ross-Hunter commented 8 years ago

Duplicate of https://github.com/thoughtbot/factory_girl/issues/849

maxkwallace commented 8 years ago

@tastycode Thanks for bringing this up.

What does "factory girl" really mean? Simply put, it draws attention to a woman's gender because she happens to be in a male-dominated environment.

Unfortunately, the software industry is also a male-dominated environment, and it's widely acknowledged that tech has a serious diversity problem.

One symptoms of the problem is judging people based on their gender rather than their character-- which is what the idiom "factory girl" does. So, I think the name FactoryGirl makes it slightly harder for women to feel welcome in our profession. I'd love to see it changed.

This opinion is based on personal experience-- at one point, I was going through some code with a female engineer, and noticing the name FactoryGirl led to an awkward exchange. Since then, I've always aliased it as Factory, but that doesn't do much to solve the underlying problem.

joshuaclayton commented 8 years ago

The library FactoryGirl uses the "factory method" design pattern to define ways in which developers can construct data for a test suite. Because Factory itself was somewhat ambiguous (since it's also a design pattern), we looked at a handful of pop culture references and landed on Factory Girl, which has ties to both Rosie the Riveter and a Rolling Stones song.

joshuaclayton commented 8 years ago

Related: here's the announcement post on our blog, Giant Robots.

tute commented 8 years ago

At one point, I was going through some code with a female engineer, and noticing the name FactoryGirl led to an awkward exchange.

I'd like to know more about this. How was it awkward? Did you feel discomfort because of the name? Did the female engineer express discomfort because of the name? Thank you.

maxkwallace commented 8 years ago

@tute Another guy in the vicinity made a joke about the [factory girl] "doing the work for you". The woman I was working with didn't explicitly say that she felt uncomfortable (people almost never do), but my subjective impression was that she felt uncomfortable. I also felt uncomfortable.

tastycode commented 8 years ago

I personally found this issue when cleansing a code-base of unnecessarily gendered class and variable names.

Regardless of the original intent, I do think that people working in code-base using this gem have to be conscious of why this is an explicitly gendered reference just because of the name.

Given the desire to not create ambiguity with the pattern, maybe FactoryMachine.

Or even better, since it comes from ThoughtBot. FactoryBot

tute commented 8 years ago

I used the Factory Girl gem with colleagues of different genders, and the question of the name never came up. I never cared enough about the name, either, but today I found myself thinking about it, and learned about https://en.wikipedia.org/wiki/Rosie_the_Riveter. Now I love this gem's name.

quangv commented 8 years ago

Just coming from a male perspective, It's seems like a pretty sexist name to me.

Regardless of the original intent, I do think that people working in code-base using this gem have to be conscious of why this is an explicitly gendered reference just because of the name.

I couldn't agree more. I wouldn't want to depend on something called YellowWorker.

https://news.ycombinator.com/item?id=7757667 <-- reference

joshuaclayton commented 8 years ago

I want to thank you all for your feedback, and I appreciate the honesty and candor here.

Regardless of the original intent, I do think that people working in code-base using this gem have to be conscious of why this is an explicitly gendered reference just because of the name.

I wholeheartedly agree.

I'll be working with the rest of the thoughtbot team to understand what the best next steps are and what a transition process might look like to a new gem name.

There's some inherent amount of "Google juice" with the current name around blog posts and other content that, while the gem may have changed, still follows the same patterns and guidance.

I'd consider a positive outcome to be one where a name is chosen for this (and for the factory_girl_rails gem to follow as well) that includes the previous name in the readme, as well as redirects to point developers to the correct resources online. A significant amount of credit goes out to everyone who's used, written about, and contributed to this software and I believe we as a community can help make this better with a more inclusive name going forward.

Again, thank you all for your feedback.

jferris commented 8 years ago

I opened #942 to explain the origins of the name while we discuss a potential rename.

galiat commented 8 years ago

I don’t speak for all women, just myself- but this seems potentially overblown. If you want to rename please just 1st make sure that this is actually something that makes women uncomfortable and that the folks (none who are women) in this thread are not projecting discomfort.

There is real, honest, awful sexism in tech, but this is not it.

The origins of the name, if anything, have roots in empowering women economically. Maybe throw something in the readme to highlight that.

joshuaclayton commented 8 years ago

As an initial pass, I've merged https://github.com/thoughtbot/factory_girl/pull/943, which provides a bit of color around the origins of the repository naming. That said, we're still working on improving this further, and hope to have further changes in the coming months to address this more fully.

Again, thank you all for your patience with this!

zernie commented 7 years ago

If you change library's name, at least don't do it in a PATCH update. That's just stupid.

joshuaclayton commented 7 years ago

@zernie we're looking into the change, but had expected the only impact to be a deprecation warning, and had aliased the previous constant in what we thought would guarantee no breaking changes. Check out https://github.com/thoughtbot/factory_bot/blob/c716ce01b448ce4e0bf855c5a2c63ecb9206322e/lib/factory_girl.rb#L3 for context.

While this worked for the projects we'd tried this on, clearly others' projects were impacted. We've since yanked the factory_girl and factory_girl_rails 4.8.2 versions to prevent further breaking changes, and will be looking into other options for rolling this out in a sensible fashion. Thanks for your patience.

pcriv commented 7 years ago

As a bot i feel offended by the new name :v

saverio-kantox commented 7 years ago

As a feminist, I feel slightly puzzled by the name change. As @galiat previously mentioned, this change erases a gendered bias that was actually empowering to women - even if probably 99% of users were not aware of it - and she had clearly stated that the gender bias problems in tech industry are absolutely not related to this library name. Other libraries, playing on the double meaning of words, and referring to physical attributes of people, both in wording and in imagery, could be really relate to sexism, but not one that relates to one of the historical icons of feminism.

In fact a positive bias (which would mean introducing more feminine naming in the whole tech) would probably be even better, to compensate for the historical male-lead decision making.

This said, it is clear that the change has already been implemented, so it's is clear that mine is just a political response over a political issue that is, in my humble opinion, not being managed correctly.

glaszig commented 7 years ago

builds breaking because of gender warfare. leave your politics at town hall, please. thank you.

bildschirmfoto 2017-10-23 um 15 56 06
joshuaclayton commented 7 years ago

@glaszig due to an issue with renamed constants not being retained, we yanked 4.8.2 of the gem.

If you've explicitly locked to 4.8.2 in your Gemfile, please adjust it to 4.8.1.

group :development, :test do
  # old
  gem "factory_girl", "4.8.2"
  # new
  gem "factory_girl", "4.8.1"
end

The same applies if you're using factory_girl_rails:

group :development, :test do
  # old
  gem "factory_girl_rails", "4.8.2"
  # new
  gem "factory_girl_rails", "4.8.1"
end

If you're using the pessimistic operator ("~> 4.8.0" or "~> 4.8.1"), running bundle update factory_girl_rails factory_girl should do the trick.

cpytel commented 7 years ago

We have been and will continue to delete comments that violate our Code of Conduct.

whitethunder commented 7 years ago

Hopefully I'm not the only one here who finds that the one comment on this issue made by a woman is the most relevant and insightful comment made with respect to the entire issue at hand. Perhaps making decisions on behalf of a group of people should instead be deferred to that group of people.

saverio-kantox commented 7 years ago

Also consider that the two most thumbed-up comments in this thread (https://github.com/thoughtbot/factory_bot/issues/921#issuecomment-243173849 – 152 👍 – and https://github.com/thoughtbot/factory_bot/issues/921#issuecomment-231802011 – 43 👍) both state that there was no issue with the name.

kayakyakr commented 7 years ago

I'm assuming that there was more input internally than just this thread, and hoping that the internal input included more women than just the one who ultimately made the change. I assume this because I like to think the best of people's intentions and actions.

But rolling out a minor version without at least a blog post explaining a pretty significant change to one of the most used gems in all of rubydom and providing insight into the decision making process was, admittedly, a pretty bad PR move.

opsidao commented 7 years ago

@cpytel I would like to know how did my comment violate the code of conduct, is irony also forbidden? Couldn't find it in the document you linked, but I did see that you were supposed to give me a warning, which you didn't.

You might want to follow your own rules before asking others to do it, and when you do follow your rules, you might want to explain people how they apply.

cpytel commented 7 years ago

@opsidao Please take another look at the Code of Conduct. The warning is one of the options available, and is not required. Our goal is to have an inclusive, kind, harassment-free, and cooperative community, and your comment was not in-line with that goal and it was removed. I actually looked for a way to contact you privately, but couldn't find it. Your personal website appears to be offline. Please consider this your warning, if you continue to post comments that we feel the need to removed we will block you from participate and report your behavior to GitHub. Thank you.

opsidao commented 7 years ago

I'm sorry @cpytel but I disagree with your statement. I don't really care if you report me to GitHub, I seriously doubt anyone would consider my comment harassment, and if they do, then there's nothing I can do about it.

If anything, you're the one that just deleted my comment without even leaving me a note telling me anything, to me that felt like a big bully that just comes and imposes his force, more inline with harassment than my original comment if you ask me.

Anyway, I don't think we can get anywhere from here and this is your project after all so it's up to you to handle it as you see fit.

I will try to restrain myself from participating anymore just to be sure that no one feels threatened by my bad behaviour.

sublimemarch commented 7 years ago

I’d just like to remind folks that just because you don’t see women commenting here doesn’t mean that women aren’t uncomfortable with the name. Given the previous comments here, it doesn’t exactly feel welcoming to dissenting opinions from women.

cpytel commented 7 years ago

But rolling out a minor version without at least a blog post explaining a pretty significant change to one of the most used gems in all of rubydom and providing insight into the decision making process was, admittedly, a pretty bad PR move.

@kayakyakr Sorry again for the trouble. We didn't expect it to be a breaking change, but we made a mistake and that was our fault. We yanked the broken version quickly and are working today on a path forward. We also had a explanatory blog post ready to go, but we've now held off on publishing it while we figure out today what the plan for rolling out the change will be in a way that doesn't unexpectedly break things for people. We hope to have that out very soon.

saverio-kantox commented 7 years ago

I’d just like to remind folks that just because you don’t see women commenting here doesn’t mean that women aren’t uncomfortable with the name. Given the previous comments here, it doesn’t exactly feel welcoming to dissenting opinions from women.

I understand that this means that you agree with the original comment by @galiat, which found the name a non-issue? That one was until now the only comment by a woman here, and it has been completely disregarded despite having more 👍 than all the other comments together.

(edit) I might be wrong in the interpretation.

In any case, if that makes the whole thing more welcoming, I am totally in favour of the name change. My issue is exactly that the only published comment from a woman was "not in favour" of the change, so the whole thing seemed at least strange.

But anyways, it's quite late for a debate.

cpytel commented 7 years ago

@saverio-kantox You don't seem to understand that not all folks who have a concern will feel comfortable posting publicly. We did our diligence in investigating this issue, which included talking to people in all affected groups, many of them privately.

You've now made your point that you disagree with this change. Thank you for your perspective.

sublimemarch commented 7 years ago

Exactly. I'm reminding people to consider the reasons why women may not have commented against the old name publicly on GitHub.

saverio-kantox commented 7 years ago

:) see my previous edit.

My point was based on the apparent lack of public debate. And after the last comments, I understand that public debate is not exactly the most welcoming place to express concerns. Which leads me to now fully agree with the name change :) :)

(strong is just for pointing out my change of perspective, not shouting or anything)

Thanks for all the explanations :)

glaszig commented 7 years ago

if you accept contributions of such sociopolitical nature, you should also have the bloody guts when it comes to the ensuing discussion. deleting critical comments and plainly pointing to your CoC which doesn't even apply because there was no harassment is the definition of censorship.

i hold this community to higher standards. disgusting.

yupiel commented 7 years ago

People that have issues with the name of something and then ask it be changed on behalf of someone else shouldn't work in any field where logic is required to get anything done.

Names are but an easy to remember representation for a thing. That would be like me saying I don't want any Xs in the variable, function, class, etc. -names of any project because I know someone that has XX chromosomes and they might feel uncomfortable.

A person or group is providing a service for you or offering you a product. What right do you believe you have to ask it be changed just because you don't like it?

This whole "issue" is, as the edgy kids would say, petty squabble and should be dismissed in a professional environment.

If you can't even handle the name, how can I expect you to handle the functionality?

cconstantine commented 7 years ago

People that have issues with the name of something and then ask it be changed on behalf of someone else shouldn't work in any field where logic is required to get anything done.

Incorrect. If that were true we'd still be using single-letter variable names. Words have meaning, and recognizing that is important. Being able to work with logic machines and being a human that has feelings around specific words aren't mutually exclusive.

Names are but an easy to remember representation for a thing.

True, but it's an argument equally in favor of using the new name and the old name.

That would be like me saying I don't want any Xs in the variable, function, class, etc. -names of any project because I know someone that has XX chromosomes and they might feel uncomfortable.

Kind of true, but this is a false-equivalency. 'Girl' implies much more than 'X' does, but either way, if someone had a problem with 'X's then it would be reasonable to have a discussion about removing them. That discussion would probably result in not removing 'X's, but the discussion should happen (that's what makes this a false-equivalency).

A person or group is providing a service for you or offering you a product. What right do you believe you have to ask it be changed just because you don't like it?

Thoughbot has given us the right to have a discussion around the name of their gem, and they have agreed that the name is more of a problem than it's worth. They have the right to grant us the right to discussion this, and they have the right to change the name. Nothing here is a rights issue.

This whole "issue" is, as the edgy kids would say, petty squabble and should be dismissed in a professional environment.

If you can't even handle the name, how can I expect you to handle the functionality?

I'd bet there are some names this gem could be called that would make you very uncomfortable. The fact that the name FactoryGirl doesn't cause you problems doesn't mean it doesn't cause other people problems. Having empathy and a willingness to listen to the viewpoints of others is much more professional than trying to shutdown a discussion around people's wellbeing. Calling other people's concerns a 'petty squabble' is unprofessional.

I've always felt a little weird about the name of this gem, and I'm personally happy to see it change after some discussion. It'd be nice if they honor semantic versioning, but it seems like Thoughbot has gotten that memo.

tokict commented 7 years ago

This thread gave me cancer

quangv commented 7 years ago

you should also have the bloody guts when it comes to the ensuing discussion. deleting critical comments and plainly pointing to your CoC which doesn't even apply because there was no harassment is the definition of censorship.

@glaszig I've been following this issue closely and it does seem to me that some of the deleted comments in this and related issues were of a harassing nature, unfortunately.

The fact that there seems to be such opposing passionate views on the issue shows that maybe a more neutral name is more appropriate. Just look at other projects with more discreet names like mocha or rails, I doubt if anybody ever felt uncomfortable with those names.

There's something called an Empathy Gap, I don't quite understand it, but it sounds like it's hard to relate to people.

I'm not a female in tech, but if even a single person felt uncomfortable, the name should rightfully be changed.

Remember that lots of subtle often unattended words or actions could leave a member of a minority group to feel ostracized or alienated. It's always good to be more sensitive to the feelings of everyone.

-interesting article about Empathy Gap in Education

maxigs commented 7 years ago

So replacing a "female" gem with a non-gender bot is the way to encourage more women in IT?

I don't understand it, and the lack of explanation (aside from "we did our vetting") does not really help me to understand it.

Personally I think this was a wasted change, to empower women by using the name and where it apparently came from - which i didn't know until today. Instead we get rid of all evidence of gender, making it all equal and removing all possible reason for discomfort putting political correctness and none-offensiveness over any actual cause.

mjankowski commented 7 years ago

So replacing a "female" gem with a non-gender bot is the way to encourage more women in IT?

The purpose of this change is not to encourage more women in IT, it's to reduce the discomfort that has been reported to us by women and men who see the name, don't understand it, and are either vaguely offended or confused because of the gendered name of a piece of software. If this has some small marginal effect of making women more comfortable using this gem or working in IT more broadly, that'd be fantastic, but seems pretty ambitious for a small change like this, and we'll take far far smaller gains as evidence of success.

I don't understand it, and the lack of explanation (aside from "we did our vetting") does not really help me to understand it.

We are comfortable proceeding with the change without your understanding, but a) there's a bunch of explanation here and in the linked issue, b) the spirit of it is "a bunch of people are confused or offended, and we think they have plausible reasons, and this is really easy to improve", so that's what we're doing, c) we'll attempt to explain this further in a follow-up blog post to be posted soon.

[...] which i didn't know until today.

This is exactly the issue: most people do not know -- and do not bother to learn -- the history of the name which potentially has a pro-female spirit to it. That intent and history does not accomplish anything if the reference is regularly missed or not known.

Instead we get rid of all evidence of gender, making it all equal and removing all possible reason for discomfort putting political correctness and none-offensiveness over any actual cause.

I think if you look beyond the narrow context of the naming of this software package, you will find plenty of gender left to experience and celebrate elsewhere. You are correct that not offending anyone when there is not a good reason to offend them is a nice win here.

maxigs commented 7 years ago

Thanks for the detailed response @mjankowski.

Probably i have a different point of view on the issue. I was not on the side to receive the reports about the name of this gem, so my understanding of the magnitude of the issue definitely off.

I'm not objecting the name change itself, aside from the hassle a name change of any library usually causes anyway. But the thoughtbot team clearly felt this is a important enough change to go through with it. Either way it's a win for bringing the issue to people's attention.

But as you explain yourself the origin of the problem was most likely people not knowing the origins of the name. I'm just wondering if trying to educate them on this would have been a "better" solution than to just get rid of any possible incorrectness.

mjankowski commented 7 years ago

Glad I could clear it up -- and yes, thanks to all of you for extending us some trust here around the reported complaints that you did not and cannot see (which were sent to us privately).

I'm just wondering if trying to educate them on this would have been a "better" solution than to just get rid of any possible incorrectness.

We tried this for the first 9 years and it wasn't working, hence this change.

joe-mcnuggets commented 7 years ago

There is nothing more sexist than thinking that "female name" of a gem can make woman feel uncomfortable. And you should think about renaming in the year 2049, when you'll find out, that some of the replicants are feeling confused about it.

saverio-kantox commented 7 years ago

@agavrelyuk you should really consider this:

thanks to all of you for extending us some trust here around the reported complaints that you did not and cannot see (which were sent to us privately).

joe-mcnuggets commented 7 years ago

@saverio-kantox oh, well, it's so in the trend to change something community-important due some complaints, instead of making public poll. Who needs a democracy.

mjankowski commented 7 years ago

There is nothing more sexist than thinking that "female name" of a gem can make woman feel uncomfortable.

First, there are like literally hundreds of things way more sexist than this. This library name is actually pretty low on that scale of things, which is why it's such an easy change to make! If we can't do pretty boring simple things like this, how will we ever do the harder more meaningful things that address bigger problems?

Second, this isn't something we merely "think" - it's something we were told by a bunch of people. We decided to believe them. You don't have to if you don't want to, but we did.

And you should think about renaming in the year 2049, when you'll find out, that some of the replicants are feeling confused about it.

This might sound crazy, but we actually had a pretty long internal discussion about this.

It's not entirely clear that super-human AIs will achieve both high-level intelligence AND consciousness but it's certainly a possibility. In the event that they do obtain consciousness, certainty we'll want to grant them some moral rights. Of course it might be a moot point because "we" will be overthrown so quickly as to not have a say in the granting of the rights, and at that point the robots can take it upon themselves to rename the library, if they are offended by it.

kronos commented 7 years ago

Thanks God I moved to Clojure

kvrag commented 7 years ago

oh, well, it's so in the trend to change something community-important due some complaints, instead of making public poll. Who needs a democracy.

Lol @agavrelyuk this is software that you get to use for free because someone decided it was for the common good. If anything, it's socialism, not democracy.

joe-mcnuggets commented 7 years ago

@kvrag wat 1) Socialism is a type of an economic system and it doesn't mean "everything for free". 2) Democracy is a system of government. 3) Open collaboration is one of the most important open-source principles. So, unexpected breaking changes in the minor update made for some "social justice" without any connection with a community, who use and build this software, seem a little bit unacceptable.

kvrag commented 7 years ago

@agavrelyuk Lol exactly, this isn't a government. It's resources being shared among the population (i.e. socialism) but whatevs

saverio-kantox commented 7 years ago

I humbly propose to protect this thread. All reasons have been exposed, and the points have been made. Now it's just sterile discussion on an already taken decision.