关于开源

2014-12-19 18:01:23 +08:00
 greatdk
昨天在Github放了我的第一个开源项目,当然也在V2EX上面贴了上来( /t/154848 )(很高兴得到很多V友的支持)

晚上的时候,你们知道晚上一般是人文思情趣比较高的时候,我又写了一篇文章,叫做《漫谈Github与开源》,地址在这: http://www.wdk.pw/802.html

今天下午发现这篇文章被CSDN的一个微博转载了,然后很多程序员也转载了,不过却基本上都在喷我,轻点的说我太年轻太幼稚了,喷的重的直接说我读书脑子读坏了。

http://susefood.u.qiniudn.com/weibo1.jpg

http://susefood.u.qiniudn.com/weibo2.jpg

http://susefood.u.qiniudn.com/weibo3.jpg

我承认我很菜,对开源的理解也不深刻,昨晚上纯属一时兴起写的文章,可能的确有不少错误。我想在这里问问,关于开源大家到底是怎么想的?我不是质疑微博上的大神喷的不对啊,我就是纯好奇大家怎么想,还有新手应该怎么看待开源?
6785 次点击
所在节点    随想
56 条回复
twl007
2014-12-20 18:53:06 +08:00
我觉得楼主把开源跟自由软件混淆了 开元不意味着自由 商业软件也有开源的 但不意味着你能无条件的使用开源代码 这也是为什么会有这么多开元协议的原因

而且你说商业公司闭源说的过分了 Linux代码贡献最多的是RedHat MS也在某一年排进了Linux源代码贡献前三 Apple更是贡献了一堆开源项目 Mysql实际是商业软件 我觉得楼主对这些都不清楚

能自有拿来代码无条件使用的叫自由软件 跟开源是两个概念

再有开发开源软件的就不需要吃饭养家糊口么 图样图破森 闭源商业软件才是推动技术前进的动力而不是开源 开元只是让大家可以更好的分享软件 但是分享源代码并不意味着分享优秀的源代码 如果没有RedHat在商业上的成功Linux能否保持现有发展我对此持保留态度 没有商业上的成功Linux未必会有现在的高度 是成熟的商业应用养活了Linux而不是Linux养活了他们

还有楼上说的QUAKE的例子 请注意年代 那年代的计算机性能只有现在百分之一
FrankHB
2014-12-21 02:54:02 +08:00
@happywowwow 首先澄清一下,之前在此并没有顺着LZ的口径来讲闭源和开源的影响对比,而是要说单论体现“生产力”这个方面而言,哪种形式更容易体现得充分。目的上讲,就是哪种策略更容易完善地满足用户需求。
要说影响力是不是大,我也不认为能一概而论。这是跟领域以及软件自身被利用的形态相关的。
优秀的、影响大的软件当然不一定就是开源的。软件的许多创意往往根本不需要源码来体现,直接可以借鉴(只知道抄或是抄不好另说)。特别地,对于游戏,源码的质量往往就只能决定游戏品质的一小部分。
但是,并不是所有软件的优点都容易被其它开发者吸收或者启发出新的、更好满足用户需求的想法——比如说,性能。你引用的例子在不开源时就不怎么容易让多数/最需要的用户用到更好的东西。
如果实现质量是同等的,那么提供使用源码的自由显然比不得不重复造轮子更加容易实现,对行业来讲长期看也有利于缩减成本;或者,你可以说屈从于垄断的实现对于大部分用户也够用了所以连轮子都不需要重新造——但这毕竟对其余用户不公平,而且事实上也没人能阻止。
至于某个领域的开源或者闭源的软件实现质量是不是一定就高,以及为什么市场没有倾向于开源的实体,那是另外的问题了。
更快……能看看测试代码么。
FrankHB
2014-12-21 03:05:16 +08:00
@raincious 请不要正儿八经地误导。
LZ显然是想要“开源”,并且LZ说的“开源”看来就是想和别人说的一样,参与的某些“开源”常见的活动(比如fork),而不是他自己发明了什么新的概念或者就仅仅指把源代码给人看。而且LZ看上去认为自己已经完成了“开源”。于是这里本来也没有什么开源和不开源的中间态,只是因为理解上有偏差,行动上就是没有做到。在这个基础上评论开源未免有些那啥了,所以这点就被人吐槽。
FrankHB
2014-12-21 03:13:55 +08:00
@twl007 开源经常有不少养家糊口的目的论成分不假,但要说“闭源商业软件才是推动技术前进的动力”显然不符合事实——越是基础的东西往往就越体现这点,比如LLVM。

另外你比LZ搞错了更多的东西。
“能自有拿来代码无条件使用的叫自由软件 跟开源是两个概念 ”——自由软件跟开源的确是两个概念,但自由软件并不是“拿来代码无条件用”。恰恰相反,按被广泛接受的定义,开源软件的外延更大,有些人同时认为自由软件是开源软件的一种(尽管渊源上不能这么说)。而要接受RMS的观点把自由软件独立在开源之外,那么问题更明显:以GPL许可证授权为代表的自由软件通常比其它开源软件的限制明显更大。真正意义上“能拿来无条件用”(注意一般意义的“用”可以理解为包括derivative work)的,看来就只有公有领域作品(或者实质等价的授权如CC0,不过似乎我朝不方便这样做)了。
twl007
2014-12-21 09:58:16 +08:00
@FrankHB "闭源商业软件才是推动技术前进的动力"我想表达的准确意思应该是"开发闭源商业软件的公司才是推动技术前进的动力" 比如Hadoop是源自于google自己开发出的内部系统 Unix也是贝尔实验室开发出来的 LLVM现在背后的支持者是Apple 有了这些商业公司的推动才更好的带动了开源领域的发展

对于GPL以前曾经看过一篇采访 问Linus为什么要用GPL这么蛋疼的协议(不满的人很多) Linus解释说是为了保证开源可以持续下去

我承认表述有问题 我自己也罢自由跟无条件混淆了 我意识里无条件 = 随意获取代码、自己修改和分发
- - |||| 自由更多是一种权利 享受权利的同时也要承担起一定的义务

https://www.gnu.org/philosophy/free-sw.zh-cn.html

此链接是官方对于自由软件的定义 为什么自由跟开源是不同的

其实对GPL吐槽最多的还是打算拿来用在商业用途的吧

PS 我很好奇楼主打算使用社么协议
@greatdk
abscon
2014-12-21 15:09:42 +08:00
@twl007 那么现在问题就来了,Linux为何迟迟不肯把许可证升级到 GPLv3?
twl007
2014-12-21 20:16:03 +08:00
@abscon

引用:
根据GPL v2的相关规定:只要这种修改文本在整体上或者其某个部分来源于遵循GPL的程序,该修改文本的整体就必须按照GPL流通,不仅该修改文本的源码必须向社 会公开,而且对于这种修改文本的流通不准许附加修改者自己作出的限制。而在GPL v3的修订草案中,不仅要求用户公布修改的源代码,还要求公布相关硬件,恰恰是这一条,由于触及和其他相关数字版权管理(DRM)及其产品的关系,并且也 由于有和开源精神相违的地方,所以备受争议,甚至因此也遭到了有着“LINUX之父”之称的托瓦尔兹的反对。

http://www.open-open.com/bbs/view/1319816219625
abscon
2014-12-21 22:09:22 +08:00
@twl007 由此可以看出GNU之父和Linux之父在开源许可证上并没有达成一致。GNU之父认为GPLv2有个大漏洞必须用v3补上,而Linus出于某种考虑(请读者仔细思考)不准备跟进。那么现在问题就来了:

那些推崇GPL,并且推崇GNU/Linux的人,这两个“之父”的理念/做法,哪个是更合适的?如果这两位领军人物在GPL许可证上都没有达成一致的话,是否暗示着其实GPL也不是那么天经地义?

做为一个程序员,在开源自己的作品时是否“默认”就该选择GPL?对了,你有自己喜欢/常用的语言/库么?了解过它们都是在什么许可证下发布的么?结果可能出乎你的意料。
FrankHB
2014-12-21 22:55:21 +08:00
@twl007 我认为你还是有些误会。要我说的话,推动技术前进的主要动力是会投入资源的用户——没有需求没有投入当然不能指望什么有多少改变了。只是在许多项目里提供主要资源、能主导项目的用户恰巧是商业公司而已。这不表示其他用户就不会投入资源来推动进步。比如说,一些大学和非营利机构都有动机和实力扮演这个角色。

Linus本人对copyleft的意见其实也不算很激进(他还反对GPLv3管得太宽了),大概就是认为市集比大教堂更好而已。而像Linux内核和Git这样的项目,事实证明这样也没多大问题。对GPL的吐槽主要在于这么几点;
1.兼容性。Apache和GPLv2啊,GPLv2和GPLv3啊。
2.FSF过于强大的控制。GPL里自己定义了不少的概念,理解有偏差时还得找FSF,通俗点说FSF在一定意义上有“最终解释权”。如果说“自由”的定义可以因为先入为主而被忍受的话,更多人恐怕不能完全放任对许可证的解释。
3.目的。显然并不是所有人对RMS的观点买账。反对意识形态入侵(讽刺地,恰恰是通过限制他人“自由”行使权利的做法来有效保证)的人大有人在。

至于商业用途其实很正常,例如Rad Hat。认为GPL反对商业这点——也算是个流行误会——才更值得吐槽。事实是,只要被授权者满足了GPL规定的义务,GPL本身并不禁止商业使用。当然,许可证兼容可能是个麻烦事,但这也是另一回事。
FrankHB
2014-12-21 23:05:17 +08:00
@abscon 关于Linus反对在具体项目中改用GPLv3,应该有这么两个主要原因:
1.他自己对GPLv3不买账。
2.他主导的项目有数量庞大的贡献者,绝大多数部分的copyright owner都不是他本人。已经使用GPLv2发布的东西自身是不允许随便relicense的,没有事先另行许可他得联络所有把所有要发布的材料相关权利人,他无权更换许可证。只有所有人都同意才行——这在现实中操作难度很大(另一方面,也可以作为拒绝更换许可证的托词,比如mercurial),因此不可行。
后面这点往往是更多项目会遇到的实际问题。对于GPL,解决相对简单,如一开始就使用:GPLv2 “or later”。(副作用是这也让FSF有了更大的控制权,不过对于GPL用户,大多数人恐怕不在乎。)否则,要么使用允许relicense的许可证,要么让每个贡献者事先签订其它附加许可。
raincious
2014-12-23 13:28:46 +08:00
@FrankHB

0、请指出让你理解出“而不是他自己发明了什么新的概念或者就仅仅指把源代码给人看”的具体段落。或说明是你理解错了。

没错,我37楼是在抬杠来着,但是你这回复让别人摸不着头脑啊。
FrankHB
2014-12-24 15:50:44 +08:00
@raincious
我不打算指出具体段落,也不认为我的理解有问题,因为这是应用排中律得到的简单结论。
不过,看来你并不认为这样的理解没有问题。那么,你认为:
1.题主发明了不同于其他人所说的“开源”的概念;或
2.题主仅仅想要把源代码给人看。
以下分别讨论。
1.恐怕只有你才能举出“具体段落”来证实了。在我看来,全文都没有支持这个观点——连动机我都没找到,更别说是不是已经完成了。
2.原文的第一段即已说明题主在乎的不仅仅是给人看源码,至少还会关心形式。文章很大篇幅都提及Git和GitHub,也体现了这一点不能成立。
因为没有找到论据支持1和2,所以证实了“1或2”的否命题,也就是你有疑问的理解的合理性。
Q.E.D.
希望能对远离“摸不着头脑”有点帮助。
raincious
2014-12-24 16:46:27 +08:00
@FrankHB

请明确指出让你产生“题主发明了不同于其他人所说的“开源”的概念”这一认知的具体段落。

根据哪怕是基本的法律原则,也有“谁主张谁举证”的准则。而这贴没有任何例外情况,所以你需要举证。

当然如果你无法举证,否则你需要承认:

1、你上述回复的表达只是你脑中形成的意念,而不是事实;且(/或):
2、你在没有清楚认知问题的情况下进行了非常不严谨的归类和回复,并造成了后续问题。

=================================

我51楼的回复给你留下了巨大的空间:

1、如果你发现我有问题,指出问题,我们可以继续讨论,然后修正我的观点;
2、如果你确认是你看错了,作为非原则问题,只要说明就可以。

但是介于你既不愿指出具体的语句(我这里已经推测是你根本找不到,因为这不是我的观点),也不愿承认你的观察和理解有问题,但仍然不愿放弃追究你认为(臆测)我有如“题主发明了不同于其他人所说的“开源”的概念”或类似认知,我只能说:

=================================

关于开源软件和协议,其实没有一个“开源软件协议”,有的只是“被许可的开源软件协议”。如何这些: http://opensource.org/osd-annotated 条件的软件就是开源软件,无需强制必须使用一份“被许可的开源软件协议”。

只是“被许可的开源软件协议”已经有了很高的“熟知”成都,且法律等很多方面已经得到巩固,所以被建议使用。

但“建议使用”(RECOMMENDED)和“强制使用”(MUST)是有很大区别的。
FrankHB
2014-12-25 09:34:12 +08:00
@raincious 所以说你想什么样的回复呢。
总之我还是更认真一点把意思说清楚吧。不过仍然还是从你的回复开始。

> 根据哪怕是基本的法律原则,也有“谁主张谁举证”的准则。而这贴没有任何例外情况,所以你需要举证。
1.法律原则适用范围?
2.为什么“没有例外”情况是要求举证的原因?

闲话少叙。关于找到论据来支持我的看法这点我很能理解,所以并不反对。但是请注意我之前说的是不打算指明“具体段落”;进一步地,我已经表示原文通篇能自然地支持我的理解(因此其实没有纠结具体段落这个必要)。

你似乎没有注意到,“无法举证”和无法指明具体段落显然是两回事。于是你下面的几点的前提就不成立了,也就没有澄清的必要。不过,我可以暂且搁置这个问题——即便如此你要求我承认的东西仍然有些问题,我无法清楚地理解。

> 我上述回复的表达只是你脑中形成的观念,而不是事实;且(/或):
主语先不论——和问题没多大关系。我不否认区分清楚讨论内容中的“观念”和“事实”在是自然的,也有一定的必要性,但没有预设条件(比如说,回复内有明确指出)下默认某些回复必须只能是观念或者是事实,就有些奇怪了。

> 你在没有清楚认知问题的情况下进行了非常不严谨的归类和回复,并造成了后续问题。
先不论清楚认知的是哪几个具体问题以及如何来确定是否认知得足够充分而能使回复不造成后续问题——不严谨的“归类”在哪?你指的被“归类”的是什么?

> 如果你发现我有问题,指出问题,我们可以继续讨论,然后修正我的观点;
我理解的问题是你看到我先前的回复“摸不着头脑”,所以我补充了理由。这应该足够明确了。
或者说,你仍然认为我(实际上,在我之前先是36楼)指出的“误导”(“源代码开放就是开源软件。你说的那是自由软件”)的依据至此仍然不充分?
至于修正观点与否对我相对无关紧要,我更关心“讨论者是否已经确认关于某个主题/概念有共识”,或者“在说同一回事”而不是鸡同鸭讲这件事。

> 如果你确认是你看错了,作为非原则问题,只要说明就可以。
我暂时没有确认我看错了什么。如果你认为我可能看错了什么,请提示具体内容。

接下来紧接的一些内容,我基本同意你的观点。更确切地,我同意不存在公认的唯一定义“开源软件”的许可。也因为这样,关于开源指的是什么的问题,之前我说的是“可以参照”(这并没有法律在管辖中的权威性),而不是“规定”之类。
不过,基于一般的法律(应该适用于题主和这里几乎所有人)的原因,没有给出明确许可的情况下,不符合这里列明的条件,据此我也不认为符合通常所说的“开源”的含义。这一点虽然细碎,但我认为和理解什么是“开源”至少同等重要(实际上根本不限于“开源”)。若对此你有异议请指出,欢迎继续讨论。
raincious
2014-12-25 10:43:24 +08:00
@FrankHB

Interesting.

1、我没回你的帖子;
2、Source Code Open is Open Source Code;#34给的是Free_software,参考1;
3、#37是指出#36关于给不给Fork的问题,参考1;(满不满意是另一回事,我自己都不满意,所以建议楼主给一份法律协议)
4、建议你回帖的时候先观察下上下文,否则吧别人AT过来给(在你没弄清的前提下)你解释会浪费别人的点数。
FrankHB
2014-12-26 06:19:50 +08:00
@raincious
1.和这里说的有关系么。
2.Open source code is NOT Open Source. 何况我不认为你说的林林总总就都能算得上Source Code Open。
3.也许我知道关键问题了。我看到一般讨论(包括#36)的以及我默认的“开源”必须是合法行为,但你不承认这个前提。(基于上面的法律原因,#36引用到的lisenced实质上就是为了保证合法。)于是我仍然不同意你#37的观点,并且据此认定你是误导。顺便,误导也包括所谓的“不影响作为“口头授权”的效力”——仍然作为法律常识:要约不是授权(姑且认为题主是有明确要约过了)。
4.是否花费点数是各人的自由。PS.要节约点数,可以压缩一下行文。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/155184

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX