澳门新葡亰网址下载Git工具详解以及与GitHub的配合使用

by admin on 2020年4月9日

在未来的 12 到 24 个月内(也就是说,在 2018 年,或者是 2019
年),人们雇佣软件开发者的方式将会发生彻底的改变。

Git和GitHub

作者 | 伍杏玲

2004 至 2014
期间,我曾经就职于红帽,这是世界上最大的开源软件公司。还记得 2004
年七月的一天,我第一次来到这家公司,我的老板 Marty Messer
就跟我说,“所有你在这里所做的工作都会被开源,在未来,你将不需要任何的简历,因为所有的人都可以
Google 到你。”

概念

git — 版本控制工具(命令)

工具介绍官方网站:

工具下载地址:

git是一个开源的分布式版本控制系统,用以有效、高速的处理从很小到非常大的项目版本管理。git是个工具,在linux里面也就类似gcc这样的工具一样,是一个shell命令git是Linus
Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。Torvalds开始着手开发git是为了作为一种过渡方案来替代BitKeeper,后者之前一直是Linux内核开发人员在全球使用的主要源代码工具。开放源码社区中的有些人觉得BitKeeper的许可证并不适合开放源码社区的工作,因此
Torvalds决定着手研究许可证更为灵活的版本控制系统。尽管最初git的开发是为了辅助Linux内核开发的过程,但是我们已经发现在很多其他自由软件项目中也使用了git。例如:很多Freedesktop的项目也迁移到了git上。

Github — 一个平台(网站)

Github官方网站:

*提供给用户创建git仓储空间保存(托管)用户的一些数据文档或者代码等。*

Github目前拥有140多万开发者用户。随着越来越多的应用程序转移到了云上,Github已经成为了管理软件开发以及发现已有代码的首选方法。GitHub可以托管各种git库,并提供一个web界面,但与其它像SourceForge或Google
Code这样的平台不同,GitHub的独特卖点在于从另外一个项目进行分支的简易性。为一个项目贡献代码非常简单:首先点击项目站点的“fork”的按钮,然后将代码检出并将修改加入到刚才分出的代码库中,最后通过内建的“pull
request”机制向项目负责人申请代码合并。已经有人将GitHub称为代码玩家的MySpace。

Github公有仓库免费,私有仓库要收费的!

责编 | 唐小引

供职于红帽的一个独特的好处是,在这种开源的工作期间,我们有机会建立自己的个人品牌和树立自己的声誉。我们可以通过邮件列表和
bug 追踪器与其它的软件工程师进行沟通,而且提交到 mercurial、subversion
和 CVS 仓库的源代码都会被开源,并且可以通过 Google 找到。

git和Github的关系

指定了remote链接和用户信息(git靠用户名+邮箱识别用户)之后,git可以帮你将提交过到你本地分支的代码push到远程的git仓库(任意提供了git托管服务的服务器上都可以,包括*你自己建一个服务器 或者 GitHub/BitBucket等网站提供的服务器*)或者将远程仓库的代码
fetch 到本地。

Github只是一个提供存储空间的服务器,用来存储git仓库当然现在Github已经由一个存放git仓库的网站空间发展为了一个开源社区(不只具有存储git仓库的功能了),你可以参与别人的开源项目,也可以让别人参与你的开源项目。

出品 | CSDN

(写本文时)马上就到 2017 年了,我们将生活在一个处处充满开源的世界。

Github类似产品

有很多Github类似的平台,用于提供git仓库的存储。

BitBucket

公有、私有仓库都免费。

近几日来,因基于美国 BIS 将华为列入管制“实体名单”,Google
将向华为停止软硬件及技术方面的合作,尽管本身已“开源”的 Android
系统部分依然可以使用,但Google 本身闭源的移动服务 (Google Mobile
Service)
以及技术支持等服务将无法使用,由此,引发了广泛热议。与此同时,更多人发现,Apache
基金会与 GitHub
也疑似受美国出口法律法规管制。这引起很多开发者的恐惧与思考:如果有一天,美国一声令下,“管制”起来,我们中国企业和程序员是否陷入艰难的困境呢?

以下两点会让你对这个新时代有一个真正意义上的了解:

git和CVS、SVN的区别

git是分布式版本控制系统,代码提交是在本地的(如此速度就快),当然生成补丁(patch)然后push到远程服务器上是需要联网的

CVS、SVN是集中式版本控制系统,代码提交都是提交到远程服务器上,是需要一直联网的(如此速度就慢)(这里的一直联网不是说你写代码的时候要联网,而是说你提交代码的时候必须联网;但是git不同,git提交代码是本地的不需要联网,生成patch后push
patch才需要联网,相当于svn的远程的集中服务器对于git来说,这个集中的远程服务器就在本地)。这个地方比较难理解。

CVS、SVN这样的集中式版本控制系统,它的完整代码仓库(代码仓库不仅仅只包含了代码,还包含各个历史版本的信息等)在中心服务器上,一旦这个中心服务器挂了,也就是完整的代码仓库挂了,虽然你本地可能之前有从中心服务器上取得过代码,但是那些历史版本信息都没有了,而且你也无法再提交代码。

git不同,git没有中心服务器的概念,每一个git客户端(git节点)都含有一个完整的代码仓库(前提是你之前从远程git仓库fetch过代码),所以那些历史版本信息都在你本机上,假如哪一个git节点挂掉了,随意从其他git节点clone一个代码仓库过来就ok了,
那些原来的代码、版本信息之类的都还是完整的(当然如果你在这个挂掉的git节点上新增的代码是没有掉了的)。

综上,git的每一个节点(第一次从远程git仓库取得代码后,该git节点就是一个完整的代码仓库)相当于SVN的中心服务器,都包含完整的代码仓库

于是有人建议,中国的代码别托管在国外的代码仓库里了!为了安全,赶紧把代码挪回我们自己的代码仓库吧。

  1. 微软在过去的一段很长的时间里都在坚持闭源,甚至是排斥开源。但是现在也从心底里开始拥抱开源了。它们成立了
    .NET 基金会(红帽也是其中的一个成员),并且也加入了 Linux 基金会。
    .NET 项目现在是以一个开源项目的形式在开发着。

  2. GitHub
    已经成为了一个独特的社交网络,并将问题追踪器和分布式源码版本控制融入其中。

git的工作原理

可实情真的如大众所说的“GitHub是美国的,里头的代码都受美国管制”吗?而解决之道真的是“闭关锁GitHub”吗?

对于那些从闭源走过来的软件开发者来说,他们可能还不知道发生了什么。对于他们来说
,开源就意味着“将业余时间的所有工作成果都免费开放”。

架构图

澳门新葡亰网址下载 1

对此,CSDN采访到中国开源软件推进联盟副主席兼秘书长刘澎和钧理知识产权事务所、开源社法律咨询委员会顾问林诚夏,一起为我们解疑释惑。

对于我们这些在过去十年创造了一家十亿美元的开源软件公司的人来说,参与开源以后就没有什么空闲的时间可言了。当然,为开源事业献身的好处也是很明显的,所得到的名誉是你自己的,并不隶属于某个公司。GitHub
是一个社交网络,在这个地方,你可以创建你的提交、你可以在你所专长的领域为一些全球性的组织做出贡献,你临时做的一些工作并不附属于所任职的公司。

功能特性

git的功能特性:
一般开发者的角度来看,git有以下功能:
1、从远程服务器上克隆clone完整的git仓库(包括代码和版本信息)到自己的机器(单机)上。
2、在自己的机器上根据不同的开发目的,创建分支,修改代码。
3、在单机上自己创建的分支上提交代码。
4、在单机上合并分支。
5、把远程服务器上最新版的代码fetch下来,然后跟自己的主分支合并。
6、生成补丁(patch),把补丁发送给主开发者。
7、看主开发者的反馈,如果主开发者发现两个一般开发者之间有冲突(他们之间可以合作解决的冲突),就会要求他们先解决冲突,然后再由其中一个人提交。如果主开发者可以自己解决,或者没有冲突,就通过。
8、一般开发者之间解决冲突的方法,开发者之间可以使用pull命令解决冲突,解决完冲突之后再向主开发者提交补丁。

主开发者的角度看,git有以下功能:
1、查看邮件或者通过其它方式查看一般开发者的提交状态。
2、打上补丁,解决冲突(可以自己解决,也可以要求开发者之间解决以后再重新提交,如果是开源项目,还要决定哪些补丁有用,哪些不用)。
3、向远程服务器(公共的)提交结果,然后通知所有开发人员。

优点:
1、适合分布式开发,强调个体。
2、远程服务器(公共的)压力和数据量都不会太大。
3、速度快、灵活。
4、任意两个开发者之间可以很容易的解决冲突。
5、离线工作。(当然提交远程服务器或者从远程服务器fetch代码是要联网的)。

主流开源软件是否会被闭源?

聪明的人会利用这种工作环境。他们会贡献他们的补丁、工单
issue、评论给他们平时在工作中使用的语言和框架,比如 TypeScript、 .NET 和
Redux 。

git中的一些概念和原理

澳门新葡亰网址下载 2

谈起开源软件的版权,刘澎介绍道,平常我们的版权是叫Copyright,但在自由软件里是著佐权,是一种利用现有著作权体制来保护所有用户和二次开发者的自由的授权方式。它代表这个软件放弃了极大部分的商业权利,是共享、开放、自由的。

他们也拥抱开源,并会尽可能多的开源他们的创新成果。甚至会提交他们的贡献给私有仓库。

工作区

Working Directory

电脑上能看到的目录即工作目录,比如:/e/git_repo/

澳门新葡亰网址下载 3

而对于很多人担心的“当前已成为主流进入我们的生活及业务研发中的开源软硬件、系统工具是否会面临突然被闭源的困境?”

GitHub
对平等居功至伟。比如说,你也许很难在澳大利亚得到一份来自印度的工作,但是,在
GitHub 上,却没有什么可以阻止你在印度跟澳大利亚的工作伙伴一起工作。

版本库

Repository

工作区有一个隐藏目录.git,这个不算工作区,而是git的版本库。
git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD。构造参见上面的结构图。

澳门新葡亰网址下载 4

林诚夏直言道,不会。除非美国大举修改出口管制条例的相关内容,不然这样的设想并不会发生。

在过去十年里,想从红帽获得一个工作机会的方式很简单。你只需要在一些某些小的方面,与红帽的软件工程师在开源的项目上协作,然后当他们觉得你在某些方面做出了很多有价值的贡献,而且成为一个很好的工作伙伴时,那么你就可以申请一个红帽的工作机会了,或许他们会邀请你。

暂存区

Stage

暂存区就是版本库中的一个区域,具体参见上面的结构图。

美国出口管制条例的主要控制对象,其实是专利技术,或依该专利技术产出的硬件产品,例如芯片或内嵌软件专利的程序项目。较少直接影响到软件著作权,但要就软件著作权来做控管,解释上也是可以,只不过,开源软件依照EAR
15 CFR § 734.3(b)及15 CFR §
734.7两项合并解释:「技术或软件已经是被一般公众可以接触,并不限及其后续散布者(when
it has been made available to the public without restrictions upon its
further dissemination),则并不在EAR管制之列。」

现在,在不同的技术领域,开源给了我们所有人同样的机会,随着开源在世界的各处都流行开来,这样的事情将会在不同的地方盛行开来。

工作区、版本库、暂存区之间的关系

git工作的流程就是:
第1步,使用git add把文件从工作区添加到版本库中的暂存区,git
add命令可以多次用;
第2步,使用git commit提交代码,就是把暂存区的所有内容提交到当前分支。
综上,需要提交的文件修改通通放到暂存区(可能有多次的git
add),然后,一次性提交暂存区的所有修改到当前分支(git commit)。

虽然说软件涉及加解密技术,即使是开源软件,仍必须经过美国工业和安全局,认同其为「公开可用」的加解密技术,才完全不受到EAR拘束,但是,这并不等同说,开源软件涉及出口时,必须经BIS审查并核可。

在最近一个访谈中,Linux
和 git 的发明者 Linus Torvalds(在 GitHub 上有 49K 粉丝,0
关注),这么说,

分支

分支(branch)有什么用呢?假设你准备开发一个新功能,但是需要两周才能完成,第一周你写了50%的代码,如果立刻提交,由于代码还没写完,不完整的代码库会导致别人不能干活了。如果等代码全部写完再一次提交,又存在丢失每天进度的巨大风险。
现在有了分支,就不用怕了。你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工作。

实际流程,是由出口者向BIS及美国国家安全局发送通知,以备查的方式,让这两个单位了解,所出口的软件虽涉及加解密,但该加解密技术确实符合EAR
15 CFR § 742.15(b)款中「公开可用」的标准。

“你提交了很多小补丁,而在某个时候项目的维护者开始信任你,在那一刻,你跟一般人不同的是,你不仅仅是提交了一些补丁,而是真正成为了这个组织里被信任的一部分。”

分支内部原理

1、如下图所示,版本的每一次提交(commit),git都将它们根据提交的时间点串联成一条线。刚开始是只有一条时间线,即master分支,HEAD指向的是当前分支的当前版本。

 澳门新葡亰网址下载 5

2、当创建了新分支,比如dev分支(通过命令git branch
dev完成),git新建一个指针dev,dev=master,dev指向master指向的版本,然后切换到dev分支(通过命令git
checkout dev完成),把HEAD指针指向dev,如下图。

澳门新葡亰网址下载 6

3、在dev分支上编码开发时,都是在dev上进行指针移动,比如在dev分支上commit一次,dev指针往前移动一步,但是master指针没有变,如下:

澳门新葡亰网址下载 7

4、当我们完成了dev分支上的工作,要进行分支合并,把dev分支的内容合并到master分支上(通过首先切换到master分支,git
branch master,然后合并git merge
dev命令完成)。其内部的原理,其实就是先把HEAD指针指向master,再把master指针指向现在的dev指针指向的内容。如下图。

澳门新葡亰网址下载 8

5、当合并分支的时候出现冲突(confict),比如在dev分支上commit了一个文件file1,同时在master分支上也提交了该文件file1,修改的地方不同(比如都修改了同一个语句),那么合并的时候就有可能出现冲突,如下图所示。

澳门新葡亰网址下载 9

这时候执行git merge
dev命令,git会默认执行合并,但是要手动解决下冲突,然后在master上git
add并且git commit,现在git分支的结构如下图。

澳门新葡亰网址下载 10

可以使用如下命令查看分支合并情况。

  1. git log –graph –pretty=oneline –abbrev-commit 

6、合并完成后,就可以删除掉dev分支(通过git branch -d dev命令完成���。

澳门新葡亰网址下载 11

如此,就是分支开发的原理。其好处也是显而易见的。

所以说,据路透社的报道,谷歌无法再提供Google
Apps给华为,这是因为这些Apps并非开源软件,不能满足EAR「公众可以接触,并不限及其后续散布」的条件,才会有可能被美国政府指示择日停止出口给华为,与此相较,Android
Open Source
Project,则并不在拟限制出口清单之列,主因就是AOSP,是采「公开可用」的开源模式发布。

实际上你的名声存在于那个你被信任的网络。我们都知道,当你离开一家公司以后,你的人脉和名声可能会削弱,有的甚至会丢失。就好像,你在一个小村庄里生活了很长的一段时间,这里所有的人都会知道你。然而,当你离开这个村庄,来到一个新的地方,这个地方可能没人听说过你,更糟糕的是,没有人认识任何知道你的人。

分支策略

如何合适地使用分支?

在实际开发中,我们应该按照几个基本原则进行分支管理:
1、master分支应该是非常稳定的,也就是仅用来发布新版本,平时不要在master分支上编码开发。master分支应该与远程仓库保持同步
2、平常编码开发都在dev分支上,也就是说,dev分支是不稳定的,到某个时候,比如1.0版本发布时,再把dev分支合并到master上,在master分支发布1.0版本;dev分支也应该与远程保持同步;(git
push/git pull也要解决冲突)

3、你和团队成员每个人都在本地的dev分支上干活,每个人都有自己的分支,时不时地往远程dev分支上push/pull就可以了。(push/pull的时候是要解决冲突的.

澳门新葡亰网址下载 12

上面这个图是大致示意图,其实上面这个图是省略了git push/git
pull操作的,比如bob在本地dev分支上,新建了一个feature1分支干完活,在本地的dev分支上合并了feature1分支,然后要把dev分支push到公共服务器上,这样michael才能pull下来bob完成的内容。更详细一点的图如下:

澳门新葡亰网址下载 13

GitHub 教程系列文章: 

通过GitHub创建个人技术博客图文详解 
http://www.linuxidc.com/Linux/2015-02/114121.htm

GitHub 使用教程图文详解 
http://www.linuxidc.com/Linux/2014-09/106230.htm 

使用 GitHub / GitLab 的 Webhooks 进行网站自动化部署 
http://www.linuxidc.com/Linux/2016-06/131993.htm

多个GitHub帐号的SSH key切换
http://www.linuxidc.com/Linux/2016-05/131080.htm

如何在同一台电脑上使用两个GitHub账户
http://www.linuxidc.com/Linux/2016-05/131079.htm

利用GitHub搭建个人Maven仓库 
http://www.linuxidc.com/Linux/2016-04/130197.htm

一分钟认识GitHub
http://www.linuxidc.com/Linux/2015-11/125089.htm

分享实用的GitHub
使用教程

http://www.linuxidc.com/Linux/2014-04/100556.htm 

GitHub使用操作指南 
http://www.linuxidc.com/Linux/2016-10/135782.htm

GitHub使用方法入门基础 
http://www.linuxidc.com/Linux/2017-05/144084.htm

GitHub
的详细介绍
:请点这里
GitHub
的下载地址
:请点这里

PS:git本没有公共服务器的概念,git的每个节点都是一个完整的git库,但是公共服务器是方便了git节点之间的代码互相push/pull(要不然每个git节点都需要互相连接,每增加一个git节点就要连接其他的git节点)。如下图所示:

澳门新葡亰网址下载 14       
澳门新葡亰网址下载 15

        有公共服务器的结构                            无公共服务器的结构

有公共服务器的,增加tom节点时候,只需要tom和公共服务器相连接,tom就可以取得(pull)michael提交(push,此处不是commit,commit是本地提交,没有推送到公共服务器)的代码,也可以取得bob提交(push)的代码。

如果没有公共服务器,tom要想取得(pull)michael的代码,则必须在tom和michael之间建立一个网络连接;
要想取得(pull)bob的代码,必须在tom和bob之间建立一个网络连接。

更多详情见请继续阅读下一页的精彩内容
http://www.linuxidc.com/Linux/2017-05/144168p2.htm

澳门新葡亰网址下载 16

我们必须要明白,EAR管理限制的是出口行为,而与软件著作权利谁属,没有必然关系。

你已经失去了一度和二度连接关系,甚至有可能会失去这三度连接关系(LCTT
译注:指六度连接理论)。除非你通过在会议或其他大型活动中演讲来建立自己的品牌,否则你通过在公司内部提交代码建立起来的信任早晚都会过去的,但是,如果你在
GitHub
上完成你的工作,这些东西依然全部都在,对这个信任网络的连接仍然可见。

而“出口”的定义,按照美国工业和安全局的解释,包括:

首先会发生的事情就是,一些弱势群体可能会利用这个。包括像学生、新毕业生、移民者–他们可能会利用这个“去往”澳大利亚。

任何运送出美国的行为;

这将会改变目前的现状。以前的一些开发人员可能会有过人际网络突然中断的情况,开源的一个原则是精英——最好的创意、最多的提交、最多的测试,和最快的落实执行,等等。

任何利用电子交易送出美国的行为;

它并不完美,当然也没有什么事情是完美的,不能和伙伴一起工作,在人们对你的印象方面也会大打折扣。红帽公司会开除那些不能和团队和谐相处的人,而在
GitHub 工作的这些员工,他们主要是和其它的贡献者之间的交流。

将技术发送给任何一个在美国的非美国公民的行为。

GitHub
不仅仅是一个代码仓库或是一个原始提交成员的列表,因为有些人总是用稻草人论点描述它。它是一个社交网络。我会这样说:

所以,若一个开源项目是透过国际协作的模式来进行,只是由美国当地厂商取之来做商业服务的支援,这就未必涉及出口,因为在其他国家,也有可能有其他厂商是直接从非美国的源头,取得这些开源软件来进行商业服务的。

GitHub 有多少代码并不重要,重要的是有多少关于你代码的讨论。

大家应该要理解,原则上国际间协作、网络公开可下载的开源项目,没有太多EAR方面的疑虑,只是说,像红帽或谷歌这样的公司,其实是公开网络上提供开源项目是基础版本,商业合作上会提供「开源项目+额外元件」。

GitHub 可以说是伴你而走的名声,并且在以后的 12 到 24
个月中,很多开发者使用它,而另外的一些依然并不使用,这将会形成一个很明显的差异。就像有电子邮件和没有电子邮件的区别(现在每个人都有电子邮件了),或者是有移动电话和没有移动电话的区别(现在每个人都有移动电话了),最终,绝大多数的人都会为开源工作,这将会是与别人的竞争中的一个差异化的优势。

例如Fedora Distro是红帽公司的开源基础版,RedHat
Distro是基于Fedora上的加值版;Android Open Source
Project是开源基础版,加上的Google
Apps是额外元件,在这些「额外非开源元件」上就比较会有受到EAR管制的可能。换言之,若是开源项目和其商业项目的内容完全一致,理论上便较不会有EAR的出口控管的疑虑。

但是现在,开发者的职业生涯已经被 GitHub 打乱了。

不同基金会之间的管制有什么区别呢?

作者简介:

林诚夏说,其实差别不大,基金会若设立在美国,相关的软件发布自然解释上,有可能落入出口行为的定义范围,所以各大基金会多会揭示声明,提醒开源软件的使用者,虽然美国出口管制条例原则上不严格控管开源软件的发布。

Josh Wulf – 我是 Just Digital People 的传奇招聘者,前红帽员工,CoderDojo
导师, Magikcraft.io 创始人之一,The JDP Internship
出品人——这是世界第一的软件开发真人秀,世界上最好的科技播客主持人,也是一位父亲。一直致力于昆士兰州的“硅经济”。

但是,EAR此项原则仍有例外的解释空间,例如加解密技术必须通报备查,即为一例。基金会做这样的告示声明,用意在于提供使用者,相关的出口管制涉及软件从美国出口时,仍是有效的,发布者必须就个案来自行斟酌,是否主动向BIS及NSA进行EAR要求的申报。

via:
Medium 作者:Josh
Wulf
来自:Linux中国 译者:SysTick

中国不会进“黑名单”

刘澎说,GitHub的原创开发代码是不能受管制的,但由于企业版本的代码是私有的,所以将会受管制。

在GitHub Enterprise
Server协议上写道:“不得出售,出口或再出口到EAR第740部分补充文件或乌克兰克里米亚地区的国家组E:1中列出的任何国家。
该清单目前包含古巴、伊朗、朝鲜、苏丹和叙利亚,但可能会有所变化。”

很多中国开发者担忧这个“黑名单”会不会加上中国,刘澎说,中国是经济强国,如果把中国列入“黑名单”,将破坏全球经济秩序。

林诚夏也表示,这个可能性是非常低的。上述清单所涉及的国家与美国之间曾有武力冲突,或有涉及武力冲突的可能性,所以相关的出口管制,美国采取最严格的审验标准,若要将这样的标准套用到中国,是全球二大经济市场的直接冲突,牵连极大。所以,林诚夏认为这样的管制清单,不会是指定国家或地域,而可能是商业实体的特定公司。

还有,对于“涉及加解密者则会被管制”的说法,林诚夏进一步解释道,依照EAR
15 CFR § 742.15该项的说明理由,加密项目(Encryption
items)原则上受到EAR高度管制。因为这样的项目会被用来隐藏信息的内容,所以有可能会被外国人士拿来伤害美国的国家安全、外交政策,及其他依法执行的利益。

所以说,内含加解密技术的软件,可被用来制造加密项目,这是为什么原则已开源的软件不受EAR管控,但若涉及加解密技术的开源软件,即使该加解密技术公开可及,仍被要求做申报备查的处理。

例如OpenSSL这样的开源软件项目,是一个开放源代码的软件库包,应用程序可以使用这个包来进行安全通信,避免窃听。也就是说,这个软件可以协助使用者进行加密通讯,主要是可以实作SSL与TLS这种可以加密的通讯协议,用到OpenSSL代码的软件,依过往习惯,EAR仍然要求出口者,必须时时主动向BIS及NSA发送通知,来让这两个单位掌握相关信息。

中国开发者的原创性较弱

“被管制”新闻出来后,有一些开发者开始有“放弃GitHub,迁移代码到国内的代码仓库”的说法,刘澎直言,这是不可取的。

他说,目前我们最大的问题是原创性不够,如果我们为了躲避GitHub,而迁移代码回国内的代码仓库的话,这样不就成了“闭源”了吗?这样会影响我们开发者的创新性的。

刘澎表示,其实中国是有一些优秀的原创项目,如TiDB
newSQL数据库和Rocket MQ消息队列,是世界级优秀的开源软件。

像这样的开源项目,中国是有的,但是数量还远远不够,目前很多“自有”操作系统,其实内核也是基于Linux的,非全是自主原创研发的。不像美国有谷歌的Android、Linux系统那样有原创决定性的基础软件。例如Linux仅去年就更新890万行代码,这是集中全球的资源来更改的,这就是开源的好处。

目前中国没有属于自己的操作系统,假如我们想开发自己的操作系统,难度有多难呢?

刘澎形容道:“比原子弹还难”,因为涉及千家万户的使用检验

目前,在开源生态环境中,缺少开源软件项目基金会,产业资本投入的不足,有影响力的本土原创开源软件项目不多,导致现在中国没有自己的开源许可证,反映了开源生态要素不完备。

开发者在托管代码、选择开源软件,

该如何选择呢?

林诚夏表示,如果想把跨国影响的疑虑降到最低,下列几款「旧时」的开源许可证,除非有特别理由,建议尽量不要使用,因为其早期嵌有准据法条款,或指定地区性的管辖法院,然而除了下列这些许可证之外,目前全球多数的开源许可证,皆没有指定准据法和审判法院。

林诚夏再简要重申,并不是说与MPL-1.0、MPL-1.1、QPL-1.0、MS-RL,以及MS-PL许可证有关软件项目就是美国出口软件,事实上它也可以是无关的,但这几款旧款的开源许可证或嵌有准据法要求,或要求解释依美国法律。

如果希望开源项目未来在使用上,在法律或管辖解释上不被限缩的话,这几款旧时许可证有关的软件项目,建议低度使用。另外,MPL-2.0
已取消指定法院和准据法,故这个最新版本是没有相关疑虑的。

MOZILLA PUBLIC LICENSE Version 1.0 (MPL-1.0),指定美国加州法院

Mozilla Public License Version 1.1 (MPL-1.1),指定美国加州法院

The Q Public License Version (QPL-1.0) ,指定挪威奥斯陆法院

Microsoft Reciprocal License (MS-RL),名词定义指定依美国著作权法

Microsoft Public License (MS-PL),名词定义指定依美国著作权法

除此之外,我们在选择托管代码的方式之余,最重要的问题是:我们该如何做到“开源自立”呢?

开发者:成为优秀的代码守护者

为什么我们会处于目前困窘的现状呢?

刘澎说,国内开源仅有20多年,知识传递过程需要时间来学习理解,而现在的我们还是蹒跚学步的过程,尚未能奔跑。

而这次的EAR事件,未必是一件坏事,它让国内开发者开始思考一个问题:作为开发者,我们该如何“开源自立”?

他建议:作为开发者,应该积极投入开源社区,从贡献者到持续贡献者,再到代码审核者,然后到代码守护者。

刘澎坦言道,目前国内没有特别优秀的项目,导致优秀的代码审核者、代码守护者的数量很少,更别说开源社区的领袖了。

所以提升我们代码贡献和代码审核质量,并成为优秀的代码守护者,是我们开发者需要做的。

另外,刘澎谈到国内优秀的超级使用者,例如阿里巴巴、京东、百度、腾讯、华为、联想等企业,均为开源贡献很多优秀的代码,还对开源软件应用商业模式进行创新。

这次中国开源界的“大地震”,对于中国开发者来说并非仅是坏事,而是加强我们自身技术创新意识,可能后续将会加速中国开源的发展。

正如霍金所说,“科学的整个历史是一个渐进的自我实现的历程,重大的事件不会任意发生,它们反映了一种潜在的次序,而不会简单地产生。”

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图