有没有人知道Perl的优秀代码选择器?在将其发布给客户之前,我会被要求查看阻止代码的选项.我知道封闭式代码仍然可以进行逆向工程,但这不是我们主要关注的问题.
有些客户对我们提供给他们的源代码做了一些小改动,当出现问题我们必须修复它时,或者当我们发布一个与他们改变的内容不兼容的补丁时,它会给我们带来噩梦.因此,目的只是为了使它们很难对代码进行自己的更改(无论如何它们都不应该这样做).
我之前一直走在这条路上,当你不得不处理"混淆"的代码时,这是一个绝对的噩梦,因为当你,开发人员无法读取代码时,它会大大增加成本,试图调试客户端服务器上的问题.你结束了"反混淆器",将"真实代码"复制到客户端的服务器或任何其他问题,这些问题只会成为维护的真正麻烦.
我知道你来自哪里,但听起来管理层有问题,他们希望你实施一个选定的解决方案,而不是弄清楚正确的解决方案是什么.
在这种情况下,听起来它确实是许可或合同问题.让他们拥有代码开源,但让它成为许可证的一部分,他们提交的任何更改都必须返回给您并获得批准.当您推出补丁时,检查所有代码的md5总和,如果它与预期不符,它们将违反许可证并将相应收费(并且它应该是一个远远高得多的速率).(我记得有一家公司让我们拥有代码开源,但明确表示如果我们改变了什么,我们已经"购买"了25,000美元的代码,他们不再负责任何错误修复或升级,除非我们买了一个新牌照).
别.只是不要.
将其写入合同(或必要时修改合同),您不对他们对软件所做的更改负责.如果他们正在编写你的代码然后期望你修复它,你就会遇到通过混淆代码无法解决的客户端问题.如果你对它进行模糊处理并遇到实际问题,那么在错误报告中让他们准确报告行号等是好运.
请不要这样做.如果您不希望人们更改您的Perl代码,请将其置于适当的许可证下并执行该许可证.如果人们在您的许可证更改您的代码时表示他们不应该这样做,那么当您的更新不再适用于他们的安装时,这不是您的问题.
请参阅perlfaq3的回答"如何隐藏我的Perl程序的源代码?"了解更多详情.
看起来你的主要问题是客户修改代码然后使你难以支持它.我建议你在他们寻求支持的时候要求他们的文件的校验和(md5,sha等),同样在修补时检查文件的校验和.例如,您可以要求客户端提供所提供程序的输出,该程序通过其安装和校验和所有文件.
最终他们拥有代码,因此他们可以做任何他们想做的事情.您可以做的最好的是强制执行许可证并确保您只支持未修改的代码.