2008年11月6日星期四

原作者

最近一个朋友要在学校组织编程竞赛,找到我商量一些细节问题。谈到代码的问题,他说,由于网上能轻松地找到许多现成可用的源代码,担心比赛会因此出现问题,自己正在积极思索如何能够验证参赛者是提交代码的原作者而非抄袭者。我说,这的确是很棘手的问题,要不向参赛者要求完整的代码文档、添加答辩环节?他说,这是个类似Microsoft Project Hoshimi的PK性质的AI编程竞赛而非Software Design这样演示性质的,答辩的手法估计是行不通的。我说,那好吧,我们再想想。

代码作者问题始终给从事于软件开发的人们带来似有似无的困扰,小到我们的课程实验,老师们会处心积虑地检查学生提交的代码是否为独立完成,大到Microsoft这样的软件巨头常年通过封闭自己的代码获取利益,然后在开源的世界,各色各类的许可证为代码作者提供保护——以前我一直以为许可证是一个随便的东西,后来听一个师弟讲了一些,才知道这玩意儿的复杂。除非牵涉到经济利益问题,有关代码著作权和代码使用权的维护,更多地还是倚靠软件从业人员的自我道德约束。

听一个在某知名企业工作的朋友说,上班时阅读开源代码是不行的,更郁闷的是,每每接到一个原型系统,被要求转化为实际产品,他们都会很抓狂。因为原型基本上是建立在开源库之上的,而这显然不可能用在产品中,只能Build from Scratch。在校学生基本上永远不会遇到这样的窘境,学生可以自由地使用盗版的Visual Studio Team System,自由地阅读与构建代码,并自由地抄袭代码以完成自己的任务。

如何验证你是代码的原作者这个问题是困难的,除非你遇到的是一个抄袭水平低下的抄袭者,你能在几分钟之内发现他根本无法理解“自己的”代码。处心积虑想通过抄袭达到目的的人会花大量的时间去改造抄袭得来的代码,去理解它们,去完成代码注释和文档等等。然而,当抄袭工作认真到这样的境地时,评判者所能发现的“抄袭”便可以被抄袭者解释为雷同,我们无法拿出量化的乃至是感性的标准来衡量这个行为。

最终,很可能出现的结果是抄袭者获得极大的收益而老老实实的代码工作者则并没有收获匹配自身工作的回报。不过,多数所谓不健全或不公正的规则,在没有规则制定者参与其中的情况下,对于所有参与者而言事实上是一致的。竞赛本身注重的是结果,竞赛的意义则因竞赛者而异。

这个论题太广泛,自己也只能针对一些片面发表看法。从代码引申出去,还存在有文字抄袭、创意抄袭等同样难于定义的事情。然而社会好比一个竞赛场,更加关注的是结果,无论你是原版还是山寨,占据领域的高点是最重要的。随便看看当今各种软件、服务的发展姿态,亦都是你抄我一行、我拿你一段了。C#最初就是个山寨版的Java,到后来Java也开始从C#中学习;MSN很早就有了IM + Email + Blog的捆绑模式,被Google、腾讯所效仿;阿里巴巴有个支付宝和淘宝,百度就弄个百付宝和有啊——这纷乱繁复的世道,就是这般的精彩,人类的想象力有限,雷同或者抄袭便是自然而然的事情了。

没有评论:

发表评论