In conservation biology, the term charismatic megafauna refers to the idea that polar bears sell environmental causes better than mollusks or insects. The cuter, the better. In the world of creators, filled with a veritable forest of charismatic megafauna, like YouTube comedians and Instagram models, I picked the fluted kidneyshell.*
在保护生物学中,有魅力的巨型动物一词指的是北极熊比软体动物或昆虫更能推销环境事业。越可爱,越好。在创作者的世界里,充满了名副其实的魅力巨型动物的森林,如YouTube上的喜剧演员和Instagram上的模特,我选择了凹槽肾壳。
Open source is complicated because it contains a messy mix of both technical and social norms, most of which play out in public. It is documented extensively (nearly every decision is written down somewhere) but not clearly (you have to dig through years of mailing list archives to find what you need). Its treasures are hidden amidst a tangle of brambles and thorns.
开放源代码是复杂的,因为它包含了技术和社会规范的混乱组合,其中大部分是在公开场合进行的。它被广泛地记录下来(几乎每一个决定都被写在某个地方),但并不明确(你必须通过多年的邮件列表档案来找到你需要的东西)。它的宝藏隐藏在荆棘丛生的环境中。
Social norms are passed down through trial and error, which means that getting something wrong runs the risk of embarrassment and mockery in front of one’s peers. Developers don’t contribute to open source for lack of technical ability, but rather due to fear of committing a faux pas.
社会规范是通过试验和错误传下来的,这意味着如果做错了什么,就有可能在同龄人面前遭遇尴尬和嘲弄。开发人员并不是因为缺乏技术能力而对开放源码做出贡献,而是因为害怕犯错而做出错误。
Infrastructure developer Julia Evans, who’s well known for her code and words, writes of her experience contributing to open source:
基础设施开发人员Julia Evans以她的代码和文字而闻名,她写了她对开源的贡献经验。基础设施开发人员Julia Evans以她的代码和文字而闻名,她写了她对开源的贡献经验。
I sometimes feel kind of intimidated by open source. . . . In open source, I need to send code reviews to total strangers. At work, I generally send code reviews to the same 10 people or so, most of whom I’ve worked with for a year or more, and who often already know exactly what I’m working on.64
我有时对开源感到有点畏惧。. . .在开放源码中,我需要把代码审查发给完全陌生的人。在工作中,我一般把代码审查发给10个人左右,其中大多数人都和我一起工作了一年或更久,他们往往已经完全知道我在做什么。
To make things even more challenging, these technical and social norms differ between language ecosystems, types of projects, and even individual developers. (One developer described this to me as “one size barely fits most.”) Knowing how to participate in open source as a Python developer does not mean you can saunter into the world of Haskell. A C++ developer might feel out of place among a group of Electron developers.
更具挑战性的是,这些技术和社会规范在不同的语言生态系统、不同的项目类型、甚至不同的开发者之间都是不同的。(一位开发者向我描述了这一点:"一个尺寸几乎不适合大多数人。")作为一个Python开发者,知道如何参与开源并不意味着你可以大步进入Haskell的世界。一个C++的开发者可能会在一群Electron的开发者中感到格格不入。
The tribalistic nature of open source is frequently overlooked and misunderstood. As we’ve seen from the evolution of “hackers” to the more neutral “programmers” or “engineers,” to the polished-sounding “developers” today, there is no “open source community,” really, anymore than there is an “urban community.” Certainly, one city dweller can sympathize with another in many ways, especially when comparing themselves to their suburban or rural counterparts. But knowing the streets of San Francisco says nothing about how well you’ll fare in Hong Kong. “Urban” is an adjective, not an end point.
开源的部落主义性质经常被忽视和误解。正如我们所看到的,从 "黑客 "到更中性的 "程序员 "或 "工程师",再到今天听起来很光鲜的 "开发者",其实没有什么 "开源社区",就像没有什么 "城市社区"。当然,一个城市居民可以在许多方面同情另一个城市居民,特别是当他们与郊区或农村的同行进行比较时。但了解旧金山的街道并不能说明你在香港会有多好。"城市 "是一个形容词,不是一个终点。
To carry the analogy further: There are cities, and then there are cities.† At roughly 200,000 residents, the city of Reykjavik is the largest in Iceland.66 But it would barely register as a city in China, where the largest city, Shanghai, counts over 24 million residents.67 Likewise, there are open source “projects” like chalk—a tool for styling one’s code with colors and text formatting—which contain few lines of code and perform a small, but useful, function. There are also open source projects like OpenStack—a software platform for cloud computing—with millions of lines of code, broken into large subprojects that each dwarf the codebase of entire stand-alone modules.
进一步的比喻是:"有城市,就有城市。† 雷克雅未克市大约有20万居民,是冰岛最大的城市。67 同样,也有一些开源 "项目",如chalk--一种用颜色和文本格式设计自己的代码的工具--只包含几行代码,执行一个小但有用的功能。也有像OpenStack这样的开源项目--一个用于云计算的软件平台--拥有数百万行代码,被分解成大型子项目,每个子项目都使整个独立模块的代码库相形见绌。
The term “open source” refers only to how code is distributed and consumed. It says nothing about how code is produced. “Open source” projects have nothing more in common with one another than “companies” do. All companies, by definition, produce something of value that is exchanged for money, but we don’t assume that every company has the same business model.‡
术语 "开放源码 "仅指代码的分发和消费方式。它没有说到代码是如何产生的。"开放源码 "项目与 "公司 "一样,彼此之间没有更多的共同点。根据定义,所有的公司都生产有价值的东西,可以用钱来交换,但我们不认为每个公司都有相同的商业模式。
This book doesn’t assume you are a developer, but it does assume that you’re not afraid to learn. For those who are less familiar with open source software, I’ll give a brief overview of how these projects are structured, which will help decode the interpersonal dynamics within.