开源软件和自由软件
Over the last couple of weeks, there has been what can really only be called a ‘brouhaha’ brewing over the role of politeness in open-source software. This argument was largely brought to the fore by a comment made by Linus Torvalds in response to a GitHub pull request. You can see the comment Linus made here. The comment that earned Linus’ ire has been deleted, but was not posted by the person making the pull request. It read, approximately, “I did not realise Linus’ shit does not stink. Thanks for clearing that up.”
在过去的几周中,礼貌在开源软件中的作用实际上只能称为“ brouhaha”。 Linus Torvalds为响应GitHub pull请求而发表的评论在很大程度上引起了这一争论。 您可以在此处查看Linus的评论。 引起Linus愤怒的评论已删除,但提出拉取请求的人未发布该评论。 它大约读到:“我没有意识到Linus的屎并不臭。 感谢您的清理。”
This caused the internet, in particular r/programming and Hacker News to explode. The comment was posted on both news aggregators: the Reddit discussion can be found here, and the HN discussion here. Each discussion lead to hundreds of comments, even on the significantly less traffic-heavy Hacker News.
这导致互联网,特别是r / programming和Hacker News爆炸。 评论发表在两个新闻聚合器上:Reddit讨论可以在这里找到,HN讨论可以在这里找到 。 每次讨论都会产生数百条评论,即使对流量非常少的Hacker News也是如此。
Of course, the obvious follow-up occurred, and the discussion hit the blogs. I can happily say that I missed the vast majority of the blog-based noise. However, I was a little startled to find, about a week after the event, my RSS feed telling me that the normally fairly quiet Kenneth Reitz had made a blog post tangentially related to the issue.
当然,发生了明显的后续行动,讨论在博客上进行。 我可以高兴地说,我错过了绝大多数基于博客的噪音。 但是,在活动结束约一周后,我有点惊讶地发现我的RSS feed告诉我,通常相当安静的Kenneth Reitz撰写了与该问题相关的博客文章。
Kenneth’s post did not explicitly refer to Linus, and is in fact not intended to be directly relevant to the ‘Linus’ scenario. However, it seems inarguable to me that Linus’ indelicate comment provided the final inspiration for Kenneth to write a post on an issue that is clearly very important to him.
肯尼思(Kenneth)的帖子并未明确提及莱纳斯(Linus),并且实际上无意与“莱纳斯(Linus)”场景直接相关。 但是,对我来说,不可否认的是,莱纳斯的轻描淡写的评论为肯尼思撰写一篇对他显然很重要的问题的文章提供了最终灵感。
Now that some of the madness has died down, I’d like to weigh in a little bit. Much like Kenneth’s post, it will not be directly aimed at Linus. However, it will be related to Linus.
现在,有些疯狂已经消散了,我想稍微说明一下。 就像肯尼思(Kenneth)的职位一样,它不会直接针对莱纳斯(Linus)。 但是,它将与Linus有关。
注意事项 (Caveats)
Before I go any further with my discussion, I want to practice some full disclosure.
在继续进行讨论之前,我想练习一些完整的公开内容。
First, let me say that I have limitless respect for Linus Torvalds. If I ever have the privilege of meeting him in person, I will almost certainly embarrass myself by coming over all starstruck. Linus is undeniably an incredibly talented programmer, software architect, community leader and communicator. He has successfully developed and coordinated the development of one of the most significant open-source software projects in history, and if I could count myself as even a fraction of the man he is I would be happy.
首先,我要说我对莱纳斯·托瓦尔兹有无限的尊重。 如果我有幸亲自见面他,我几乎肯定会因走遍所有星际迷航而感到尴尬。 不可否认,Linus是一位非常有才华的程序员,软件架构师,社区负责人和沟通者。 他成功地开发和协调了历史上最重要的开源软件项目之一的开发,如果我能算得上是他的一小部分,我将很高兴。
Second, I should note that I have interacted with Kenneth Reitz from time to time. His Requests library, aside from being an example of brilliant API design, was the first open source library I ever contributed to. My contributions were exceptionally minor, but he was either thankful for them or pretended to be. It made for a gentle introduction to the world of open-source software development, and has provided me with an enthusiasm for the process that has stuck with me.
其次,我应该指出,我不时与Kenneth Reitz进行过互动。 除了作为出色的API设计示例之外,他的Requests库是我所贡献的第一个开源库。 我的贡献微乎其微,但他要么对此表示感谢,要么假装愿意。 它对开放源代码软件开发领域进行了轻描淡写的介绍,并给我带来了对我所坚持的过程的热情。
礼貌与开源软件有何关系? (How Does Politeness Relate to Open-Source Software?)
Good question. Let me answer it with an example. My first contribution to the Requests library was a three character change. It is hosted on GitHub, so you can see the change here. All I did was add three characters to the list of allowed characters in cookies. This change fixed bugs, but is nevertheless fairly trivial. Despite this, Kenneth expressed thanks for the fix.
好问题。 让我用一个例子来回答。 我对请求库的第一个贡献是更改了三个字符。 它托管在GitHub上,因此您可以在此处查看更改。 我所做的就是将三个字符添加到cookie中允许的字符列表中。 此更改修复了错误,但仍然相当琐碎。 尽管如此,肯尼斯仍对修复表示感谢。
For me, this was a big deal. Before this point, I had only written code for myself or during my internship. When writing code for myself, it was acceptable and not embarrassing to write less-than-perfect code. After all, no-one would ever see it. During my internship, I was subject to code review, and expected to be learning on the job, so once again my ugly or incorrect code was not a source of embarrassment.
对我来说,这很重要。 在此之前,我只为自己或在实习期间编写了代码。 当为自己编写代码时,编写不完美的代码是可以接受的,也不会令人尴尬。 毕竟,没有人会看到它。 在实习期间,我接受了代码审查,并希望能在工作中学习,因此,我的丑陋或不正确的代码再也不使人感到尴尬。
This, however, was different. I was providing a (trivial) fix to a real bug in one of the most popular Python libraries around. This code would be subject to scrutiny by any number of people, almost all of whom would be more experienced than me, and many of whom would be at least as intelligent as me. My code was in a public arena for the first time, and it terrified me.
但是,这是不同的。 我正在为周围最流行的Python库之一中的实际错误提供(重要的)修复。 此代码将受到许多人的审查,几乎所有的人都比我更有经验,并且许多人至少和我一样聪明。 我的代码第一次出现在公共场所,这让我感到恐惧。
To have Kenneth’s response be unambiguously positive was exactly the kind of response I needed. Admittedly, it was unlikely that Kenneth would be mean, because I had done nothing to deserve it, but he could easily have been ambivalent or lukewarm about my contribution. His evident appreciation of my minor contribution made me feel valuable to a project that I greatly admired.
让肯尼斯的React明确肯定是我所需要的那种React。 诚然,肯尼思不太可能是卑鄙的,因为我没有做任何值得得到的事情,但他可能很容易对我的贡献产生矛盾或冷淡。 他对我的微小贡献的明显赞赏使我感到对一个我非常敬佩的项目很有价值。
莱纳斯的角色 (Linus’ Role)
So how does Linus Torvalds fit in to this?
那么Linus Torvalds如何适应呢?
Linus directs the development of, amongst other things, the Linux kernel. This is far-and-away the most famous and notable open source project (sorry GNU folks, but you know it’s true).
Linus指导Linux内核的开发等。 这是最著名,最著名的开源项目(很抱歉,GNU人士,但您知道这是真的)。
It is also an unforgiving development location. The Linux kernel is written in an intimidating combination of GCC C and inline assembler, and the code base is enormous. Furthermore, because it is an OS kernel, bugs are unacceptable. As a result, fools, particularly those whose opinion of their own skill is not backed up by tangible results, are not tolerated lightly.
这也是一个不可原谅的开发位置。 Linux内核是用GCC C和内联汇编程序的可怕组合编写的,其代码库非常庞大。 此外,由于它是OS内核,因此错误是不可接受的。 结果,傻瓜,尤其是那些对自己技能的看法没有得到实际结果支持的傻瓜,不会被轻易容忍。
Linus has a long history of being what I would euphemistically call ‘direct’ about his opinions. A quick browse through his page on Wikiquote will turn up some gems.
莱纳斯(Linus)长期以来一直是我对他的观点的委婉说法。 快速浏览他在Wikiquote上的页面会发现一些宝石。
However, the bulk of this is not assholery; that is to say, it is not Linus lashing out at the less-intelligent or less-talented simply because he can. In the majority of these cases, the person bearing the brunt of Linus’ wrath made an ad hominem comment to begin with. In other cases, it is those who repeatedly show themselves unable to meet the standards required for kernel development.
但是,这绝不是愚蠢的。 就是说,不是Linus仅仅因为他可以就抨击那些不那么聪明或才华横溢的人。 在大多数情况下,首当其冲的是莱纳斯(Linus)愤怒的人。 在其他情况下,是那些反复表明自己无法满足内核开发所需标准的人。
In the rough-and-tumble world of kernel development, this is OK. I would suggest that first-time open-source contributors should not be contributing to the Linux kernel. The requirements of your code are so significant that it is likely that your contributions will be considered inadequate.
在繁琐的内核开发世界中,这是可以的。 我建议初次开源的贡献者不应该为Linux内核做出贡献。 您的代码要求如此重要,以至于您的贡献可能会被认为是不足的。
Here’s the thing: that’s OK! I’m going to stand up right now and say that I am insufficiently experienced to contribute to the Linux kernel, and that that’s totally understandable. I have time to develop that skill set if I want it.
事情就是这样:没关系! 我现在要站起来,说我没有足够的经验来为Linux内核做贡献,这是完全可以理解的。 如果我愿意,我有时间发展这种技能。
已经说到点了! (Get to the point already!)
OK, here’s the point. Open-source needs to be welcoming to contributors who have not contributed before. This means being positive about work whenever you can, even if all it means is one positive sentence. It’s twenty seconds out of your day, and it’ll encourage a developer to spend more time on your pet project, so why not do it?
好的,这就是重点。 开源需要欢迎以前没有贡献过的贡献者。 这意味着只要可以就可以对工作保持积极态度,即使这意味着一个积极的句子。 每天花费20秒,这会鼓励开发人员在您的宠物项目上花费更多的时间,那么为什么不这样做呢?
This includes developers on more challenging projects. If a kernel newbie like myself submits a patch to the Linux kernel code, I fully expect that patch to be rejected, or at least returned to me for editing. However, there is a constructive and polite way of doing this, and the word ‘moron’ is not involved in it.
这包括从事更具挑战性项目的开发人员。 如果像我这样的内核新手提交了Linux内核代码的补丁程序,我完全希望该补丁程序被拒绝,或者至少返回给我进行编辑。 但是,有一种建设性且礼貌的方式来执行此操作,并且“月亮”一词不涉及其中。
Now, to be clear, I don’t know if Linus is constructive and polite or not. In reality, I am fairly sure he doesn’t see the low-level changes: they are probably submitted to other developers who combine changes together and push them upwards towards Linus. I suspect, on balance, that Linus probably isn’t an asshole.
现在,要明确地说,我不知道Linus是否具有建设性和礼貌。 实际上,我非常确定他不会看到低级更改:它们可能已提交给其他开发人员,这些开发人员将更改组合在一起并向上推向Linus。 总的来说,我怀疑Linus可能不是混蛋。
翻译自: https://www.pybloggers.com/2012/05/politeness-and-open-source-software/
开源软件和自由软件