2

我从事一个以源代码和二进制形式免费分发的项目,因为我们的许多用户需要专门为他们的系统编译它。这需要一定程度的考虑来保持与旧主机系统的向后兼容性,主要是它们的编译器。

其中一些最笨拙的,例如 GCC 3.2(2003!)、ICC 9、MSVC(几乎是废弃软件,而不是 C++!)和 Sun 的编译器(在我们仍然关心的一些旧版本中)缺乏对语言特性的支持,使开发更容易。在某些情况下,让用户坚持使用这些编译器会降低很多性能,这与我们提供的目标背道而驰。

那么,在什么时候我们说足够了?我可以看到几个停止支持特定编译器的参数:

我确定我错过了其他一些,我不知道如何衡量它们。那么,我错过了哪些论点?还有哪些其他技术考虑因素起作用?

注意:这个问题之前的措辞更广泛,导致许多受访者指出决策从根本上说是一个业务流程,而不是一个工程流程。我知道“业务”方面的考虑,但这不是我在这里寻找的更多内容。我想听听那些不得不支持旧编译器或选择放弃它们的人的经验,以及这对他们的开发有何影响。

4

3 回答 3

3

您的问题在概念上与想要知道何时应该停止支持 Internet Explorer 6 的 Web 开发人员相同。答案是您必须进行研究。

  1. 有多少人使用较旧的编译器?
  2. 有多少人使用较新的?
  3. 有多少人愿意升级?
  4. 你会失去多少用户?(这可以从 1、2 和 3 的答案中计算出来)。
  5. 放弃对旧编译器的支持会为您节省多少时间和工作量?

基本上,您的决定归结为比较 4 和 5 的答案。从您的描述来看,这似乎是一个开源项目,但如果它是一项业务,您可以进行数字比较(如果损失的钱少于节省的钱,则放弃支持)。如果不是生意,那就有点复杂了,因为你必须猜测人力成本,这可能有点棘手。

于 2009-10-04T17:30:00.153 回答
2

好吧,通常的方法是先问。我假设你有一个网页的邮件列表或其他东西来促进这一点。所以问问:如果我们放弃对任何这些编译器的支持,谁会受到影响,升级会有多困难。这样做之后,您会知道继续支持这些编译器是否值得。

最好为您决定放弃支持的每个编译器版本标记最后一个工作版本,以便真正关心的任何人都可以继续使用该旧版本。

于 2009-10-04T17:16:49.987 回答
2

我认为做旧编译器技术的功效并不是特别重要。这是一个商业决策,真正归结为您是想留住客户还是失去他们。客户不处理技术,他们处理业务和业务决策。

理想情况下,您希望定义某种度量标准,该度量标准基于您拥有的客户数量,针对他们使用的不同编译器版本,针对维护每种编译器类型的特定版本的成本。

从根本上说,您真的需要小心何时以及如何告诉您的客户群您将淘汰部分产品集。你怎么告诉他们的。把它放在他们的腿上。计划一下。

你需要一个内部批准的受控策略,并开始推出它,也许在用户组会议上告诉他们,然后确保你有相当长的时间(2 年很好,让客户完成当前的实施(1 年)加上一些slack,在您开始实施之前,并有一个适当的支持框架,以帮助客户及时迁移。

你如何计划这将决定你的客户如何反应。几年前,我在软件公司工作,该公司出售用于控制电网的非常复杂的高端产品。该产品的完整包装售价为 200 万英镑,每位客户签订了一份 25 年的支持合同。不知何故,我们决定使硬件合理化。我们在 AIX、Solaris、Tru64 和 HPUX 上提供它。但出于某种原因,我们决定在 AIX 上对其进行合理化,我认为我们达成了协议。无论如何,其中一位 Solaris 商店的客户对此非常不满,然后在接下来的 4 年里,我们再也没有听到他们的消息。没有电话,打补丁,现场审核。没有什么。

我们决定改变它的原因,因为我们做了一个 6 sigma 项目,它表明我们每年可以节省大约 1900 万英镑,购买合理化 AIX 和 NT 的基础设施。但最终,我们最终关闭了我们的主要客户之一,实际上摧毁了我们的用户群社区。

这个决定很仓促,结果适得其反。所以我认为你最好的想法是计划它。

于 2009-10-04T17:27:47.607 回答