The third benefit open source offers is a better way of building software. As organizations scale their teams and applications, they can create silos between product teams, which in turn can create equally as many development silos. When organizations strategically pair open source with inner-sourcing programs – creating internal networks of shared code, transparency, increased collective code ownership and collaboration – organizations and teams speed knowledge transfer, and produce greater quality code. This in turn leads to more reliable software.
A bank headquartered on the west coast concluded after performing an analysis of their development that only 20 to 25 percent of their code was shared across the organization, and that 50 to 70 percent of their code was redundant, creating duplicate software. They selected six software development teams, created a shared code repository, and developed a process for exposing and sharing those code repositories to different groups within the organization. As an immediate result, their teams doubled the amount of code that was developed and shared, which directly reduced the amount and cost of redundant code.
开源的第三个好处是提高软件开发质量。随着一个组织的团队和应用不断拓展,产品团队之间会形成“孤岛”,进而形成同样多的开发孤岛。当组织战略性地将开源与内源项目(内源项目旨在创建一个组织内部网络,来共享代码、提高透明度、增加代码集体所有权和鼓励内部协作)结合起来之后,组织和团队就能加速知识转移,产生更高质量的代码,并最终发布更可靠的软件。
一家总部设在美国西海岸的银行对其软件开发进行分析后得出结论,只有20%到25%的代码在整个组织内部共享,而50%到70%的代码是冗余的,结果产生重复的软件。他们选择了六个软件开发团队,创建了一个共享的代码库,并开发了一个将代码库公开分享给组织内不同团队的流程。立竿见影的结果是团队将开发和共享的代码量增加了一倍,直接减少了冗余代码的数量和成本。
第一句话的主语里面藏了一个定语从句,而且省略了引导词that或者which,写完整的话应该是benefit that/which open source offers,开源带来的好处,动词是is,我们上次讲过be是系动词,不是实义动词,所以后面跟着的结构是表语,核心词是way,所以是一个名词短语做表语,一种更好的编程方式。
第二句话,我们同样先找主语和谓语动词。
一看到第一个词As开头,又是我们熟悉的时间状语从句,先放在一边。往下看到主语they,他们是谁,一会儿回到从句里面去找;接下来我们看到情态动词can,情态动词表示说话人的语气,这里的can表示一般的可能性,但情态动词不能单独做谓语,必须要和实义动词或者系动词连用构成谓语,所以这句话的谓语是can create,表示非常有可能造成产品团队间的孤岛。
句子的主干找到之后,我们再回过头去看一下前面的状语从句,看看主语they指的是什么。从句里面的主语是organizations,指各类组织(这样说比较全面,企业也是某一种组织),后面的they应该也是指的各类组织;谓语动词是scale,意思是“扩大、拓展”。我们把状语从句的意思和主干连在一起,就很清楚了:随着一个组织的团队和应用不断拓展,组织内的产品团队之间就很有可能会形成“孤岛”(或者“谷仓”)。
这句话还没有结束,从逗号和which我们可以判断出来,后面还跟着一个非限定性定语从句,。我们在前面讲座中说过,非限定性定语从句起到补充说明、增加信息的作用,从句既可以修饰先行词,也可以修饰整个事情。这里的从句就是修饰前面讲的“在组织内的产品团队之间就形成孤岛”整个事情,进而补充说明这个事情还能再进一步,在开发团队之间也形成同样多的孤岛。
### 3.inner source program
>
When organizations strategically pair open source with inner-sourcing programs – creating internal networks of shared code, transparency, increased collective code ownership and collaboration – organizations and teams speed knowledge transfer, and produce greater quality code.
inner source的概念这几年提得越来越多,我们先来看一下维基百科的定义,了解下它的含义。除此之外呢,因为它是本世纪产生的新词,也有写成innersource、InnerSource、inner-source的,这几种写法都是可以的。
>
InnerSource is the use of open source software development best practices and the establishment of an open source-like culture within organizations. The organization may still develop proprietary software, but internally opens up its development. The term was coined by Tim O’Reilly in 2000.
简而言之,inner source是用开源的开发方式来做一个组织内部的开发平台。说得更加直白一点,就是闭源代码平台在公司内部对内的“开源”。
对社交编程(Social Coding)还有GitHub等网站,你应该都比较熟悉。那你应该也非常清楚社交网络对开发的激励作用:代码写完交给老板交作业,和提交给社区大家一起讨论修改,感觉当然是完全不一样的。但是,对于一些产品线复杂的大型厂商而言,简单依靠类似GitHub或者GitLab这样的托管平台显然解决不了问题,但如何在传统的专有软件闭源环境中推广开源的文化,说服不同团队开放代码,如何建立访问权限体系,如何激励高贡献员工,如何打通不同的生产环境……这都是需要逐一解决的管理问题。
当然,最适合搞内源平台的还是大厂,产品单一的初创企业很难有那样的内部开发人员数量,人气不够效果也会大打折扣。
所以,inner source翻译成“内部开源”平台应该是准确的。我也看到过有的媒体将其简化成“内源”平台,这样简化也不是不可以,但恐怕简化之后,很多人需要知道一些背景和来龙去脉才能理解。
解释完内源平台的概念,我们回到文章里继续看这句看似很复杂的长句。
一上来第一个词就是When,出现它一般就是时间状语从句,我们先放一边。然后是前后两个破折号(和两个逗号是一样的作用),一看就是插入语,也先放一边。我们先找到主语organizations and teams,然后找谓语动词,speed和produce,这是两个并列动作。主干的意思非常清楚,组织和各团队加快了知识转移和改善了代码质量。
又快又好的编程是怎么实现的呢?我们回去看状语从句,里面的谓语动词是pair,把两样东西配一起,也就是开源结合内源平台,而破折号里面的插入语对内源平台的概念做了补充说明。这样把前后意思一串,就非常清楚了:开源加内源,编程的活干得又快又好。
最后一个小短句就是结论,主语this指代前面一大堆,谓语动词leads to,表示最后的成果,几乎是更为可靠的软件。
### 4.宾语从句
我们通过这个长句,来复习一下宾语从句。这句话的主语和谓语动词都非常明显,主语就是bank,带一个后置定语,一家总部在美国西海岸的银行;谓语动词是concluded,得出结论。根据什么得出结论呢?谓语动词后面紧跟了一个分词短语做时间状语,我们知道这家银行就他们的软件开发进行了分析之后,得出了结论。
那么结论的内容是什么呢?也就是concluded的宾语,我们看到了that引导的两个并列的宾语从句,分别说明了分析研究的结论。第一个结论是共享代码只占20%到25%,第二个结论是冗余代码高达50%到70%。
在此基础上,这个句子还没有完,逗号后面还跟了一个分词短语来做结果状语。结果怎么样呢?结果就是重复劳动,产生了重复的软件。
### 5.简单句和并列句
看了很多主从结构的复合句,现在我们通过这句话来讲一下简单句和并列句。
所谓简单句,就是只有一个结构的句子,谁(主语)做了什么(谓语)。
虽然上面这句话看着也比较长,但它的结构其实很简单。主语就是They,根据前面一句话,我们知道这里的they,指的是美西那家银行里面的那些人。他们干了什么呢?后面可以找到并列的三个谓语动词,selected、created、developed,也就是美西银行的“他们”连续做了三个动作:选开发团队、建共享代码库、开发内源流程。
从内容看,这就是一个简单句。但是,按照英语语法里一个简单句只能有一个谓语动词的大原则,虽然是同一个主语,但既然做了三个动作,从形式上讲也可以算并列句。争论这句话究竟是简单句还是并列句没什么意思,你明白背后的道理即可。
**所谓并列句(compound sentence),是两个或多个简单句的并列,各简单句意义同等重要,相互之间是平行并列的关系,而没有从属关系。如果有从属关系,就有主句和从句,变成复杂句(complex sentence)。**
并列句由并列连词相连,基本结构就是:简单句+并列连词+简单句。并列连词只有下列七个,取每个并列连词的首字母拼成非常著名的“FANBOYS”,这样可以帮助你记忆。十年前还有一部美国电影《星战迷友》,英文名称就是Fanboys。
>
**FANBOYS**:
**For** - Explains reason or purpose (just like “because”)
I go to the park every Sunday, for I long to see his face.
**And** - Adds one thing to another
I like to read, and I write faithfully in my journal every night.
**Nor** - Used to present an alternative negative idea to an already stated negative idea
I neither love nor hate to watch TV.
**But** - Shows contrast
Television is a wonderful escape, but it interferes with my writing.
**Or** - Presents an alternative or a choice
Would you rather read a book or watch a good TV show?
**Yet** - Introduces a contrasting idea that follows the preceding idea logically (similar to “but”)
I always take a book to the beach, yet I never seem to turn a single page.
**So** - Indicates effect, result or consequence
I like to read, so my grammar is always on-point.