【Java究竟怎么玩?】

思考因为存在,存在所以思考

原创 国产开源项目的七宗罪收藏

现在国际上软件开源的潮流已经越来越趋明显,几乎可断言成势不可挡。

通常情况下人们之所以会青睐于开源项目,大体就在于开源项目具有以下七大优点:1、安全  2、可靠性/稳定性 3、开放标准和摆脱供应商依赖 4、减少对软件进口的依赖 5、增强自身的软件能力  6、杜绝盗版,遵守知识产权条约和世贸组织规定 7、软件本地化

然而令人万分遗憾的是,与国际上开源社区的火热相比,国内的开源项目就显得有些寂寞冷清,甚至于李开复先生对此都颇有微词。当然形成这一状况的原因是多方面的,并不是一两句就能解释清的。所以在此我抛除社会客观影响不提,单就国人开源人的主观情况作些浅薄至极的“臆测”,取名为《国产开源项目的七宗罪》



1、七宗罪之 —“贪食”(Gluttony):圣经中说:“这些狗贪食,不知饱足。这些牧人不能明白,各人偏行己路,各从各方求自己的利益。

大多数人可能或多或少都有这样的刻板印象,那就是每每认为举凡国产开源项目大多动机不纯,只是把“开源”这面大旗作为谋求自己私利的手段和垫脚石。

譬如某些不入流的空壳公司,把一些无法盈利的旧项目代码重新整合后公开源码,就称其为企业级开源项目;连license都没有规定,就声称自己已经正式开源了。又譬如某些小作坊,号召那么三、四个人,武装七八条“枪”,从网络上搜索些废弃项目的源码,改头换面到连异常都用中文字符显示,就说自己成功组建开源团队了,就可以合情合理的接受分VIP会员及接受募捐了。

诚然搞开源不是那么轻松的事情,吃饭都有问题,谈开源,大家又不都是雷锋——况且即使都是雷锋,也是要吃饭穿衣居家过日子的,没钱当然不行。可问题就在于凡事都有个限度,所谓“过犹不及”,用吃饭举个例子:若你是个170多斤的大小伙子,精力充沛运动又足,一顿连吃几大碗米饭别人也没什么好非议;可如果你是三五岁的娃娃,连咀嚼功能都没发育完全,却偏偏要独吞整桌的满汉全席,眼见绝大多数的食物都会被这娃娃浪费掉,当然会引起旁人的不满与争议。

开源项目也是一样,大多数人反对国人开源项目,并不是仇视国货,而是仇视本就有限的资金被“狗吃了”,加之我们中国又偏偏盛产“汉芯”或“智慧星杀毒软件”、“十进制网络专家”等“神物”,闹得如今我们对国货“哀其不幸,怒其不争”,自然而然的也对所有打着国产开源名义的事物都“另眼看待”,而国人开源项目也不知悔改,依旧我行我素,可惜到现在还是“贪多”却始终“嚼不烂”,说到底还是“贪食”之罪了。


2、七宗罪之 —“贪婪”(Greed):圣经中说:“贪婪就与拜偶像一样。贪婪,就是我们把物质金钱放在最重要的地位上,他所拜的就是物质金钱,这同拜偶像一模一样。”

贪婪从本质上说并不能算是坏事,最多也只能算是人类共有的劣根性。他是人类最基本的几种欲望之一,从某种角度上说,没有贪婪,也就没有人类如今的进步。正是由于渴望更多的占有,渴望更多的利益,人类才会一直进化到如今。如果没有贪婪的欲望,不要说发明计算机,恐怕在现代人类是否掌握了绳结记事都是未知数。

但在很多的国人开源项目中,贪婪的意义却产生了反面作用。例如很多国人开源项目,为了和我们祖国的建设一样“多快好省,又好又快”,大量修改使用其他同类项目的源代码,却又不注明出处,不遵守他人项目的license;就好比《天龙八部》中的神山上人,自身根基不弱,虽然悟性超凡几可与鸠摩智互争短长,但他身为清凉寺主持却不能一心一意发扬本门武学,偏偏要到少林寺去偷学武功,光是如鸠摩智、慕容博等人偷学也倒罢了,好歹也有个“求学之心”,却又非想给武功换个名头、改个外貌,当成自己清凉寺的绝学发扬广大,奠定自己“宗师”的领导地位,那就难免会令人不齿,让人唾弃了。至于生托硬拽代码,连表面功夫都不作就照抄的,更是犹如恒河沙数不胜枚举。

什么是当今国产开源项目所面临的最大挑战?不是国人的非议,不是那些成熟的第三方开源组件,更不是经费不足,而是不尊重知识产权的盗版行为。盗版不利于我们的科技进步,更不利于开源事业的发展,人人都想着不劳而获,人人就都会因贪婪而一无所获。尊重license,可以得到所有人的尊重。因此请注意,如果你要抄袭别人代码,请为他们保留版权说明,搞汉芯还需请个工人帮忙磨商标呢,别什么都是你做的。贪婪虽非大罪,但却要有理有节。

3、七宗罪之 — 懒惰(Sloth):圣经中说:“懒惰使人沉睡;懈怠的人,必受饥饿。”

懒惰,就如同勤劳一样,是每个人或多或少的拥有,却又不会时常体现的品质。中国人虽自古就明白“业精于勤,荒于嬉,行成于思,毁于随”这一浅显的道理,但这几千年来能够遵守的人却凤毛麟角,少之又少。

在开源项目中我们提到懒惰,不是在说lazy机制,对于数据上的滞取可以减少数据库压力,避免不必要的资源浪费,是很有意义的;我们所不满的是很多国人项目的惰性。比如在sourceforge上,其实from china的项目并不是很少,但是,真正能坚持做下去的却是凤毛麟角,很多国人项目往往只是写个开头,发个一两版,甚至只是申请下项目连程序都不发就看不到人了。还有能真正做好文档支持的,更是“上穷碧落下黄泉,两处茫茫皆不见”。

我们大家都需要强化一个概念。所谓开源项目,绝不等同于我们在公司所作的。公司的项目通常是计划式,以直接利益为目的,如果公司破产或业务改变那么项目就可能会取消。而开源项目可就不一定了,很多项目都是由爱好者发起维护的,可人会突然出现,更可能会突然夭折。你要准备好即使你离开,这个项目也会继续,一个项目的发展目的不仅仅是为了你个人,这就需要我们做好多方面的准备工作,仅仅有兴趣,而没有恒心是要不得的,态度上的懒惰是一切开发者的大敌,对于开源项目更是从不例外。懒惰只能体现在编程思想上,而绝不要带到开发过程中。

4、七宗罪之 — 淫欲(Lust):圣经中说:“你们听见有话说,不可奸淫。只是我告诉你们,凡看见妇女就动淫念的,这人心里已经与他犯奸淫了。”

淫欲,用这个词可能有些暧昧,我习惯上更愿意解释为佛洛伊德所说的“力比多”(Libiduo),也就是包含性欲的一切身体器官快感。按照精神分析的理论,人生也本能,而死也本能,生的本能主要就体现在“力比多”之上。

根据佛洛伊德的理论,人有时之所以会压抑不住的想要去自慰、都是在“力比多”的趋势之下的本能反应,是常人都会有的生理行为,并没有什么好丢人的。

但到了很多国人开源项目里,就变成了“假、大、空”的阿Q精神胜利法,变成了“夜郎自大”式的意淫,一会说自己多么的符合MDA,一会又说自己即pragmatic又kickstart,好像天地间所有的好处自己的项目便都占据了,好像世界之所以要发展到今天便只是为了自己出生罢了。实际上,在大多数人眼中这种做法和青春期孩子的频繁手淫没有任何区别,只是在单纯发泄自己的本能欲望,虽说在眼球经济的当下宣传是必不可少的手段之一,但是过度的夸大宣传却只能起到反作用。小孩子什么时候长大了,真的能够“御女无数”时,恐怕便不会到处宣扬自己的“光辉战史”了。一味意淫,宽大自己所谓的“伟大事业”,正是中国开源人需要引以为戒的淫欲之罪。

5、七宗罪之 — 嫉妒(Envy):圣经中说:“凡有的,还要加给他叫他多余。没有的,连他所有的也要夺过来。”

“凡有的,还要加给他叫他多余。没有的,连他所有的也要夺过来。”这句话说得好啊,说出了绝大多数人嫉妒的原因。

相声中解释“抱负”时,说“抱负的含义就在于,谁对我不好,我就‘报复’谁”。嫉妒也同样的,谁有我没有的,我就要嫉妒谁,这就是嫉妒。童话中狐狸说吃不到的葡萄是酸的,王开源先生抗议微软垄断的行为,乃至我写这篇博文,都有可能会被归结为嫉妒。

嫉妒是因为“不具有”,但嫉妒了又能怎么样呢?没本事的,只能在心里默默的怨恨命运的不公,最多和友人发些许牢骚;有些笔耕手段的,便会到处散播不利于自己嫉妒对象的文章,将他所占有的那些彻底抹黑,有机会再趁机捞些好处;若是再有些真\假本领的“高手”,则会干脆一招把自己的对手打倒或吓倒在地,将他的所有彻底盘剥,临走还不忘了给对方加上“废物”、“垃圾”的“商品标识”。

所谓“同行是冤家”,文人相轻,程序员同样也相轻。别人代码错了固然难逃“垃圾”的“美誉”,即使写好了,针对于国产开源项目的现状,也很可能会被看都不看的无厘头般一骂了之,这不只发生在开源项目与程序员大众之间,更有可能发生在开源项目与开源项目之间。例如可能会有这种情况,某A建了个看似很牛X的程序员博客或论坛,某B开源在上面写点什么,若有意或无意的触犯了某A的“大师利益”,竟然有被某A删除封号的危险,这实在是不敢恭维的一种“中国特色”了。我倒不是在说中国程序员怎么样了,而是在强调做人还是客观些好。嫉妒,归根结底只是因为不能满足自己的需要;而满足自己的需要,却不能凭借于嫉妒。

6、七宗罪之 — 愤怒(Wrath):圣经中说:“暴怒的人,必受刑罚,你若救他,必须再救。”

西方文化习惯于个人英雄主义,而个人英雄主义有一个特点就是领导人物容易被一时的好恶所左右,而影响自己的判断与行动。在能够影响决策的几大情绪之中,愤怒显然是占了首位的,不然欧洲也不会流传下“阿基琉斯的愤怒”这句谚语。

诚然我们都不是人神混血的“英雄”,也可能没有阿基琉斯那种为了红颜、为了朋友而冲冠一怒杀敌万骑的勇气及能力。但是“愤怒”却是我们活着的人都经历过和还要继续经历的重要感情因素。也许有人能一辈子都没有爱过,却很少有人能一辈子都没有愤怒过。

让人对任何事情,任何行为都不生气,不动怒是不可能的,但是福音中却说“暴怒的人,必受刑罚,你若救他,必须再救。”,这即是从神格而不是人格的角度在要求人,也是在说明举凡愤怒的行为就一定会有所代价。

对于现阶段的国产开源项目,虽然也偶尔会有褒扬的声音存在,但更多的却是批评与牢骚。这就给愤怒的产生提供了营养液,而这个愤怒来自于两个方面,一是开源项目参与者的,二是对这些项目进行批评者的。

首先,参与开源项目的人会认为自己付出了,自己努力了,却没有人来理解,反而有这么多凉水泼头,那些只会死记硬背API,离开国外第三方组件恨不得就活不下去的人有什么资格说我?他们自己写得了吗?不平、感叹、无奈、悲伤最终将凝聚成开源者的愤怒。

其次,对于大多数程序员来说,并不关心使用什么组件,而更多的是关心使用这套组件的稳定性、安全性、通用性及文档支持等方面乃至公司要求等方面,大多数国人开源项目对他们来说并没有使用的可能性及必要,而且基于团队规模、开发时间及测试程度等多方面原因,国人开源项目的平均水平也确实偏低,为什么就不允许其他人说呢?你们做出这样的垃圾有什么不让人说的资本?我们只是不愿意重复发明轮子罢了,要写的话比你们强得多!专业精神促使很多程序员对国人开源项目失望,这失望直接导致了愤怒。

两股愤怒的交融点,势必形成对抗。但这对抗,却实在是毫无意义的。用什么技术,采取什么框架,说到底也只是程序员内部的事情,最多也就是个“名实之争”,与我们的最终服务对象——用户,根本没有任何瓜葛。这种愤怒,我看还是都少些的好。


7、七宗罪之 — 傲慢(Pride):圣经中说:“傲慢来,羞辱也来;谦卑的人却有智慧。”


古语有云:“生而富者骄,生而贵者傲。生富贵而能不骄傲者,未之有也。”,傲慢来自于态度,更来源于人的社会地位。

在国内,哪怕是科级干部的子女,也会比普通工人家的子女有好的太多的受教育及深造机会。出身,一直以来就是决定中国人一生命运的几大非可逆因素之一。

在开源项目中也同样,比如你是北航计算机本科毕业,可能便会想当然的看不起其他学校的专科生参与的开源项目,而令一个混到中科院软件工程硕士的,也很可能反过来瞧不起你这个本科,那些从海外回游的“海龟”们,大体上恐怕也不能免俗。我们可以发现,很多开源团队都愿意将自己团队较高成员的学历,而不是将做过的项目写在成员简介的第一行,只有在此项不足以炫耀时,才会“顾左右而言他”的用别的什么替代。学历、证书、从业资历等等和开源项目没有直接关系的事物,却成为了影响一个开源项目好坏评价的重要标准。

更有甚者,将第三方框架二次封装,在项目名加上个around、side之类的后缀,便当作多么了不得的成就,得意洋洋的发布出来,就敢自诩老子天下第一,这实在是狂傲的很了。我实不知这类项目应算作什么,若算作自主开发的新项目吧,离开原框架便无法运行,原框架出现什么新特性,改个什么api,他们不改这项目便算彻底over;若算作组件增强包吧,那就是说明原框架还有不足,可他们又不给原项目贡献修改代码,而是一味的扩展自己项目,我就不明白了,难道改进汽车引擎的任务,还比上给汽车后面多装个牛车去推的工作有意义吗?这种工作也算自己所宣称的那么有意义吗?

“虚心使人进步,骄傲使人落后”,人常言而人常忘之。这实在不是还在发展阶段的中国开源人应有的处事态度。


以上,就是我对中国开源项目"七宗罪"的粗劣点评,实难登大雅之堂,仅供诸位看官一笑而已.

发表于 @ 2008年03月07日 17:27:00|评论(loading...)

新一篇: Java来做马里奥[2]—食不厌精 | 旧一篇: Java中的A*(A star)寻径实现

用户操作
[即时聊天] [发私信] [加为好友]
鹏凌三千(cping1982)
订阅我的博客
XML聚合  FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
鹏凌三千(cping1982)的公告
PageRank

本博评论删除规则如下:

1、辱骂性发言,无视其辱骂对象,一律删。

2、登录发表的评论,不违背第一条者一律不删。非登录发表的评论,过激者删。

3、若发生例外情况,则为CSDN博客系统自动删除。

泥巴团队博客联盟成员

声援SOFF|声援珊瑚虫:如果你是珊瑚虫用户,请坚决力挺声援珊瑚虫!

平生进退如飙风,一睨人才天下空。独向苍天横冷剑,何必生我惭英雄。

本人有效BLOG:

在51cto的部落格

在csdn的部落格

在baidu的部落格

音乐:

风姿花传

ドラグ.スレイブ

ヒカルの碁

Believe

世界で一番ヤバイ恋

あんなに一緒だった

焔の扉

深海の孤独

君は仆に似ている

The ugly and beautiful world

静かな夜に

逆蝶

永恒的雪

梅花

几多愁

微风细雨

妈妈的歌

精忠报国

谁是大英雄

随遇而安

明天会吹什么风

逍遥游

爱江山更爱美人

文章分类
收藏
    Java的PC游戏开发
    Java中的A*(A star)寻径实现
    Java仿雷电及其源代码
    Java制作的类祖码游戏-数字祖码
    Java实现窗体中角色逐渐风化效果
    Java版吃豆游戏
    Java版战棋(SLG)游戏AI及寻径处理入门
    人生如梦游戏间,RPG游戏开源开发讲座(JAVA篇)[2]——踏破红尘
    Java[伪]寻径追踪实现
    JAVA中[人工无脑]系统(chatbot)的实现
    Java中2.5D游戏(斜45度角)的设计与实现(1)
    Java中2.5D游戏(斜45度角)的设计与实现(2)
    Java中2.5D游戏的设计与实现(3)—八方走法实现原理及相关代码
    Java中2.5D游戏的设计与实现(3.5)—角色间对话脚本的实现
    Java仿太阁立志传5
    JAVA图形操作中FPS的计算(附带随机生成乱数球体用例)
    JAVA实现拼图游戏
    Java来做马里奥[0]—让精灵再次舞动
    Java来做马里奥[1]—木叶传承
    Java来做马里奥[2]—食不厌精
    Java来做马里奥[3]—杂兵登场
    Java桌面游戏巡礼——Java数独
    Java桌面游戏巡礼——Shade
    Java桌面游戏巡礼——国外Java游戏合集
    Java桌面游戏开发入门示例并源码集合
    Java模拟桌球打击处理及绘制
    Java汉诺塔测试
    Java游戏中延迟下载资源及调用示例
    Java游戏开发中应始终坚持的10项基本原则
    Java游戏开发中怎样才能获得更快的FPS?
    Java炸弹人实现及源码
    Java版AVG游戏开发入门[0]——游戏模式转换中的事件交互
    Java版AVG游戏开发入门[1]——CG的绘制
    Java版AVG游戏开发入门示例[3]——脚本引擎的制作及应用
    Java版SLG游戏开发入门[0]--让绘制的窗口响应鼠标事件
    Java版SLG游戏开发入门[1]--关于本系列
    Java版SLG游戏开发入门[2]--数据的读取及保存
    Java版推箱子(搬箱子)游戏开发入门示例及源码
    Java版桌面战棋游戏TLOH(The Legend of Heroes)开发预告
    人生如梦游戏间,JAVA游戏开源开发讲座[番外篇]之AVG开发——皮影
    人生如梦游戏间,RPG游戏开源开发讲座(JAVA篇)[0]——月晕础润
    人生如梦游戏间,RPG游戏开源开发讲座(JAVA篇)[1]——风云初现
    人生如梦游戏间,RPG游戏开源开发讲座(JAVA篇)[3]——邯郸学步
    人生如梦游戏间,RPG游戏开源开发讲座(JAVA篇)[4]——一步莲华
    人生如梦游戏间,RPG游戏开源开发讲座(JAVA篇)[5]——一树双花
    人生如梦游戏间,RPG游戏开源开发讲座(JAVA篇)[6]——走马观花
    史上最扯Java图形绘制(J2SE)之一JAVA动画效果
    沉寂的国人开源项目
    bo-blog(blog系统,php项目)
    DockPanel Suite [Microsoft .NET Framework Winform UI]
    Hocate web framework[web框架]
    Loonframework-DAO[持久层框架]
    Loonframework-GAME[游戏框架,尚未发布]
    Loonframework-WEB[web框架,尚未发布]
    Luntbuild(软件管理工具)
    magike(php博客)
    myseelite(p2p流媒体系统,c++项目)
    newxy(新坐标)[web框架]
    opencrx(crm系统)
    redlion(web框架)
    x2blog(asp.net博客系统)
    YOYOPlayer(音乐播放器)
    袋鼠egg(服务器)
    经典Blog
    # gzfqh的专栏 →底层代码研究(病毒及汇编)(RSS)
    # java 3D 游戏编程(RSS)
    ApoGames(德国某人的Java游戏作品展示)
    Peigen的个人blog(RSS)
    Struts框架应用
    Struts框架应用~
    千里冰封[JAVA 浓香四溢]
    枕善居,国内知名的VB及VB.NET资源博客
    爱枣报
    王大夫的颈椎病治疗博客
    网络安全圈子
    经典站点
    Google
    IBM中国站
    java2s
    JavaGame开发论坛
    JAVA开源大全
    Java爱好者
    Struts标签文档
    SUN
    SUN 中国社区
    一个海量的JSF资料聚合站
    中国IT实验室
    区域黑客,每天公布各国被黑的网站
    提供JSP,Servlets,Struts以及JSF等技术支持
    数据库专区
    看雪软件安全论坛
    知名的Java开源项目集合站
    黑客手册技术论坛
    偶的其它应用实例
    C#将图像文件压缩为AVI文件播放
    Java&.Net虚拟机精简(GreenJVM&GreenDotNet发布)
    Java图形程序水纹倒映效果
    Java输出竖排古典文字
    .NET在线漫画下载程序
    C#转换AVI文件为BMP文件
    ClassLoader调用外部jar包
    ExtJS2.0开发与实践笔记[0]——初识ExtJS
    ExtJS2.0开发与实践笔记[1]——ExtJS中的Dialog与Form
    ExtJS2.0开发与实践笔记[2]——Ext中的Layout
    ExtJS2.0开发与实践笔记[3]——Ext中的Menu
    ExtJS2.0开发与实践笔记[4]——Ext中的动画处理
    JavaFx实现(1)-渐变效果
    JavaFx实现(2)-随机图形绘制
    JavaStore(Java网络商店)初体验[封测申请已通过]
    Java中DAO的实现
    Java中Image翻转操作
    Java中将byte[]转为Blob对象
    Java中的A*(A star)寻径实现
    Java制作绿色软件(GreenJVM_0.1.0发布)
    JAVA图形操作类
    Java图形程序中的对话逐字显示实现
    Java实现任意文件在bmp中的隐藏与导出
    JAVA实现可设置背景的MDI窗口
    Java实现嵌入式数据库(文本数据库)代码实例
    Java实现类Windows导航栏
    Java嵌入式数据库LMini-0.1.2及其通讯录使用示例发布
    Java嵌入式数据库LMini-0.1.2及其通讯录使用示例发布
    Java正则表达式入门
    Java汇编类库LocalOS-0.1.1发布(内附本程序源码及Java版网游找CALL示例源码)
    JAVA版JAVA IDE环境(源码)
    Java版PageRank及网站收录情况查询代码
    JAVA线程池的简单实现及优先级设置
    Java自定义JSlider UI
    Java获得系统环境变量
    Java音乐播放类
    Loonframework-Inversion of Control(简称LIoC)-0.1.0版发布
    Loonframework-Inversion of Control(简称LIoC)-0.1.0版发布
    ResultSet转为实体对象
    SWT行,AWT/Swing也行系列(1)-实现半透明及不规则窗体
    在JTable中加载进度条及进行操作
    在Swing中使用Html标签
    在SWT中使用ChartDirector
    浅谈java.util.concurrent包的并发处理
    浅谈Java集合中Array(数组)的应用
    精简JRE体积
    通过exe启动class
    偶的文章
    《三国以后有几国》
    Java游戏开发中应始终坚持的10项基本原则
    中国本土化编程(汉语编程)之我见
    为大众而写的程序员小说——从《简单易懂的现代魔法》说开去
    从珊瑚虫事件,看为什么中国出不了比尔.盖茨
    佛与专家
    别争了!原来微点遭遇的是自然灾害!
    叹今人无气节而作歌
    国产开源项目的七宗罪
    对Hibernate使用之愚见
    对Java(J2SE PC)开发之怪现象之我见
    微点。赢乎?输耶?
    打油诗——我的梦想(御宅族之梦)
    浅论绿坝的[四大优点]
    浅谈命名规范[纯属强辩]
    消费者反映鸡蛋难吃后的37种回答方法
    灭了珊瑚虫,下一个是谁?
    率性而作无题歌一首
    百度对“十进制网络”的官方态度
    绿藻绕坝水冲去,无题文章风吹来
    耻民
    论番茄花园的倒掉
    存档
    Csdn Blog version 3.1a
    Copyright © 鹏凌三千(cping1982)