昨天公司说要做一个工作流程控制系统,经朋友建议,尝试使用禅道进行管理,自己试用了下,感觉非常不错。下午看朋友发的关于禅道和bugfree的恩恩怨怨,更加佩服禅道的项目主管。

原文链接:http://wangchunsheng.com/article-view-79056.html

这些话,在肚子里面憋了很久,说给自己听,也是说给hero听,也是说给大家听,是非曲直,恩恩怨怨,大家自由评说。

去年的时候,hero找我聊天,聊了很多。hero说了一句话,让我泪流满面,是委屈的流泪。hero说,你不应该放弃你的bugfree团队。我当时对hero说,我没有放弃我的bugfree的团队,只是有很多话,我现在还不能讲。

今天终于可以说说了。我并没有放弃bugfree的团队,是被排挤出了的bugfree团队!

时间要倒退到2004年,在西线工作的时候。那个时候,liu刚从微软出来,到西线创业。为了配合他的管理需要,我开发了bugfree最初的原型。一开始就是在公司内部使用,叫做bugtracker之类的名称。后来有一天说,咱们把它开源吧。liu听了之后很是兴奋,然后他说服公司,bugfree就正式开源了。最开始不叫做bugfree,叫做freebug。

很快liu去了一家做手机sp的公司。bugfree的后续版本的开发和维护,liu就没有再参与。2005年4月,我从西线辞职,开始自己的第一次创业。很幸运当时认识了手机之家的朋友们,老高帮我解决了服务器的问题。自己注册了bugfree.cn的域名,开始bugfree后续版本的开发。这时易软开源组织也正式成立。很快bugfree发布到了1.0正式版本。

之后,家中变故,父亲生病,我回老家照顾。第一次创业就此搁浅。06年上半年再次回到北京,在手机之家开发了ecshop1.0版本。这时liu和我联系,说他去了yahoo,推荐我也去yahoo工作。

于是开始了我的三年alibaba的工作生活。因为我和liu的特殊关系,两人走得很近。很多时候两个人下班也是一起回,因为住的都比较进。后来提议说,我们是不是可以把bugfree重新做起来。这个时候,bugfree上一个版本的更新已经是一年前的事情了。这时yupeng也加入了进来,很快发布了1.1版本,这是一个很小的bug fix版本,旨在让大家知道bugfree项目还没有结束。

这时大家开始筹划2.0版本。前后若干次讨论之后,最终确定了2.0第一个版本的功能。我完成了数据库设计和程序的框架设计之后,提出由yupeng来主导开发。主要想bugfree可以多一个人了解代码。

时间很快到了2007年的夏天,事情发生了很多的变化。我开始觉得liu不是以前的liu了,没有以前那么的率直,缺少了技术人员很多好的东西,增加了很多城府的东西。很多同事在谈论liu的办公室政治,政治手腕。另外一个liu的加入,让事情发生了很多的变化。淘宝的很多同事后来戏称微软二刘。liu2的加入,否定了原来bugfree2中的很多设计。这时候liu意见更倾向于liu2的看法。分歧开始增加。

这个时候发生了好几件事情,促使我做了一个决定。原来bugfree的域名一直是用的bugfree.cn。后来liu1自己注册了bugfree.org.cn,也是在我的服务器上面,我给他开了帐号。但有一天,他并没有经过我的同意,就将bugfree.cn的域名全部指向到了bugfree.org.cn。再加上这段时间,二刘已经忽略我的存在。我曾多次听到liu在电话中得意的跟别人讲,bugfree是他做的等等云云。在他的词汇中,从来没有出现过“我们”这两个词。

累,身心俱疲!我选择了放手,就提出你们去做bugfree2吧,我不再参与bugfree2的开发。大家可以看当时的这篇声明。http://blog.1zsoft.com/node469.html

2007年9月30日,这一天我告诉自己,我一定要做一个东西,为了争一口气,为了让用户用到真正好用的管理工具!

从这一天起,我告诉自己,要堂堂正正的做一个开源软件,而不是做盗窃者。微软二刘在liu2还在微软工作的时候,通过屏幕拷贝的方式将product studio的操作录制了下来,作为bugfree2的原型。现在想想,我也深为自己看到了这些东西而愧疚。

然后后面发生了一系列的事情。我在sourceforge上面bugfree的帐号被取消了管理员权限。然后过了一段时间,我的帐号被删除。这一切都没有人跟我打招呼。然后有一次在杭州,liu出差,找我吃饭,说,你能不能把bugfree.cn的域名送给他。遭到了我的断然拒绝。

然后是我在阿里巴巴工作时,开发了自动化测试框架mmt,并设计了bugfree2的api。然后不久这个api就出现在了对外发布的版本中,并被大肆宣扬。然后就是liu将bugfree的授权改为了apache,这是严重侵权的事情。bugfree最开始的授权是GPL。而我作为主要的代码开发者,享有者主要的版权。但liu没有经过我的同意就擅自更改其授权,这是非常不道德的事情。

总结下来,在和liu合作的这么多年中,总算是认清楚了一个人,也深深的体会到了一个教训,和某些个地方的人打交道,一定要小心。

2010年5月3日,禅道1.0正式版发布,我正式对外宣布BugFree结束。我终于也可以回答hero的问题,我没有放弃bugfree的团队!

禅道和bugfree相比,我们要做:

开放的开源软件。bugfree的团队一直很封闭,都是liu可以控制的人。liu2,我,还有yupeng,还有后来的lijun,都是刘的下属。这种的团队是很不正常的。
干干净净的开源软件。bugfree在开发过程中,抄袭了微软内部管理工具的很多东西,违法,也不道德。
没有版权争议的开源软件。bugfree2现在的代码存在很多的问题,首先我是不认同apache的授权的,并保留相关的权利。其次,liu没有经过公司的同意,将在公司内部改动的很多代码拿出来开源,是违法的事情。
有技术保证的开源软件。liu口口声声说bugfree是他做的,但他从来没有写过代码,从来没有做过技术方面的支持。这算是什么开源软件呢?
与时俱进的开源软件。liu整天在阿里巴巴内部推销bugfree,似乎bugfree就是灵丹妙药。岂不知现在的企业对项目管理越来越重视,单独的缺陷管理已经满足不了需要。今天看到所谓的bugfree官网上面的回复,我们要专注测试领域,不知道禅道是做什么的,只能是哑然失笑,人啊,固化了,真可怕。

liu,帮助过我很多,我感激,记在心里。
liu,之前的你很好,现在的你很不好,简简单单的活回自己,想想你的技术梦想,想想嫂子和yuanyuan。不要再为了那些名利的事情争权夺利。善待你的朋友,不要把他们当成你的棋子,更不想当成保帅丢掉的棋子……

发完这篇帖子,从此不再谈论bugfree,专心做我的禅道!这是对自己的一个承诺,也是对我的团队的一个承诺,也是对广大禅道用户的承诺!说得再多也没有用,Just do it!

转:关于bugfree的一些不得不说的事的更多相关文章

  1. Azure 进阶攻略 | 关于Java 和事件中心的那不得不说的事

    物联网技术辣么火,虽然之前有说过不少,但今天,仍有一个憋在我心里已久,不得不说的话题:基于Azure 的物联网平台必不可少,你可能已经在使用,但也许并没有意识到的服务:Azure 事件中心. 啊?事件 ...

  2. 转:Python 与 Excel 不得不说的事

    数据处理是 Python 的一大应用场景,而 Excel 则是最流行的数据处理软件.因此用 Python 进行数据相关的工作时,难免要和 Excel 打交道. 如果仅仅是要以表单形式保存数据,可以借助 ...

  3. 关于我和document.write那点不得不说的事

    一直用document.write()方法向浏览器中显示数据用,把它当做Alert()使用, 看来这样用有些大材小用了,下面说说它的主要用处. document.write()方法可以用在两个方面: ...

  4. WebView·开发指南

    WebView·开车指南 作者:凌俊琦链接:https://zhuanlan.zhihu.com/p/22247021来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. T ...

  5. [源码]String StringBuffer StringBudlider(1String部分)

      String     /** The value is used for character storage. */     private final char value[];  /** Th ...

  6. EF框架step by step(3)—Code-First

    CodeFirst是EF框架的第三种方式,也是最为复杂一种方式,本文将以EF4.1版本为基础,简要讲解一下用法,同时,也介绍DbContext的用法. 本文采用的示例仍然是前两篇采用的博客用户的示例. ...

  7. package、import、java及javac的相关介绍(转)

    Package: package中所存放的文件 所有文件,不过一般分一下就分这三种 1.java程序源文件,扩展名为.java: 2.编译好的java类文件,扩展名为.class: 3.其他文件,也称 ...

  8. Web APi之认证

    Web APi之认证(Authentication)两种实现方式后续[三](十五)   前言 之前一直在找工作中,过程也是令人着实的心塞,最后还是稳定了下来,博客也停止更新快一个月了,学如逆水行舟,不 ...

  9. 前端向后台的华丽转身 — PHP入门篇

    三个月就这么悄悄溜走了,本K对于前端虽然有了一定的认识,但对一些方面还是处于一种比较萌币的状态,就在这种萌币状态下,本K又跟着大神浩开始了后台语言-PHP语言的学习.PHP的学习对于学过其他语言的人来 ...

随机推荐

  1. UVA 11374 Airport Express (最短路)

    题目只有一条路径会发生改变. 常见的思路,预处理出S和T的两个单源最短路,然后枚举商业线,商业线两端一定是选择到s和t的最短路. 路径输出可以在求最短路的同时保存pa数组得到一棵最短路树,也可以用di ...

  2. C++判断两个double类型双精度浮点数是否同号

    看到的一种整数的方法 != y < ) 由此, double x,y; == fabs( ) { } 目前想到的比较合适判断方法. 此外这里还有一种强制转换类型求符号位的方法. /** * Ge ...

  3. insert size|single-read|Paired-end|Mate-pair

    (测序方面):测三只大熊猫:得到的insert size有150bp,500bp,2kb,5kb和10kb这四种,可测得序列长度和平均reads长度. 为什么average reads这么短? 因为i ...

  4. HTML5基础知识习题 一

    1. HTML5 之前的 HTML 版本是什么? 答: HTML 4.01 2. HTML5 的正确 doctype 是? 答: <!DOCTYPE html> 3. 在 HTML5 中, ...

  5. 随机生成一份试卷,试卷的种类分为单选、多选、判断三种题型。nodejs6.0 mysql

    背景:从数据库中,随机生成一份试卷,试卷的种类分为单选.多选.判断三种题型. 首先我需要生成随机数id(在这之前我需要知道数据库中各个题型的题数,这样我才能设置随机数),并依据生成的随机数id,去查找 ...

  6. ECMAScript5 [].reduce()

    ECMAScript 5 的2个归并数组的方法,reduce() reduceRight() 两个方法都会迭代数组的所有项,然后构建一个最终返回的值. 两个参数:   1.函数,一个在每一项上调用的函 ...

  7. Luogu P3727 曼哈顿计划E 点分治+hash

    题目: P3727曼哈顿计划E 分析: 大长题面容易给人一种不可做的错觉,但是这题考的知识点都是我们熟悉的. 稍加分析我们可以得到,我们可以把每个点当成一个单独的游戏,如果k=1,就是简单的nim游戏 ...

  8. windows2012安装sql2012报错

    一. 处理

  9. 1、初学探讨PYTHON的itchat和wxpy两库

    最近好奇学习了python,觉得简单明了,但是最头疼的就是调整空格和调试吧,的确调试不如C#使用visual studio 方便,都是使用print()来调试.也许因为我是菜鸟,如果大家还有更好的方法 ...

  10. LeetCode(113) Path Sum II

    题目 Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given ...