不选择特定开源软件的10个理由

我们都是一种或另一种类型的软件工程师。 但是,我们大多数人有一个共同点:我们很懒。 而且我们知道其他人不那么懒惰,已经解决了我们所面临的乏味问题。 因此,我们搜索了开源软件。

但是开源软件存在的问题是:每个问题域都有数百万种选择。 只要看看使用“现代” JavaScript的 Web开发即可。 选择哪个工具? 明天哪一个会在那里? 能行吗 我可以维修吗? 新功能? 来自社区的插件?

虽然它不是那么容易找到好的中合适的工具( 公共番石榴的MockitoJMock的休眠jOOQMyBatis的 ?),那肯定是比较容易排除坏的。

在评估开放源代码软件时,有一些注意事项(无特定顺序)

1. NullPointerExceptions,ClassCastExceptions

这是我的最爱之一。 谷歌很容易。 没有人会完全免受这些烦恼。 但是,当您找到堆栈跟踪,错误报告时,请仔细调查它们。

  • 他们经常出现吗?
  • 它们是否出现在相似的环境中?
  • 它们是否出现在本可以忽略的地方?

能够避免NullPointerExceptions和ClassCastExceptions是一个好的设计问题。 它发生在每个人身上。 但是,不应从Java编译器或FindBugs可以静态发现的地方抛出NullPointerException。

不用说,例如,由于该库产生的语法错误,可以使用SQLExceptions扩展从数据库库引发的不执行异常的列表。

2.社区讨论错误而不是功能,策略和愿景

每个开源软件都有用户,并且与Google GroupsGitHub一起使用 ,与OSS社区进行交互变得相当容易。

对于较大的项目,社区还扩展到Stack OverflowRedditTwitter等。这些后续步骤是开放源代码软件流行的标志,但不一定是您应该使用它们的标志。 同样,不要被用户说“嘿,这太酷了”,“这让我过得好”,“有史以来最好的软件”而蒙蔽视线。 他们向所有出于痛苦而支持他们的人说(或懒惰,请参阅此帖子的简介)。

应该寻找的是社区是否在讨论可以在明年的下一个主要版本中实施的愿景,策略,功能和真正令人敬畏的想法。 这是一个真实的信号,不仅软件可能会继续存在,而且还会变得更好。

与之相反的是主要讨论错误的社区(请参阅NullPointerException,ClassCastException)。 与“有远见”的社区不同,“无聊的”社区只会创造工作,而不是启发供应商。 但是,哪个是鸡肉,哪个是鸡蛋?

与此相反的是,一个社区因供应商的愿景给出的虚假承诺而感到失望。 我经常感到Scala的SLICK可能适合这种情况,因为它在其自己的,受LINQ启发的查询DSL和SQL之间引入了无法克服的语言映射阻抗不匹配

3.手册欠佳,Javadoc较差

这很容易发现。 你真的想要那个吗? 最好和最权威的信息应该来自软件供应商,而不是您搜索过的Web上的一些怪异论坛。

PostgreSQL的手册就是一个很好的例子。

可以在这里看到有关不良示例的怒吼:
http://www.cforcoding.com/2009/08/its-time-we-stopped-rewarding-projects.html

不要被最终可能变得更好的想法所欺骗。 记录不良的软件在许多其他方面将很糟糕。 这是如此容易发现!

当然, “正确”数量的文档完全是另外一回事了……

4.没有语义版本控制

搜索发行说明,看看是否会找到与semver.org大致对应的内容 。 当您在关键任务软件中使用的开源软件出现故障时,您将需要发布补丁程序。 获得修补程序版本时,您不需要50个新功能(具有新的NullPointerExceptions,ClassCastExceptions)。

5.外观杂乱无章

同样,我们处于GitHub时代。 过去的CVS时代已经过去,HTML仍然用于共享烹饪食谱。 检查您的开源软件是否使用这些工具。 如果他们表明他们正在使用它们。 这将帮助您确定,如果供应商不被他们自己弄得一团糟,那么该软件在几年内仍然会很好用。

6.供应商侧项目演变为后代产品

我想这是一个信号,并非所有人都可以同意。 但是,根据我之前的工作经验,我坚信,在将其制作为产品之前,出于必要而发展的软件确实会遭受其传统的影响。 它从一开始就不是产品,它与供应商的原始要求有很强的联系,这不会打扰供应商,但是会打扰您。 而且由于供应商与他们的后代仍然有非常紧密的联系,因此他们不准备在代码和愿景上做出根本性的改变!

具体来说,在数据库字段中,有几个这样的软件,例如

请注意,我不知道上述任何工具,因此它们也可能很棒。 但是要注意。 它们不是设计为产品。 它们是为源自Apache之前的上下文的非常狭窄的目的而设计的。

7.泛型不佳(或过度)采用

泛型是在2004年用Java 5引入的。关于泛型类型擦除的争论已经结束,泛型被很好地采用。 还是不是? Apache Commons Collections的最新稳定发行版3.2.1尚未生成! 那一定是人们开始转而使用Google Guava (或其前身)的第一大原因。 懒散的一天中,没有什么比原始的类型(或鳗鱼 )拍打在你的脸上好多了。

但是,您应该注意的另一件事是过分泛滥。 即使对于顶级Java架构师来说,泛型也会变得非常困难 。 API中包含太多泛型对于架构宇航员来说是一个好兆头。 (或本例中的设计宇航员)。 我们将进一步了解与设计决策背后的人之间的关系。

8.供应商无法处理客观的批评或竞争

以下是找出谁是开源软件背后的人的方法。 尽管这对于一个小巧的工具并不重要,但是当您寻找战略性OSS补充时,您应该对作为供应商的个人非常感兴趣,尤其是在与仁慈的独裁者打交道时。 供应商应为:

  • 意识到竞争,即他们正在做营销,向他们学习。 改善竞争。 这意味着他们对真正变得更好感兴趣,而不仅仅是“确信自己变得更好”。
  • 与您的客户竞争,对他们的竞争持开放态度,并准备讨论各种观点。
  • 对新想法感兴趣,可能会立即将它们放在路线图上(但又不会失去对他主要战略路线图的关注)。

即使这是开源的,也不要自大或自负 。 供应商应将您像客户一样对待(只要您不拖拉)。 从长远来看,思想开放最终会带来更好的产品。

9.供应商根本没有商业或市场利益

现在,由于多种原因,(免费)开源很不错。 作为供应商,您可以获得:

  • 反馈更快
  • 反馈更多
  • 社区(具有拉取请求,功能添加等)
  • 感觉自己做的很好

真正? 是。 但这对于商业软件也是如此。 那么做开源的真正原因是什么? 这取决于。 例如,自从收购Day Software以来,Adobe已经开始开放很多。 所有JCRJackRabbit ,即将推出的JackRabbit OakSlingFelix仍在Apache上,而原始提交者仍在使用中。 但是,当然不能说Adobe没有商业利益。

OSS供应商应该从经济角度考虑并开发产品。 最终,他们可能会开始销售围绕其核心产品的东西,或者开始出售单独的社区和商业许可证。 而且,与让他们变得过于贪婪(请参阅Oracle和MySQL以及RedHat和MariaDB )不同的是,这可以使商业开源成为非常有趣的业务,对于客户而言,他们也将获得开源的良好组成部分(部分免费, 开放 ,一个充满活力的社区)以及商业软件的出色组成部分(高级支持,保修等)

换句话说,不要选择过于怪异的东西。 但是您可能之前已经认识到那些工具(文档差,没有语义版本控制,工具差)。

10.不再有牵引力

总结一下,这是显而易见的最后一个。 许多开源产品都没有表现出任何吸引力。 这与先前的观点相吻合,在先前的观点中,卖方没有商业利益。 没有商业长期利益,他们还将失去所有其他利益。 而且您不得不自己维护一堆第三方代码(修复了许多ClassCastExceptions,NullPointerExceptions)。

结论

您应该选择开源软件,就像商业软件一样。 经济上。

  • 开源不是质量差的借口。
  • 开源并不是缺乏支持的借口。
  • 开源不是非专业主义的借口。

如果开放源代码在上述任何一项上使您失败,那么这个笑话将在您(客户)身上。 您会得到一个不好的产品,并且您会付出昂贵的代价来维护自己身边的东西,而您认为您可以免费选择一些东西来避免这种情况。 没有什么是免费的。 甚至没有免费开源。 问脾气暴躁的书呆子


翻译自: https://www.javacodegeeks.com/2013/08/10-reasons-not-to-choose-a-particular-open-source-software.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值