摘要:代码公布并不意味着软件开源,代码公布有多种好处:促进开发者之间的交流,技术上的分享,软件程序的改善等等。可是有些开发者担心将自己的代码公布出来,有原必有因,在这样一个大环境下,他们到底在担心什么?

本文作者Matthew MombreaCypress North的创始人、软件工程师、科技爱好者,在这篇文章里介绍了开发者为什么害怕将代码公布的四点原因。代码公布不是什么坏事,不仅能够促进交流、提高开发者的个人技能,还能提升软件质量。

从开源代码或者是公布代码里获得的利益是无法估量的。也很难想象,在今天的编程世界里,如果没有免费的类库、代码片段和技术教程的话,那会带来多少麻烦。可是,为什么大多数开发者如此担心将他们的代码公布出来呢?

其实对于这个问题,没有明确标准的答案,下面所提到的四点原因主要是代表那些绝大多数反对代码公布者的观点:

1. 我的代码还不够好

这是最常见的反应,也许是出于谦虚的态度。几乎每个公布代码的开发者在一开始都会有这样的感受。对于开发者来说,软件是一种在表达能力上非常个性化的表现形式。解决问题的方案是多种多样的,但是你所选择的解决方式可以代表你的个性和技术水平。

从另一个角度来看,有多少开发者没有看过别人的代码?有多少开发者没借鉴过别人的基础代码?估计开发者大部分时间都是在看别人的代码来完善自己的代码程序。甚至有的时候,当你在看别人的代码的时候,发现代码里有问题或者解决方案是无效的,你可能会认为这个开发者一定是笨蛋!或许你会出于好意提醒那个开发者如何修改这个问题,并为他节省了很多时间,但结果呢,你得到的回报可能连一句谢谢都没有。这也许就是为什么大多数开发者不愿意公开自己的代码,怕被指出错误后觉得没面子。事实上,只要尽自己的力量把工作做好,为那些需要代码的人提供你的代码,帮助别人在程序开发过程中获得好处,大部分人还是会感谢你的。

2. 不希望别人非议自己的软件程序

的确,这是另一个很自然的回答。现在互联网就像是一个大熔炉,什么样的开发者都有,有的喜欢藏起来使用匿名,有的程序员喜欢背地里搞点小手段。现在很多开发者素质不是很高,总是喜欢把任何事都搞得像是在竞赛一样,别人有点小的成就了,他就开始以不同的方式在那里挑三拣四、追毛求疵,说些风凉话。在这里不得不说,看过外文网站的人估计都会有这样的感觉:文章下面的评论内容基本上是比较干净的、积极的,不像在国内的网站上,把别人的文章当成是打口水仗的战场。不过这可能是大的环境所导致的。于是乎,有些程序员在这样的环境下不得不变得具有防御意识,更加任性,与此同时,自我意识更加强烈。

不过事实是这样的,作为一个程序员,必须要有能够接受批评的心胸。同时,还要能够甩掉心理包袱,把批评当作是一种动力。换句话说,建设性的批评能够帮助开发者快速成长,节省时间去经历更多的经验教训。

3. 事关安全问题

安全的确是不可忽视的大事,任何需要公布的东西都要考虑到是否会暴露敏感信息或是访问协议等等。如果你认为我们谈论的东西和安全或敏感数据加密有关的话,这里建议你在开发过程中尽可能早些时间公开代码。通过这种方式,将你设计的安全保密方法公布出来,如果你的方法经不起推敲的话,肯定会有一些专业知识丰富的专家帮助你解决问题:尽早的查出程序策略里的漏洞,或者是你根本没注意到的错误。

最后,总结别人所提供的方式方法,你所获得的就是一个更安全的最终产品。任何安全措施,只要能够被了解代码的外人轻轻松松破解的话都不是安全代码。可以想想OAuth 2.0的安全事例,它的开放设计和编码都是借鉴外部思想和安全方法的。

4. 拥护自己的技术思想

也许大多数人对现在这个网络世界不是很信任,因此公众对于这方面的担忧达到了一个荒谬的高度。就像有些人大声跟你说:我有一个巨好的想法想知道吗?不过没有NDA(保密协议)我是不会轻易告诉你的。事实上,没人会偷你的想法,你所做的事情可能已经存在了,或者别人已经开始做了(甚至是开源的)。

这里并不建议你将整个项目的开发方案和整个商业模式进行开源处理。这里只是建议将可以共享并能更好的使用的组件和类库进行开源。这里以Square为例,Square是一个快速发展且很有价值的公司,它已经向外界公布了一个庞大的代码库。可能在外人看来这会阻碍它在核心业务上的前进步伐,但是,它所公布的特定代码是不可重复使用的。Square所发布的代码对于很多人来说,它改善了Android和iOS软件质量。作为回报,来自世界各地的开发者免费为Square的类库贡献改善措施。

结论

将自己的代码公之于众听起来很吓人,实际上你获得的好处比失去的东西要多的多。别人看了你的代码之后,你的代码一定会比被看之前好很多,你接受批评的能力也会有所改善,同时,别人也能从你的分享过程中获得很多好处和启发。                                            

原文:IT World

 

参考推荐:

开源的力量:Google

开源的力量:Facebook

开源的力量:Twitter