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

In most cases, the process has some hidden steps and hoops which are unrelated to patch.

The patch methodology will be probably criticized. Sometimes this criticism will go beyond the boundaries and leak to personal space of the developer, and the dialog will turn abrasive or abusive.

And a patch written in two days will be revised an revised for weeks. Not all revisions will be made for logical or legitimate reasons.

Then the developer will submit its patch, it'll be accepted at last, and the developer will never patch anything again, for ever. It'll be burnt out in a single patch.

Some communities do this, and often they don't know what they're doing.

I personally wouldn't do kernel patches. Heck, can't dare to ask anything to the list. Because I don't want the harassment. Also there's the silent ignorance in the mailing lists because your question is too basic or uninteresting or just posted to wrong-ish list. That's a different matter, but results in the same avoidance reflex.




Some anecdata:

I tried to submit a patch once (https://patchwork.ozlabs.org/patch/660921/) - which to me felt exactly as you described. I didn’t get the reply to my questions questioning the review comment (maybe I didn’t understand it completely so was not worthy of a response?).

In any case, luckily that was not in a critical path for me and then I have moved to a different project so I abandoned it - just seemed like a not so productive/happy use of my time.

And now I feel actively disinterested to ever attempt contributing again.

I can see the other side of the coin as well - the need to maintain the code quality, and probably the burnout of multiple “stupid” questions/patches. I can imagine how it gets tiring especially if one does it in their spare time.

Do I have the right to say “they need to be more patient/welcoming”? Probably I don’t - but equally I don’t fancy being someone’s emotional grounding.

So I will rather stay on the sidelines.


> I can see the other side of the coin as well - the need to maintain the code quality, and probably the burnout of multiple “stupid” questions/patches. I can imagine how it gets tiring especially if one does it in their spare time.

It gets tiring only if you despise answering these "basic" and/or seemingly "stupid" questions. In my day job I'm a system administrator of an HPC cluster, and we also do technical support ourselves. Users ask questions "wrong" all the time. Not enough information, seemingly simple details, etc. I personally never get mad at them, because they don't know how to do it better. We generally try to guide them, point to the correct places, test the problem ourselves, and see what happens, but never intentionally harass them.

You can maintain the code quality with a polite "Why this patch didn't pass the inspection" letter. There's a similar effort called "I downvoted because" [0], but even giving links from that page requires some niceness. Just pasting the relevant URL also looks and feels rude.

If a user is intentionally volatile, we defuse them. If they're intentionally malicious, we block/prevent them. If they're intentionally smarmy or snarky, they get polite but firm answers. At the end they cool down, because they cannot fuel their anger with our reactions.

> Do I have the right to say “they need to be more patient/welcoming”? Probably I don’t - but equally I don’t fancy being someone’s emotional grounding.

They don't need to be patient, if one is intentionally testing their patience. They don't need to be (overly) welcoming, but they need to be polite enough to tell that, or point the person to right way. Saying "no" is not a problem, but not pointing the next step is problematic, especially if the asking person doesn't know the better.

At the end, these behaviors are not because of the person asking the question, or sending in that "stupid" patch. It's about the person who's reacting to the patch/question/whatever. They don't like something, or see something and get triggered, then unload all the rage upon the asking person regardless of relevance of the rage.

For one, knowing oneself better is as essential knowing the stuff that you're working on. Having a baseline niceness is a win for everyone, because it makes life much simpler without softening boundaries. In fact, it strengthens them without making them intimidating.

[0] http://idownvotedbecau.se


I am responsible for my emotions, and my reaction to something is my problem. I get this.

Programming is creative. Just like artists, writers, any other creative process. We get emotionally involved with our work and we become emotionally vulnerable when we show our work to others.

So submitting code to the scrutiny of others is a vulnerable space for me. If the reaction of others is "this sucks" then I have a negative emotional reaction to that. I understand that this reaction is my problem, I'm not blaming the other person for their response, but I still have a negative emotional reaction.

I do not want to emotionally disassociate myself from my creative work so that I no longer have this reaction. I enjoy being this emotionally connected to my work.

I'd rather not show my work to others, or to only selected people who I can trust not to respond with something that will hurt me. I know this about myself.


The more I think about it, the less I believe the whole "I am responsible for my emotions". It is true in some situations and not in others. As a strategy, it makes it impossible to adress abusive or manipulative people while it makes it easier for abusive people to get their way. You are responsible for reaction, but certain emotions are perfectly natural and normal.

0.) There are many people who purposely insult others and then brag about it. When I go out of my way to make you pissed off for own pleasure, then blaming you for being angry is unfair. Then there are people who push and see how you react. If you are doormat, you get more abuse. Here insult have purpose.

1.) This ideology is more focused on pretending emotions don't exist or framing you as bad/weak if you have then. But, it allows you to "retaliate" against third parties.

2.) It is asymetric. Insulted person is expected to have perfect emotional control while the lack of such control on the side of the one who insulted you is ignored or seen as strength.

3.) It leaves you with two options - leaving or bending over to abusive people. There is little space for standing for yourself without becoming abusive yourself.

Imagine a group of respectful people competing with each other. Then the abuser comes in and intentionally causes stress and discomfort to competitors. If you don't allow the respectful people to address his behavior or openly talk about its consequences without sounding "weak", then the abuser is in advantage. They spend effort to manage those negative emotions while he does not have to. He is less in advantage where "stop insulting me" or "stop constantly undermine me" are legitimate things to say.


I also don't believe that "I am responsible for my emotions". It frames emotional / emphatic people as weak as you say, however I don't also think that retaliating with anger is a solution to this problem, but I also don't imply pacifism as the solution.

Every kind of bullying is deteriorating and highly damaging. I've experienced this for 10 years straight, and I decided that I will never do anything to anyone that I don't want to experience (Don't sow anything you don't want to reap).

However in real life, we need to protect ourselves against these manipulators and bullies. We can overpower them, we can play their game or we just become too hard to attack. I've chosen the third way. When someone attacks me in any way, I don't provide them any fuel with my anger or sorrow. I give them nothing. If they're criticizing me, I note words (but not the emotions), and give them a hard think. If I can get anything useful from it, I use the advice. If nothing comes out, I throw everything away.

Of course I'm not perfect at this, I also have soft sides. I sometimes short circuit after the event, but I sorted out most problematic parts of my life that way. I even saved my career that way. It's not an easy thing, but it's highly rewarding if you ask me.


I am sorry to hear you were bullied. I also have experienced this.

I know this will be hard to listen to, but it is my truth.

I was bullied because I gave them my power. When I took responsibility for my emotions, and refused to fear them, it all changed. Power comes with responsibility. When I took responsibility for my fear away from them, I could take my power back and it all stopped.

It sounds like victim blaming, I know. "Just ignore them and they'll go away". All that crap. For me, it was more like "no one is ever doing that to me again". I refused to be afraid any more. I would face them, fight them, do whatever it took, take whatever they did to me, but I would not be afraid any more.

I am responsible for my emotions. I refuse to give anyone else that power over me.


I agree with you. It is ok to be angry, but anger does not excuse everything person does and anger does not mean that I am in the right.

I would also add that there are many people who are not bullies and still may do something bully-like without realizing it. I know few people like that - somehow they are not good at seeing your reaction the way others do and are bad at predicting it. With them, if you just let it be, then it get worst. If you openly tell them to stop and explain how it hurts those around, then it gets better.

Even neurotypical people including me can do hurtful things without realizing. Feedback and communication helps.


I am not a perfect human being. I can react in ways that are not ideal when situations trigger my flaws. That's OK, as long as I accept responsibility for that.

I am responsible for my emotions, but that doesn't mean I have to apologise for them. If I think someone is acting like a dick, and my reaction to that is stress and anger, I'm OK with accepting responsibility for my anger and showing it anyway. I am human, I have inappropriate emotions at times.

However, blaming the other person because "they made me feel angry" is not helpful. They acted like a dick, and they have to accept responsibility for that. I got angry, and that's my responsibility. I could have chosen not to get angry, and I refuse to give the power to make that choice to someone who acts like a dick.

Responsibility and authority go together. Accepting authority over my emotions means I have to accept responsibility for them. Refusing to accept responsibility for my emotions also means I'm refusing my authority over my emotions. Giving others control over my emotions is not going to lead to good things.


Disclaimer: I'll intentionally use "you" to address you, since you expressed some emotions, and I'll directly address them, but I won't hurt you.

> I do not want to emotionally disassociate myself from my creative work so that I no longer have this reaction. I enjoy being this emotionally connected to my work.

I also see programming as a form of art, and I'm also attached to my code emotionally, however you need to understand that, when someone says that your code "sucks" it's their point of view. Neither you nor your code sucks. It may not be doing something in a certain way the critical person likes or prefers. Even if your patch is plain wrong, this doesn't change the real value of you or your code. You've put the effort and tried something. You're the man in the arena [0].

If the person is agreeable, you can talk and improve the code and the persons involved in this. If not, do not take the critics' criticisms and move on. Even if your patch or code is wrong, it doesn't give the person the right to hurt you. So don't allow him/her to do so.

The critic might be right in its words, but wrong in its attitude. You can learn to separate the two, and thank for the advice while giving back the thorny part. Yes it's a very hard thing to learn, but when you learn it, you can keep the ability without much maintenance. When you learn this skill, you do not emotionally disconnect from your work. On the contrary, your connection is stronger and the elements cannot affect this connection between you and your work. Also, you have a much pure and powerful kind of empathy as a result of this learning process. Because you can look from the eyes of the critic, with the disconnection of the critic from your life and work, and process this criticism with the emotional connection to your code. This transforms the whole situation into something hard to describe, but it's very powerful indeed. Last but not the least, it's free from the emotional damage that critic deals (knowingly or unknowingly).

Code on, keep creating and at least put it somewhere visible. You don't need to shout about it.

[0] http://www.theodore-roosevelt.com/trsorbonnespeech.html


Yeah, there are strategies for dealing with criticism. I use this a lot when dealing with customers (I love the analogy of the feedback bucket - put the shitty feedback in the bucket and use it to grow roses of insight). It's easier to deal with this kind of criticism, because the customer is always right.

But add the emotional vulnerability to the well-known entitlement stuff ("I used your code in my project and it doesn't work, so you need to fix it"), and the hassle of dealing with other people (ugh), and, well... why bother?

The upside that you describe - or struggle to describe... I've never experienced that. I find myself explaining my code to someone because they criticised it without understanding it, and there's no feelgood there. I wish there was.


> Yeah, there are strategies for dealing with criticism. I use this a lot when dealing with customers (I love the analogy of the feedback bucket - put the shitty feedback in the bucket and use it to grow roses of insight). It's easier to deal with this kind of criticism, because the customer is always right.

That's a good strategy too, however I do not explicitly use the things I said as a "strategy". I always live like that, so it can be said that it's my default mode. However, I need to say I was much like you. With some hard work and determination I've changed myself.

> But add the emotional vulnerability to the well-known entitlement stuff ("I used your code in my project and it doesn't work, so you need to fix it"), and the hassle of dealing with other people (ugh), and, well... why bother?

I wouldn't bother too, but send them a bug report template to fill. If they say it doesn't work, they need to put the money where their mouth is, and tell me exactly why and how it doesn't work.

> The upside that you describe - or struggle to describe... I've never experienced that. I find myself explaining my code to someone because they criticised it without understanding it, and there's no feelgood there. I wish there was.

You're telling yourself. My code didn't suck, but they didn't read/understand it. Don't forget that the problem is on the other side of the fence. You don't need to feel bad, because the other side didn't understand it. It's not because your code sucked. Don't let them throw their frustration to your turf.


> In my day job I'm a system administrator of an HPC cluster, and we also do technical support ourselves.

The difference is that you are paid to do that. You are not helping those people out of personal altruism, so wasted time is not lost. You did a successful job nonetheless.

If I on the other hand like to help people with coding problems in my free time, and they don't even bother to properly format the code they want me to look at, I'm wasting time if I still try to read it. My free time, and other peoples time that would need some help too.


> The difference is that you are paid to do that. You are not helping those people out of personal altruism.

I'm not working as a system administrator for its pay, I work here because I like my job. Payment is a side effect of it. So it's like a paying hobby for me. It also other side benefits like being able to carry my academic knowledge to my work and vice versa.

> , so wasted time is not lost.

I do not consider helping a person to learn something, to show something they don't know, or to point them the right direction as wasted time. It's kind of planting seeds. It may come alive or not. I just put in the effort that I can.

> You did a successful job nonetheless.

Honestly, thanks. :)

> If I on the other hand like to help people with coding problems in my free time, and they don't even bother to properly format the code they want me to look at, I'm wasting time if I still try to read it.

I'd auto-format in Eclipse and try to read for five minutes. If I fail, then I send back my formatting work and politely ask for making it more readable. This is my way of saying no: "Hey I can't help you, but that's what I've done while my time allowed. If you do your part, I'll try again to do my part when I have more free time."

My time, and nobody's time is for free, and using it effectively is very wise, you're right!


I've had a similar experience when submitting a patch for an open source Google product.

Jumped through their hoops, was met with denial and skepticism of a problem hundreds of people were reporting, that is until one of the skeptical project members independently cited a standard that I had cited in my pull request. We go back and forth for two weeks to refine the pull request, where I am doing all of the revisions. Eventually they're given approval and I assume all is well.

About three months went by, their product is still broken so I check on the pull request and it appears that the relevant people tested and approved of my patch... but they wanted a test suite written for it. They expected me to write and submit tests for their broken product after spending a month of my free on their project.

I was left with feeling as though Google employees should just do their jobs if they want their products to work, as I'm not wasting any more of my time by doing work for them for free.

This is a sharp contrast with other projects I've contributed to, where the response has been "Thanks for pointing out a problem with our project, let's do everything we can to fix it" instead of an uphill battle that was my experience with Google.


If they want the tests to be written beforehand by the patch developer, they need to write that in the guidelines. If that isn't present in the guidelines, or they're not accepting patches to testing/building process, they should write these tests themselves.

Otherwise it's just the same thing as child labor. Unethical, ugly, and sad.




Consider applying for YC's Spring batch! Applications are open till Feb 11.

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

Search: