foss测试

开源软件的使用已成为当今大多数人的生活方式。 对于大多数人而言,对开源项目的贡献使我们能够将视野扩大到日常工作之外的开发团队,并提供一种参与新的有趣领域的方式。 新项目每天都在开始:一些项目有大量的支持者并且具有很高的知名度,而另一些项目只有少数专门的开发人员试图解决本地问题。

开源项目托管在GitHub , SourceForge , Google Code , Launchpad , RubyForge和Codeplex等站点的全球许多不同的“伪造”中。

通过Linux基金会 , Apache基金会 , Eclipse基金会和Mozilla基金会等开源基金会 ,在本地存储库中托管了另一组高度可见,重要的项目。 可通过私有存储库(例如中央存储库)获得更多项目。 这些存储库一起提供了利用数十万个项目和数十亿行代码的绝佳机会。

但是,筛选许多存储库和项目可能是一个严峻的挑战。 此外,许多这些站点的噪声水平很高。 项目经常被废弃,变形为其他项目,分裂或以其他形式重生。 许多人每天都有活跃的团队在工作,而其他人则li行,死于漫长而缓慢的死亡。

去年下半年 ,我们对Ohloh.net上跟踪的大约550,000个项目进行了分析,以查看有多少项目处于“活跃”状态。 为了进行此分析,我们同时检查了提交和提交者。 这是我们发现的:

  • 在Ohloh上有超过550,000个项目。
  • 271,372个代码分析。
  • 在过去2年内完成96,824次。
  • 在过去的一年中有46,883次提交。
  • 29,303,过去6个月内提交。
  • 21,251,过去3个月内提交。
  • 过去一个月提交12,870次。
  • 过去一周提交5,629次。
  • 过去一天提交1,224次

图1中的图表形式来看,我们发现在过去12个月中,分析的项目中只有17.3%没有任何活动。

图1:最近12个月有活动的项目

此外,我们发现在这17.3%的项目中,只有一半的项目有两个或多个积极参与该项目的开发人员。 这意味着所有项目中约有8.5%仍在活动中, 如图2所示。

图2:过去12个月中仍处于活动状态的项目

在图3中检查了这些活动项目中使用的主要语言之后,我们看到Java继续领先。 也就是说,我们还发现较新的项目正在大量使用Python,PHP和JavaScript。

图3:领导者

从此分析中,我们可以看到,只有一小部分已创建的项目能够获得并维持长期的吸引力。 这似乎很明显,但是活动很重要。 没有活跃的项目团队,您几乎没有机会修复所依赖项目的错误。 因此,请务必检查您正在考虑使用的任何项目的活动级别。

寻找合适的项目

有这么多选择,找到一个可以帮助您进行下一个开发工作的项目应该很容易,对吗? 大多数开放源代码伪造都提供项目搜索功能,其中一些具有比其他功能更全面的搜索功能。 以下是大型活动的简短列表:

  • 的GitHub
  • SourceForge ,
  • Google代码
  • Codeplex
  • 比特桶

您也可以在Stackoverflow.com上搜索或发布问题,以获取其他可能已解决类似问题的开发人员的建议。 您还可以搜索许多公共开源目录,以提供一些选项,包括:

  • Ohloh (550,000个项目)
  • Olex (33万个项目)
  • 静置 (120,000个项目)
  • (Maven)中央存储库
  • 自由软件基金会 (6850个项目)
  • osalt.com ( 〜500个项目)
  • EOS目录 (可用于企业的OSS)(约400个项目)

如果您正在寻找更特定的代码段,则可以选择使用代码搜索工具来发现满足您需求的项目。 以下是公共代码搜索选项的列表:

  • Ohloh代码 (16b + LOC)
  • 克鲁格
  • Codase (250m + LOC)
  • Grepcode (特定于Java)
  • 搜索码

选择“正确的”项目到目前为止,您可以看到有很多选项可以搜索开源项目。 但是,您如何选择既能解决您要解决的问题又具有适合您的用例的正确特性的“正确”项目? 在评估选项时,您需要考虑许多注意事项。 以下是我的清单,但您可能还有其他人:

  1. 使用哪些语言?
  2. 该项目使用哪个许可证?
  3. 文档外观如何?
  4. 该项目有多活跃?
  5. 项目维护得如何?
  6. 该代码是否在其他地方被广泛使用
  7. 这个项目有多大,有多复杂?
  8. 是否存在已知的安全漏洞?
  9. 有未决诉讼吗?
  10. 有商业支持吗?
  11. 您有出口要求吗? 项目是否使用加密?
  12. 代码的质量是什么?

其中一些比其他更容易回答。 虽然您可以下载代码并查看代码来确定事情,例如所使用的语言,大小和复杂性以及代码质量,但其他代码的编写则有些棘手。 例如,在整个依赖关系链中跟踪许可证; 找出项目的活跃度和维护程度; 广泛使用; 广泛采用; 诉讼等。 这是尝试为您提供有关如何回答问题的指导。

轻松的人

您可以使用一种代码搜索工具或通过下载源来回答这些问题:

  • 使用哪些语言?
  • 该项目使用哪个许可证? 或检查项目目录,例如Ohloh,OLEX等。
  • 文件如何? 在Wiki中查看,查看代码以获取注释,或检查Ohloh(包含注释)
  • 这个项目有多大,有多复杂?

更难一点(但仍然可用)

  • 是否存在已知漏洞? ( 通过国家漏洞数据库
  • 项目维护得如何? 检查错误库,查看有多少个高优先级错误已打开以及持续了多长时间
  • 该项目有多活跃? 活动提交者和提交流的数量将在这里为您提供帮助(Ohloh为您汇总了此数据)
  • 该代码是否已在其他地方广泛使用? 搜索StackOverflow,Google并下载统计信息

艰难的问题

  • 有未决诉讼吗? Google搜索项目名称和“诉讼”
  • 有商业支持吗? 美国的Credativ和OpenLogic等公司支持部分FOSS项目。
  • 项目是否使用加密? 有时,这会记录在项目站点上,否则请自己探索该项目。
  • 代码的质量是什么? 有限数量的项目具有Coverity提供的代码质量审核。

批准书

您的组织可能已经制定了有关许可证和项目中可以使用的项目类型的政策和指南。 许多组织都有正式的批准流程(某些组织比其他组织更手动。)您可以提供给批准机构的信息越多,批准请求的速度就越快。

事先了解您的政策非常重要,这样您就不会浪费时间去浪费那些有明显理由被拒绝的项目。 如果您使用大量开放源代码,请探索采用自动化解决方案以加快流程,这可能会带来很大的不同。 一些可用的工具可以通过在构建过程中检测新的开源组件来自动启动该过程。 根据您的环境,您也许可以真正简化整个过程。

跟踪您的开源使用

知道您正在使用哪种 FOSS以及在哪里都使用它是非常重要的。 安全漏洞通常在生产后报告,因此您需要能够快速,轻松地找到整个应用程序组合中特定组件的所有实例。

随之而来的其他问题包括许可证问题,新版本和错误修复。 从简单的列表/电子表格选项到集成到选择和批准过程中的更为复杂的目录,有几个选项可用于跟踪您的开源。 根据组织的规模和复杂性,除了使用的开源组件和应用程序数量外,您还可以决定最佳方法。 最重要的是首先实施勤奋的跟踪方法。

您是开源的Freeloader吗?

Eclipse基金会营销副总裁Ian Skerrett撰写了一篇很棒的博客,标题为“ 如何使用开源Freeloaders” 。 他在博客文章开头说:“有时,从事开源项目的人会为很多组织使用开源项目的输出而没有回馈而感叹。” 事实证明,开源项目用来衡量其成功的重要指标之一是拥有的用户数量。 让我们面对现实吧–“开源”几乎是每个人都从开源世界开始的地方。 因此,成为一个免费的加载者并不是一件坏事。 但是重要的是要看一看为什么随着时间的流逝对您正在使用的某些项目做出贡献很重要。

使用开源的人们在学习如何利用开源的过程中遵循“生命周期”。 看起来类似于图4

图4:开源生命周期

最初使用开源可能是机会主义的,因为您正在寻找一种使用其他人编写的代码来节省时间的方法。 在每个任务的基础上,您将决定是否使用开源,并且收益通常在整个项目开发中都是未计划的。

一段时间之后,您开始意识到,除了节省时间以外,使用开源可以使您腾出更多时间来创新对您的业务至关重要的代码。 然后,您很可能会开始将开源作为核心开发策略的一部分。

做出此决定时,您将围绕开源使用实施更正式的政策,并促使您的开发团队在项目中尽可能频繁地使用开源。 而且,一旦您启动并运行了开源策略,您就会很快意识到,帮助修复错误并为您依赖的关键开源组件做出贡献可以帮助您远离分叉的项目。 反过来,这有助于减少组织的维护成本。 否则,如果您修改并分叉代码库,那么您将永远受其困扰。 此外,您会很快发现社区可以帮助您完善和改进所需的新功能。

启动和管理项目–重要与战略

当您意识到启动和管理开源项目可以使您利用更广泛的社区来推动重要但对您的业务不具有战略意义的技术的发展时,您将进入开源之旅的最后一站。

Hadoop是一个很好的例子。 雅虎! 需要能够在其组织内管理大数据。 尽管很重要,但该公司很快意识到大数据对其业务没有战略意义。 很快,雅虎! 意识到其他人有兴趣。 通过开源Hadoop,该公司发现它能够更快地推进Hadoop项目(仍然以大致相同的方式进行投资),从而使它能够更快地建立更广泛的Yahoo!。 依赖Hadoop的平台。

如果您创建的技术对您的事业很重要,但与竞争优势无关,那么将项目带入开源世界可以帮助您加速项目,并避免陷入对您的业务没有战略意义的技术的困扰。

开源机会

开源世界正以前所未有的速度增长。 各种规模的公司都意识到使用开源不再是一种选择,而是在当今市场上竞争的必要条件。

作为开发人员,您的价值取决于您浏览,采用,管理和参与开源世界的能力。 无论您是使用,贡献还是管理自己的开源项目,与开源社区进行互动都至关重要。 并且,如果您今天仅使用OSS,请寻找机会加入社区并开始做出贡献。 您不仅会变得更加有价值和相关,而且还将学习解决软件问题的新方法并扩大开发人员网络,这些开发人员可以帮助您提高市场价值。

作者简介Dave Gruber是Black Duck的开发人员计划主管。 他在软件开发方面具有广泛的背景,在企业应用程序开发,IT管理,产品管理和产品营销方面拥有30多年的经验。 Gruber是Web基础架构和开发技术的早期开拓者,曾在Allaire,Macromedia和Adobe等公司工作。 在Black Duck,Gruber致力于推向市场的战略和计划,重点是帮助开发人员获得对开源软件世界的更大可见性和洞察力,从而加快开发速度。

本文发表在《 JAX杂志:齐心协力》中。 对于该问题和其他问题,请单击此处。

预告片图片由dlofink提供

翻译自: https://jaxenter.com/foss-a-java-developers-best-friend-106259.html

foss测试

foss测试_FOSS – Java开发人员的最好朋友相关推荐

  1. java 集成开发工具_最好的Java开发人员测试和集成工具

    java 集成开发工具 通过从您的应用程序学习企业APM产品,发现更快,更有效的性能监控. 参加AppDynamics APM导览! 无论您是刚刚起步还是已经从事了一段时间,使用正确的工具进行编程都可 ...

  2. 最好的Java开发人员测试和集成工具

    通过从应用程序中学习企业APM产品,发现更快,更高效的性能监控. 参加AppDynamics APM导览! 无论您是刚开始还是已经使用了一段时间,使用正确的工具进行编程都可以对项目的成功产生巨大的影响 ...

  3. Java开发:哪些技能测试来评估Java开发人员的技能?

    在创建你的 Java 开发人员团队时,你可能最终会遇到一些糟糕的候选人,他们可能有资格但没有所需的技能.在这种情况下,你最终会蒙受损失,因为你需要时间和资源来训练他们,因为你希望他们为你的项目提供帮助 ...

  4. 恒生java开发复试_2019恒生电子面试经验(JAVA开发人员,实施工程师等)

    为了帮助职业圈网友能够及时了解恒生电子的面试流程以及面试过程所涉及的面试问题,职业圈小编把2019最新恒生电子面试经验编辑好,马上提供给大家,以便能够尽快帮助到有需要的人.文章中还为你提供恒生电子面试 ...

  5. 优秀的Java开发人员必备的6个技能

    作为历史最为悠久的编程语言,Java的发展势头一直非常好.而Java从业人员的选择范围也非常多,大致上可以将Java开发人员分为两类,一类是技术人员,一类是管理人员.无论是哪一类,想要成为一名优秀的J ...

  6. Java开发人员在编程中常见的雷!

    身为一名Java从业人员,其职场生涯就是一边踩"坑",一边上升的过程.这个过程中不仅要学会修改无数bug,也要学会越过很多"坑".今天,千锋老师为大家分享一些J ...

  7. 分享一些Java开发人员在编程中最容易踩雷的地方!

    身为一名Java从业人员,其职场生涯就是一边踩"坑",一边上升的过程.这个过程中不仅要学会修改无数bug,也要学会越过很多"坑".今天,小千为大家分享一些Jav ...

  8. 一些Java开发人员在编程中常见的雷!

    身为一名Java从业人员,其职场生涯就是一边踩"坑",一边上升的过程.这个过程中不仅要学会修改无数bug,也要学会越过很多"坑".今天,小千为大家分享一些Jav ...

  9. Java开发人员必备的7大技能,每一个都必不可少

    Java存活这么多年,目前Java软件开发工程师已经成为"香饽饽"了,工作环境好,就业薪资高,成为很多门外汉羡慕的对象,确实Java已经成为比较受欢迎的编程语言.可以说当下Java ...

最新文章

  1. 报错:failed to get the task for process XXX(解决方案)
  2. ArcGIS实验教程——实验十三:栅格空间插值分析
  3. 快报:Python 被爆重大“黑料”!程序员:劲爆!
  4. leetcode python3 简单题35. Search Insert Position
  5. Python使用XGBoost
  6. 使用shell创建一个简单的菜单bash select用法
  7. LaTeX 排版(二)——排版数学公式
  8. python使用numpy的np.mod函数计算numpy数组除以某一特定数值剩余的余数(remainder)、np.mod函数和np.fmod函数对负值的处理方式有差异
  9. 小写转大写金额 php,php小写金额转大写
  10. 【原创】微信双开是定时炸弹?关于非越狱iOS上微信分身高危插件ImgNaix的分析
  11. MSDC 4.3 接口规范(12)
  12. 阿里云疯狂促销 公有云之战刚鸣枪
  13. 计算机黑屏无法唤醒,联想笔记本睡眠中的黑屏无法唤醒,重启计算机或黑屏,该如何处理?...
  14. 安装程序向硬盘复制文件是遇到错误:[Errno 5] Input/out error ;U盘安装Ubuntu18.04.1遇到错误
  15. ctfshow-29-170
  16. 计算机看不了pdf,电脑桌面变成pdf打不开怎么办
  17. 猿人学12题超详细解题思路-入门级js(base64编码)
  18. 【ybt金牌导航8-3-3】【luogu P4593】分数计算 / 教科书般的亵渎(数学)(拉格朗日插值)
  19. vulnhub之hacksudo FOG
  20. shsh备份工具_升级iOS13上当,这个工具可以随机降级系统

热门文章

  1. 策略模式——实现促销活动
  2. 直播 TikTok Shop 2022最新玩法 卡位海外直播电商新流量
  3. 【C++】类的朋友(friend)
  4. 就很凸然,电脑里多出了一个文件···
  5. 原型和Axure的作用
  6. 数据完整性和Oracle的约束
  7. Node.js bull Redis连接数过多
  8. Json完整版介绍和工具类解析应用
  9. 服务器端接华为sdk无响应,关于sdk:华为SDC-SDK的踩坑记录
  10. (自适应手机端)响应式勘察设计院蓝色网站pbootcms模板 政府单位商会协会网站源码下载