丢失源代码有多严重?[关闭]


9

如果软件公司将源代码丢失给他们出售的一种产品,那么用您可以向外行解释的话,这有多严重?“重大过失”一词会否太过强烈?还是“严重的无能”?显然没有人被杀,但是难道不如人们因入狱而造成的经济疏忽那么严重吗?

编辑: 假设这不是磁盘驱动器崩溃,自然灾害或类似情况的情况。只是他们放错了地方。


37
这个问题背后有一个故事,我很想听听。我将等待它显示在Daily WTF上。
BlairHippo 2010年

4
@Josh K-比喻不好!一个孩子无法替代。源代码即可。(如果您认为source_code == kid,我会感到非常震惊)。但是,我猜您还没有一个。
鲁克

6
@Rook:为什么这样的比喻不好?源代码无法完全替换,只能类似地复制。当然,这还不如失去孩子那么极端,但这种比喻仍然很合理。
乔什(Josh K)2010年

6
@Rook:您错过了这样的观点:尽管一个(孩子)显然源代码重要得多,但是拥有这两个孩子仍然是非常宝贵的。您驳斥了我的类比,因为孩子更重要,然后源代码就像解雇Yahoo!。作为搜索公司,因为Google更大。我的观点是,两者都是巨大的,一个事实的意义/重要性是其他事物的10倍,而另一个则无所谓。告诉您,为您的公司主应用程序松开存储库(以及所有代码副本),然后在5-10中与我联系。
Josh K 2010年

5
我不明白为什么一开始只能放一个副本?我通常至少有两个或三个拷贝自己在修复,更新和修补程序我工作的各个阶段。我的同事们将拥有自己的副本。最糟糕的是,您可能会丢失源存储库中的历史记录(如果您使用的是没有备份的中央存储库)...我只是看不到这是怎么回事...
Dean Harding 2010年

Answers:


27

假设MS失去了Windows Phone 7的来源...人们因waaaaay被杀而少于开发它的估计费用4亿美元。

根据产品的不同,我无法想到一个术语“太强”。


1
如果他们正在出售软件而没有源代码,是的,它是无能的。但是,作为一名定制软件开发人员,令人惊讶的是,我经常碰到由非程序员运营的小公司,这些公司将其开发外包,甚至没有所售软件源代码的可构建副本。
鲍勃·墨菲

1
这样做的不仅是小公司。我的咨询公司过去曾为Informix做很多工作,而Informix在当时是Oracle的可行竞争对手。他们决定将我们的一个项目转移到一家印度外包公司,有一天,经理打电话给我们:“您没有给我们发送消息!” “是的,那是X日期(大约一年前),这是FedEx跟踪号码。您丢失了吗?” “不,当然不。” “如果您这样做也可以,因为我们可以从存档中检索它,但是要收费。” “不,不要打扰。” 我们发现后来他们确实丢失了它。
鲍勃·墨菲

18

对于一家公司而言,这就像失去皇冠上的珠宝。如果它是带有嵌入式处理器的产品,那么他们可以继续“按原样”制造该产品,但是他们失去了改进产品或解决任何问题的能力。

公司在今天的市场上IS它的IP。失去它,它就倒闭了。


13

正如其他人所指出的那样,这可能属于“全视情况”标题,因此有以下几种说法:

基于磁盘的控制台视频游戏的来源 -这可能对公司影响不大,因为一旦将游戏刻录到磁盘上,他们往往不会对游戏进行任何更改。当然,如果有必须重新开发的库代码,他们可能会浪费一些时间,这并不是那么糟糕。

可下载视频游戏的来源 -这可能很糟糕,因为客户可能会期望会修补错误,而不能这样做,可能会导致客户对公司失去信心,这可能会对以后的发行产生不利影响。

开发中游戏的来源 -大多数视频游戏公司无法承受丢失当前正在开发中的游戏的代码,除非它处于开发周期的极早(即几天甚至几周)。因为他们的旗舰版本可能导致他们倒闭。

发行量有限的小型企业应用程序的来源 -可能给公司造成任何问题,尽管可能会失去几个客户。

发行量有限的大型企业应用程序的来源 -这是由于客户失去信心而导致公司倒闭的另一种情况。即使在大多数小市场中,也往往会有一家以上的公司在运营,这足以使该公司向竞争者转移。

大型公司提供的主要应用程序的来源 -这实际上取决于所有情况,并且可能会基于非常狭窄的案例而定。旗舰产品(例如Microsoft Windows)通常具有与其相关的支持合同,而不能支持该产品可能导致违反合同诉讼。如果我必须给出一个估计,我想说的是,大多数参与准则丧失工作的人,直到这些人的高层领导,可能都需要寻找新的工作。

但是,我可能会说,总体而言,丢失代码的人正在寻找新工作(并且可能很难找到工作!),而且他们也可能面临公司的诉讼。


在开发下一款游戏时,尤其是在开发其续集时,通常会重用先前发布的游戏源代码的大部分。但是,鉴于游戏工作室的寿命相对较短,因此在过去几十年中听到游戏资源损失的情况并不罕见。
wip

3

虽然在某些情况下肯定会造成灾难性的影响,但我认为有很多情况并非如此(至少从软件公司的角度来看)。

我认为,变量太多,无法一概而论,是否有任何法律影响,但是在确定这一点时要考虑的几个问题包括:

  • 该计划的本质是什么?如果这是他们丢失的东西,因为像这样的应用只是一角钱,这并不重要,那又如何呢?如果这是公司的旗舰商业产品,那么它们只会伤害自己。如果它是定制软件,那么他们就已经签约建造了,这可能会很有趣,但是您必须要问...
  • 谁拥有该代码的版权?(如果客户拥有版权,则可以说他们的财产已经丢失/破坏)
  • 规范的消失会给客户带来积极的伤害吗?
  • 是否存在有关未来开发的合同,这些合同由于该规范的消失而被违反?
  • 能够重新创建现有软件有多重要?如果要像执行维护任务的Shell脚本那样,软件公司会花费时间来制作一个新的做同样的事情。如果是办公套件,请清除简历。

而且我敢肯定,还有许多其他因素需要考虑。随时添加。

现在,我确实说过“从软件公司的角度来看”。在客户心目中,这可能仍然是灾难性的,因为他们有更改,增强或其他方面的计划。尽管签订了此类合同或拥有版权,但它可能会严重激怒客户,但开发人员除了尽其所能维持良好的客户关系外,没有任何义务。


为了进一步扩展“客户的观点”这一点,我要说的是,我不知道问题背后的故事是什么,但是让客户认为他们已经了解了这一点并不是什么闻所未闻的。有权要求像Fort Knox这样的源代码受到保护,而在开发人员认为自部署以来三年内客户不要求任何修改或其他工作时,开发人员认为它“被丢弃”。
Blumer 2010年

请注意,做一些严重激怒客户的事情也可能违反合同且具有法律效力。这也可能导致客户公开投诉。
David Thornley,2010年

3

嗯,鉴于您的澄清(在评论中):

它是很久以前开发的,没有源代码控制,他们一直在销售它,现在突然需要更新它

这种特定情况下,我想这可能不是世界末日。鉴于他们多年来一直在销售该软件而无需使用源代码,因此您可以对要求更新的一位客户说“抱歉,不能做”。

现在不要误会我的意思,丢失代码不是很好。对于您的公司而言,重写或反向工程原始版本将非常昂贵(如果他们决定这样做的话)。但这不是世界末日。很明显,它们不需要代码就可以生存很长时间,因此,如果没有代码,他们可能会继续生存。

当然,这是假设他们销售的软件只是他们业务的一小部分。我猜肯定是这样的...


是的,这只是他们出售的许多产品之一
JoelFan 2010年

这不仅是1位客户...它将不再适用于最新版本的操作系统
JoelFan 2012年

1

只要他们仍然有能力销售产品,我就认为他们没有麻烦。现在,如果他们与客户签有合同以扩展产品并在下一版本中提供某些新功能,那将更加严重,因为这将使他们违反合同规定。但是我认为丢失代码本身没有法律问题。

这并不意味着这不是公司的绝对灾难。但这是一场金融灾难。不是合法的。我可能会以“严重的无能”一词开始,然后从那开始。


-1:“我不认为他们有麻烦”,当微软“升级”操作系统时,他们无法进行错误修复,修补或更改。他们完全注定了迅速减少的客户群,唯一的新销售将是完成白痴。(非零人口,但没有很多钱可用于欺骗软件。)
S.Lott 2010年

@ S.Lott:更重要的是,它们甚至无法重新编译。如果客户的环境发生任何变化,该软件将无法运行。
David Thornley,2010年

1

老实说,我认为这取决于所使用的语言。如果您丢失了C#代码库,则可以非常容易地对其进行反编译,但是如果您丢失了C ++代码库,那就更糟了。


反编译到仍然可以构建和运行的程度,但是仍然可以维护吗?
杰伊,2010年

3
如果您遵循良好的编码习惯,那么绝对可以。所有方法和字段名称都保留,甚至是私有名称。如果方法很短,那么局部变量的目的应该很明显。诸如匿名方法和迭代器之类的编译器技巧可能看起来令人生畏,但可以通过一些工作来逆转(如果需要)。即使程序集被混淆了,仍然应该在某个地方放置一个调试版本。
注意事项-想起

除非您仅有的唯一代码被混淆,否则这种情况会有些痛苦。
MIA 2010年

1

如果说不出话来,那么,任何一家可能会通过除相当广泛的灾难以外的任何方式丢失其源代码的供应商显然都不会遵循诸如完善的开发实践之类的方法,因此也不值得信任。我认为这是公司严重无能的非常有力的表面证据。

“不可思议的愚蠢”怎么样?


0

我希望将其与需要构造项目的其他工作进行比较。可能是身体上的东西。例如,如果建筑师丢失了建造的建筑物的计划;如果汽车公司失去了汽车模型的计划;如果裁缝迷失了他们制作服装的样式;等等

有许多工作可以与创建软件进行物理比较。


除了计划通常不那么重要。如果建筑师丢失了计划,那么另一个人仍然可以监督对建筑物的更改。如果汽车公司错过了计划,其汽车仍可以在新开发的路面上行驶。如果我丢失了源代码,则无法以任何重大方式更改程序,也无法重新编译它以使其在新的操作系统或库的更高版本上运行。
David Thornley 2010年

@David:我认为您不理解我的类比。如果建筑师将计划放到建筑物中,则他必须重新制定计划以建造新的计划。我也看不到另一位建筑师如果没有计划要如何监督建筑物的变更。您,完全误用了汽车类比。但是,您确实指出,无论如何这都是一个较弱的并行。
frogstarr78

@ frogstarr78:在没有原始计划的情况下对建筑物进行更改是可行的。那里有一栋可以观察的建筑物。建造新建筑物可能需要新的计划,尽管它们可能基于旧的计划。汽车模型的计划只需要一个模型年。之后,可以检查汽车以获取必要的信息。丢失物理对象的计划虽然不好,但是对可用性的影响几乎不如丢失源代码。
David Thornley 2010年

@大卫:我不同意。
frogstarr78

@David:对我来说,听起来就像您比较重画房子或汽车的计划一样简单,就像看到正在运行的程序并可以更改它一样。如果程序已编译(并且是合理的跨平台兼容),或者已经建造了汽车,或者已经建造了房屋,则可以全部使用它们。但是,当您需要更改其中任何一项时(例如我所说的汽车是这里的每周示例),您将需要计划。我并不是说这些示例是完美的,但是它们将概念置于大多数人所熟悉的物理领域。
frogstarr78

0

我认为,除了可以选择反编译代码之外,假设公司打算继续销售该软件产品,这将是一个很大的问题。如果是内部应用程序,则在较小程度上适用。

如果无法还原源代码,则无法执行维护(错误修复)和增强功能,因此应用程序现在是静态的。如果Microsoft,Apple或Apache或您的操作平台的任何人更改或升级了他们的代码,则您的旧编译代码可能无法工作,您将无法修复它。如果您将此应用程序出售给外部客户,您将无法控制他们何时升级Windows,MAC OSX,iPhone,Web浏览器,因此,如果您与公司签订维护合同,将对公司的声誉造成很大的风险,甚至可能产生法律风险。与客户。

其次,源代码代表了公司的资产。因此,对于软件公司而言,这是一笔宝贵的财富。您可以将其作为产品出售,也可以将源代码和所有权利出售给另一家软件公司。我不会继续向我知道无法维护的客户销售软件产品,因为我丢失了源代码。此外,我怀疑如果不能进一步开发产品,其他软件公司是否会购买该应用程序和所有权利。因此,必须降低此应用程序的资产价值。

对于内部内部应用程序,您可能会更好地控制应用程序的操作平台,但是如果无法将源代码反编译为可用的代码库进行维护,我仍然希望替换此应用程序。

干杯,

凯文

PS我希望这只是一个理论问题... :)


-1

如果他们不必修复任何错误,那么可能就没什么大不了的了。例如,如果公司制作了自定义的ActiveX控件,而他们却将源丢失给了他们的一种传统产品,那么谁真正在乎呢?该产品可能没有得到积极维护,也可能没有积极销售。只要人们仍然使用32位ActiveX,他们就会出售它,然后再将其遗忘。

也就是说,我仍然将其归类为重大过失。显然,没有适当的源代码管理系统,这对于软件公司来说是无能为力的。


-1:“如果他们不必修复任何错误”,完美水平令人羡慕。谁拥有那么好的软件?任何人?
S.Lott

1
“不必修复错误”!=“没有错误”。许多公司继续销售EOL软件,其中包含许多无意修复的已知错误。就像Win98的USB驱动程序一样,它们可能不完美,但我怀疑有人在应用错误修复程序。
TMN 2010年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.