除了开源您的项目和法规外,是否有办法防止或至少最大限度地减少您公司/集团外泄露的代码损失?
我们显然无法阻止Internet访问(以防止通过电子邮件发送代码),因为程序员需要他们的参考.我们也无法阻止外围设备(USB,Firewire等)
当代码具有一些专有算法和内部开发的知识时(与绘制GUI,连接数据库等常规代码相反),代码最重要,但某些应用程序(如会计软件和CRM)就是这样:复杂的原则上易于开发的常规代码集合,但需要数年才能从头开始编写.这就是泄露的代码将对竞争对手派上用场的地方.
据我所知,防止泄漏几乎完全依赖于人体过程.你怎么看?您采取了哪些预防措施?并且之前有代码泄漏影响了你吗?
你不能阻止它离开.所以有两种解决方案 - 阻止人们想要伤害你,并采取法律预防措施.为了阻止人们讨厌你,他们对待他们(说更多可能是关于堆栈溢出的主题).
我不是律师,而是为了给自己提供法律保护,如果你相信它,为这些想法申请专利,在代码中加入版权声明,并确保你的程序员的合同明确规定了知识产权.
但在一天结束时,答案比竞争对手更快.
除非你正在使用高度机密的东西,并且鉴于你无法阻止电子邮件和USB设备,我猜你并不是真的没有太大的损害,即使源代码泄漏也没有.问题是,代码是什么,或者它的一部分是值得的,而不知道它是如何工作的以及它周围的组织.
一般来说,"来源"的价值远低于通常所宣传的价值,基本上没有人或组织的来源不值得为竞争对手占据存储空间.
此外,你错过了最有可能的攻击向量,它也是你无论如何都无法阻止的.如果有人真的想要知道你是如何制造你的魔法那么他们会试图雇用你的开发人员,因为你无法阻止他们在他们的头骨内部获取信息,即使他们把所有他们的所有权转交给他们知识和领域专业知识随他们而去.基本上,员工保留和信任是唯一的方法.抱歉.
我不知道这会有多少实际的帮助,但是:
不要打扰你的程序员.不要让他们处于他们想要将来源提供给竞争对手的位置.大多数地方低估了他们的开发人员.鉴于你在哪里(SO),我猜你不太可能.没有什么比看到销售人员参加高尔夫球比赛 - 由公司支付和支付 - 而我们不得不争取每月一次披萨.
真的,如果您的直接竞争对手今天获得了您的代码,它会做什么?您的产品或垂直市场是否停滞不前,您不会在它们做出反应之前发布更新,更好的版本?没有创新空间吗?大多数公司高估了他们的"专有算法和内部开发的知识".当然,它可能会减少一些时间,但它只占问题的10%左右.
如果您拥有所有竞争产品的所有来源,那么实际使用量是多少?我猜它会让你回到几个月.没有前进.背部.
如果您拥有一个干净的系统,并且外部/内部知识很少,您需要多长时间才能将自己的产品置于可构建状态?要深入研究代码并进行正在进行的操作需要多长时间?你会浪费多少时间和金钱来尝试解决问题,而不是花时间和金钱来使你的产品更好地运作?
我实际上已经拥有了所有来源 - 一百万行+代码 - 给竞争对手的产品.我们没有采取任何措施 - 除了一点点,然后删除它,这比我感到舒服 - 但我希望我们已经咀嚼了几个月的时间才能到达它们的位置然后.
所以我们对它进行了修改,打了一个得到它的id10t(是的,是从另一家公司来的开发人员/ PM),并考虑如何让我们的产品发挥得如此之多,以至于他们所做的并不重要.更好地利用时间.工作得很好.我们有差异化因素,而不仅仅是以相同的方式重新散列相同的功能.
很抱歉,但有没有办法可以阻止人们得到的东西出来,仍然能够实际工作.你可以阻止他们想要这样做,或者让它们变得没有价值.
我们担心人们也会反编译我们的代码.当我们意识到WE有足够的麻烦来解决500K + C#,C++和HTML代码与MAPI/Exchange交谈的内容时,我们不再担心了.如果有人可以反编译并解决它,那么我们想雇用他们......
顺便说一句,为了清楚起见,并给出了我现在工作的人,我应该指出这不是我现在的雇主.这是很久以前的事了.
代码本身不泄漏.它需要人们接受它.显然,您可能会使用一些安全措施,例如流量分析和锁定存储库,因此只有经过授权的开发人员才能连接到它.
但到了最后,你最好的办法就是确保没有人能从你那里抢走.你的团队必须感到高兴,他们必须为你的工作感到自豪,因为他们必须忠于公司和彼此.如果你有这样的团队,这是一个简单的问题,向每个人解释必须保护代码不受外人的影响.它不会阻止专用的痣,但会防止意外.
PS并且是的,合同中的正确条款也不会受到损害,至少他们会确保开发人员知道在外面采用代码在道德上是错误的.
遵循这些指导原则,如果整个源代码存储库的内容遍布stackoverflow,则无关紧要:
http://geocities.com/mdetting/unmaintainable.html
哦,通过阻止对部分源代码的访问,扫描传出/传入的电子邮件等,向您的开发人员展示您不信任他们.这是一种让他们想留下来的绝佳方式......没有任何改进士气在工作场所有点不信任.
另一个很酷的方式是告诉一半他们是"团队一员"并将另一半命名为不值得信任的"团队b".然后将其反转并对"团队b"成员说同样的话.鼓励他们关注其他团队中的"坏人"并报告任何对你不忠的迹象.撒上一些"冲突诱惑者"(例如告诉"乔":' 你知道埃德在你背后说的是什么吗? ')等等.如果你把开发者设置成互相攻击并且创造了一些[发明者]你在这里和那里发生冲突......
(呃,不,我实际上并不推荐以上任何一种.开个玩笑.但是我看到人们使用上面的所有策略.而且它没有用.)