GitHub 于周四发布了年度开发者报告,其中一些对全球开发人员和开源社区的见解特别有趣。
自 2008 年推出以来,GitHub 已经成为互联网上最大的项目管理和开源协作平台,到今年为止,社区已经拥有 5600 万开发者,去年这个数据是 4000 万。假设保持这样的增长速率,GitHub 用户预计将在 2025 年达到一个亿。
2020 年,开发人员共创建了 6000 万个新 repo 库,相比去年增加了 35%。其中与 Covid-19 相关的有 5646 个。
预测来自中国的开源贡献者将持续增加
2015 年,大多数开源贡献者来自美国,占据整体数量的 30.4%。其次是来自德国和英国的开发者,分别占据 7.3%和 5.8%。
2020 年,来自美国的开源贡献者已降至 22.7%。来自中国的开源贡献者有了大幅提升,达到 9.76%。
虽然中国加快了建设开源代码托管平台的行动,但 GitHub 似乎对此并不太担忧。他们展望 2025 年,认为如果开发人员达到一个亿,预计来自美国的开发者会降至并稳定在 16.4%,而来自中国的开源贡献者会增加到 13.3%。
开发语言
GitHub 中排名前 10 位的语言为:JavaScript,Python,Java,TypeScript,C#,PHP,C ++,C,Shell 和 Ruby。GitHub 根据标记有该语言的公共和私有存储库的唯一贡献者数量进行排名。
其中,TypeScript 的受欢迎程度急剧攀升。TypeScript 是一门比较年轻的语言,发行到现在只有八年时间,但它继承了 JavaScript 的部分人气。TypeScript 只需编译一次,就可以在服务器、浏览器或你喜欢的任何地方来运行它。在某些领域,TypeScript 是不可避免的,这也就导致了 TypeScript 在最近 4 年中受欢迎程度极速上升。
Python 在 GitHub 上的排名保持在了第二位,并且 Python 已经在多种场景中得到了使用。来自 202 个国家和地区的 361,832 位贡献者维护了超过 266,966 个 Python 软件包。
在过去的 12 个月中,贡献者数量最高的 12 个项目为:
与疫情相关的开源贡献
COVID 是 GitHub 上一个新兴的社会公益性社区,主要由开发人员构成,活跃高峰在 2020 年初。GitHub 将 COVID 和成熟的 TensorFlow 社区进行了比较展示。
TensorFlow 社区有 11200 多个依赖项,将近 38 万名贡献者。 COVID 社区有 11,700 多个依赖项,近 38.3 万位贡献者,并吸引了全球 200 多个国家或地区的关注。在 TensorFlow 社区中,新成员很少推送代码。但在 COVID 社区中,新成员不仅会创建问题并对其进行评论,而且比老成员更为频繁地推送代码。
其中排名前 10 的依赖项为:
1 DefinitelyTyped/DefinitelyTyped
2 feross/safe-buffer
3 visionmedia/debug
4 lodash/lodash
5 vercel/ms
6 isaacs/inherits
7 jshttp/mime-db
8 ChALkeR/safer-buffer
9 npm/node-semver
10 jshttp/mime-types
业余时间更多地用在了开源
很多开发者在过去一年开启了在家办公模式,这使得开发者工作和生活之间的界限变得模糊,无形中也增加了开发者的工作量。尚不清楚开发人员是在利用灵活的工作计划,还是在更长的时间内扩展相同数量的工作。但是,在某些情况下,工作量会增加。开发者平均每周要多工作 1~2 个小时。
虽然工作时间更长,但开发者在开放源项目上花费的时间也更多:企业开发人员的活跃度在周末和节假日下降。与此同时,开源活动在周末和假期猛增。自 4 月份以来,开源项目的创建也比去年同期增长了 25%。
2020 年,开发者做了更多的工作,存储库的创建数量比上一年增长了 35%。而疫情爆发的爆发刺激了用户每天 GitHub 上创建问题。
疫情爆发之前,GitHub 上用户每天创建的问题数量少于或等于前一年数量。但在疫情爆发后(3 月中旬)问题创建量超过了前一年,并在分析期间内一直保持。所有存储库中的问题创建率都有所增加,其中最大的增长出现在由免费开发人员和付费团队帐户的存储库中。
灵活的方式提高生产力
根据分析英国时区、美国东部时区、美国太平洋时区和日本标准时区中代表性组织的情况发现,开发者普遍在周一的平均开发工作时间较短,但在周六、周日都会做开发工作,而且跟周一的时间相差无几。与其他时区相比,美国太平洋时区的开发工作时间在周二至周五显著增加。
开发工作量方面,日本标准时区的人均工作量最均衡,是最可持续的开发工作方式。而美国太平洋时区的人均工作量最高,这可能是由于互联网公司的过度加班文化或需要跨时区工作相关。
虽然工作方式发生了转变,人们仍保持了一定的开发活跃度,甚至活跃度有所增加。相比去年,开发者对开源项目的贡献度增加了 25%。
基于云的开发为人员、团队和组织提供了更稳定和更有弹性的开发。同时,自动化可以提高生产力并改善开发人员的体验。 pull requests merge 时间减少了 18%,但数量增加了 34%。灵活的工具、工作方式和解决方案可以支持开发人员的生产力,甚至在“中断”状态下仍继续创新。
提高生产效率和避免倦怠 Tips:每天花点时间思考自己的事儿;可以根据自己的精力调整工作安排;安排灵活且可持续的工作时间。
JavaScript 和 Ruby 正面临最紧迫的开源安全风险
当然,即使是 GitHub 平台上的开发人员已经超过 5600 万,但是对于这样一群数量庞大的开发人员而言,发布开源代码却并不意味着他们会自动检查代码是否存在安全问题。尽管开放源代码是一件好事,但是开源代码的安全性问题一直是一个令人头疼的问题。
GitHub 特别分析了开源软件的依赖关系以及这些依赖项中的漏洞,同时对平台上支持的六个软件包生态系统提供的数据进行了分析研究,在进一步了解全球性开源项目安全性趋势的同时,并对重要重大安全漏洞项目及其开发人员给予警示和修改代码提示。
与 2019 年相比,GitHub 发现,现在 94%的项目依赖开源组件,平均接近 700 个依赖项。最常见的是,JavaScript 中有 94%的开源依赖关系,而 Ruby 和.NET 中有 90%的开源依赖关系。
在公开项目之前的四年中,这些漏洞在开放源代码项目中长期未被发现。然后通常会在一个多月内获得一个修复程序,GitHub 表示“这表明改善漏洞检测的机会非常明显”。
与此同时,报告还指出,开源软件中的大多数错误都不是恶意的。取而代之的是,GitHub 发出的警报中有 83%是由错误和人为错误引起的——尽管这些错误仍然有可能被出于恶意目的人员利用。 此外,还有 17%的漏洞被认为是恶意的(例如后门植入),但这些漏洞目前仅触发了 0.2%的警报,因为它们大多数存在于废弃或很少使用的程序包中。
开源社区现在在软件开发中起着关键作用,但与其他行业一样,漏洞也将存在。GitHub 表示,项目开发人员、维护人员和用户应定期检查其依赖项是否存在漏洞,并应考虑实施自动警报以更有效,更快速地解决安全问题。 据 GitHub 表示,该平台上 59%的开源项目将在 2021 年收到来自 GItHub 发出的安全警报。而 Ruby 和 JavaScript 最有可能在今年提前收到警报提示。
针对开源软件漏洞普遍存在的难题,使用自动警报和补丁工具快速保护软件安全正在变得越来越为重要。据该报告还进一步敦促开发人员使用自动化工具来补救漏洞并保持开源软件安全。
“自动生成 pull requests 以更新易受攻击的依赖项的开源项目,他们对软件打补丁的速度是不自动更新的开源项目的 1.4 倍,自动化的安全工具可帮助开源项目的团队保护代码。”该报告的作者补充说道。
评论