作者TonyQ (沉默是金。)
看板Soft_Job
标题[闲聊] Open Souce 作为一种态度
时间Sun Apr 10 16:56:24 2011
因为在几万公尺高空上写 example 实在是太无聊了,
所以我决定来写一下上飞机前计画要写的这篇文章。
-----------------------------------
忘记从什麽时候开始,我想是Linux开始出现的时候吧,
正义且免费的 Linux 开源社群挑战邪恶的微软帝国;
Open source ,价格低廉甚至是免费,由众人参与贡献,
所有人都能够参与code review的一个社群,简直是工程师的理想国度。
Open source 这件事对不同的面向有不同的意义,
这篇主要是针对工程师加入 open source project 参与开发的看法。
会说是工程师的理想国度,也是因为竞争的关系,
本来除了自己 team 的人有可能以外,
谁在乎(也谁能在乎)你的code 品质如何?
对工程师而言,扣掉金钱以外还有一个部份是自我满足,
被认同、被使用、被赞赏,是有部份工程师所在乎的。
特别是当你开始接触到往架构师的旅程中,开始需要独立设计大只的东西之後,
会发现能跟你讨论设计的人突然变得少之又少。
你或许开始渴望对等甚至是对方远高於你的讨论、沟通与挑战。
人们於是把希望寄托於 Open Source 社群,
这也就难怪会有人会觉得新手练功到 Open Source 社群最快。
----------------------
但我必须说,其中有部份的想法是值得挑战的。
几件我觉得作open source时需要考虑的,
首先第一件事情,什麽东西需要 Open Source?
目前的 open source project 大多还是偏工具导向,通常是一些函式库或者应用程式。
基本上从你自己新手时期写的 Helloworld ,
到後面认真的作些专案的code都可以 open source,
找个 google code / github 把这些 code 都放上去都是无伤大雅,
但是有些是有用的 source ,有些是没用的 source。
如果你是抱着练功或交流的心态,你必须要作些对其他人来讲有用的东西才算是个开始,
乱枪打鸟也不是不行,不过效果不是好就是,自己也要稍微作点 promote 。
第二件事情,没有人会认真的去把你 open 的 source code 读完,
除非他需要的功能你 code 有bug 或者你没作。
举个例子,Open office ,有人会闲着没事去读他吗?
或者下个例子,Sun 已经 release JDK 的原始码,有多少人去看过他的架构跟程式码?
通常我们会去看程式码只有一个理由,我想自己作一个、
这东西有bug需要被修理或是有需要增加 feature 时。
很少是纯粹观摩的,因为天晓得他写的好不好。XD
换句话说,有需求没被满足的时候,才会有人看你的 code 。重点仍在需求。
有些人说 open source 可以有较多人测试,
我自己就碰过一个例子,曾经有个根本没作只是写好看的 api ,
Release 经过了三四个月几个版本後,才终於有人 report 这个 bug 。
主要仍是这个 API 太冷门了没人去用它,所以才这麽晚被回报,这种情况不算罕见。
第三件事情,Open source project 并不代表 All you can do 。
一般来讲我们看到一个专案有 bug ,自己又有需求,提bug
或是 feature request 是很正常的;
但这种 case 并不代表你一定会被 open source project 接受,
不过通常只要不是太夸张,通常还是会很乐意接受。
事实上有些时候有些 feature request 是跨专案的问题,
这种时候就很难界定是谁该处理。
当然身为一个工程师你可以自己修bug或加功能,
寄回去但人家可能也会评估你的 bug fix 的有效度来决定是否 accept 。
有些人会在 License 允许的前提下开自己的分之,但开分支又有开分支的麻烦,
像是原本的trunk升级,你要跟着升,还是就此脱勾?你要一直跟着 maintain 吗?:)
而且有时候你的 code 是 ditry patch 的话,也有可能被打回票。 XD
这其实也蛮考验专案主持人在维护专案架构的功力。:P
第四件事情:收入、热情、维护。
没有收入,没有时间,没有新的需求新的刺激的话,
一个专案在活动一段时间之後,难免会进入一段可能长可能短的休眠期。
不过这休眠期很难说,有可能因为某些契机就又活过来,
open source 的东西基本上生命力都蛮强悍的。
以我的例子,我去年九月开始用一只 Eclipse plug-in 叫 Run-Jetty-Run ,
他还有蛮多小问题的,但是原开发者决定让它简单就好,
要处理那些所有问题,就叫他们用其他的替代方案。
初板是 2007年,第二大改板是2009 年有新血加入,
而我2011二月时作一些 enhancement 并fork 到自己的 svn 作内部使用,
之後等比较成熟之後就写信给原作者,
提供原码跟 demo 询问是否能接受或愿意让我自己公开分支,
他们就写信告诉我他们现在因为工作环境关系,
已经不常接触 Eclipse 开发,所以希望我也一同加入发布一个新版。
当然我因为那本来就是我工作上会使用到的工具,
加上我那时在国外出差比较闲,所以我也是很乐意的就跳进去帮忙开发。
我跳进去之後数据上清了十几支 Issue ,於是这就很有意思,
第一板2007,第二改版2009,第三次我大改版是2011。
而现在我需要的功能跟我能认同的需求也暂时告一段落,
可能之後有空我会继续弄,也可能一样忙起来就搁在一旁,很难说。
http://code.google.com/p/run-jetty-run/
另一个专案也是2009年就停了,不过我前阵子写信给作者跟提供了 code patch ,
他们决定要让专案复活再解一些问题,目前还在观望中就是了。
(有趣的是他们还特地问我是哪里人 他们两个都是波兰人 (笑))
http://code.google.com/p/eclipserunnerplugin/
-----------------------------------
说了这麽多,我想表达的是 Open Source Project 虽然是人人有门票,
但回过头来还是同一件事,你必须找到你自己想做跟你该做的需求,
并试着说服别人接受你的提案,不管这个别人是使用者或者是 project team member.
Open Source 在开发上主要还是种态度,而不是种方法或者是过程。
没有什麽人是可以为了 open source 而 open source,
我们大多都是为了解决需求且分享需求而 open source。
别掉入名词陷阱,毕竟这世界上的名词陷阱已经够多了。
Open Source 在使用上则是个工具,
好的工程师可以从这些专案里面获得勳章得到技术上的肯定,有好的credit。
好的公司可以从维护/授权或者客制化的需求上获利,
也可以透过 open source 强化自己专案。
好的user可以从善用工具上得到利益。
坏的工程师困在专案外不得其门而入,即使自己开了专案也是没人要用的东西。
坏的user 会发现 open source 并不是想像中的免费,难以找人维护跟难以完全
满足客制的需求,都可能要你付出更多的成本。
It's all up to you.
--
这是在飞机上顺手写写的东西,欢迎论战。XD
--
I am a person, and I am always thinking .
Thinking in love , Thinking in life ,
Thinking in why , Thinking in worth.
I can't believe any of what ,
I am just thinking then thinking ,
but worst of all , most of mine is thinking not actioning...
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 210.229.158.96
※ 编辑: TonyQ 来自: 210.229.158.96 (04/10 17:01)
※ 编辑: TonyQ 来自: 210.229.158.96 (04/10 17:03)
1F:推 ericinttu:看到第一行, 全身不自觉地颤抖起来 XD 04/10 17:05
2F:→ roron:现在最邪恶的不是微软. 是Google, Facebook这些比较邪恶 04/10 17:17
3F:→ roron:一堆人每天都在用Gmail, Youtube, Google Search, Facebook 04/10 17:18
4F:→ roron:不过这些系统的关键部分都没有open source 04/10 17:18
5F:→ TonyQ:我说邪恶微软那只是说笑的啦 XD 04/10 17:20
6F:推 Ting1024:T大这篇文章真棒...让门外的人可以稍微一窥究竟 :D 04/10 17:32
7F:推 lineageorc:感谢T大分享阿 我想T大是说当初的微软吧 哈 04/10 18:05
8F:→ iincho:这个写的还不错啊,实际上要搞这些的门槛就是这样... 04/10 18:24
9F:→ iincho:不过我倒是觉得最後的公司/工程师好与坏的论述上太直接了 04/10 18:25
10F:→ iincho:我的话会说适合/不适合,因为这玩意主要还是需求问题.. 04/10 18:25
11F:→ iincho:而谈到Open Source不谈RMS也是不大应该啦... 04/10 18:29
12F:→ apiod:战标题拼错可以吗XD 04/10 19:48
13F:→ remmurds:二楼少列了Apple 04/10 19:51
14F:→ Zephyr750:二楼没有Apple的原因我想是因为它本来就不是OpenSource 04/10 21:53
15F:推 ripeSelf:推一个罗~ 04/10 22:04
16F:推 appleboy46:只能推了 04/10 22:12
17F:推 walife:高手po文~不给推吗~ 04/10 22:24
18F:推 tsukiyomi:GJ! 04/10 22:41
19F:推 windxcloud:太强了, 要推一下! 04/10 23:02
20F:→ yauhh:所以,曾有人强调"如果没玩open source别说你在练什麽功",这 04/10 23:13
21F:→ yauhh:其实是被一种不open的态度绑死了. 应当恰如其分,既然称open, 04/10 23:14
22F:→ yauhh:态度就是open, with open world assumption. 04/10 23:14
23F:→ TonyQ:@apiod 对耶 感谢指正 这就是open source修bug >///< 04/10 23:27
24F:→ TonyQ:RMS 是?欢迎回文讨论啊XD 04/10 23:53
25F:→ iincho:Richard Stallman啦,最近没什麽时间写文... 04/11 00:07
26F:→ TonyQ:我也有这种困扰 刚回台有好多事情要忙 XD 04/11 00:40
27F:→ TonyQ:我倒是真的没听过,找时间看看。XD 04/11 00:40
28F:推 AmosYang:你这样一解释,开源vs.闭源这场宗教圣战要怎麽继续打?(误) 04/11 03:59
29F:推 Vick753:推一个阿~ 04/11 10:54
30F:推 belion:推 ! :~ 04/11 10:55
31F:推 olctw:RMS是Free Software, OSS != FS 噜 ;) 04/11 13:23
32F:推 CRPKT:这是对开闭源的黑格尔辩证法啊 :3 04/11 22:03
33F:推 easybaby: 04/15 18:28