GitHub于周四发布了年度开发者报告,其中一些对全球开发人员和开源社区的见解特别有趣。

自 2008 年推出以来,GitHub 已经成为互联网上最大的项目管理和开源协作平台,到今年为止,社区已经拥有5600万开发者,去年这个数据是4000万。假设保持这样的增长速率,GitHub用户预计将在2025年达到一个亿。

2020年,开发人员共创建了6000万个新repo库,相比去年增加了35%。其中与Covid-19相关的有5646个。

1预测来自中国的开源贡献者将持续增加          TypeScript超越C++成第四大语言!无惧中国开源托管平台竞争:GitHub发布2020年开发_java

2015年,大多数开源贡献者来自美国,占据整体数量的30.4%。其次是来自德国和英国的开发者,分别占据7.3%和5.8%。 

2020年,来自美国的开源贡献者已降至22.7%。来自中国的开源贡献者有了大幅提升,达到9.76%。 

虽然中国加快了建设开源代码托管平台的行动,但GitHub似乎对此并不太担忧。他们展望2025年,认为如果开发人员达到一个亿,预计来自美国的开发者会降至并稳定在16.4%,而来自中国的开源贡献者会增加到13.3%。

2开发语言  

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个项目为: 

     

3与疫情相关的开源贡献   

COVID是GitHub上一个新兴的社会公益性社区,主要由开发人员构成,活跃高峰在2020年初。GitHub将COVID和成熟的TensorFlow社区进行了比较展示。       TypeScript超越C++成第四大语言!无惧中国开源托管平台竞争:GitHub发布2020年开发_java_02

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

4业余时间更多地用在了开源  

很多开发者在过去一年开启了在家办公模式,这使得开发者工作和生活之间的界限变得模糊,无形中也增加了开发者的工作量。尚不清楚开发人员是在利用灵活的工作计划,还是在更长的时间内扩展相同数量的工作。但是,在某些情况下,工作量会增加。开发者平均每周要多工作1~2个小时。

虽然工作时间更长,但开发者在开放源项目上花费的时间也更多:企业开发人员的活跃度在周末和节假日下降。与此同时,开源活动在周末和假期猛增。自4月份以来,开源项目的创建也比去年同期增长了25%。 

      TypeScript超越C++成第四大语言!无惧中国开源托管平台竞争:GitHub发布2020年开发_java_03

2020 年,开发者做了更多的工作,存储库的创建数量比上一年增长了 35%。而疫情爆发的爆发刺激了用户每天GitHub上创建问题。 

疫情爆发之前,GitHub上用户每天创建的问题数量少于或等于前一年数量。但在疫情爆发后(3月中旬)问题创建量超过了前一年,并在分析期间内一直保持。所有存储库中的问题创建率都有所增加,其中最大的增长出现在由免费开发人员和付费团队帐户的存储库中。

5灵活的方式提高生产力  

根据分析英国时区、美国东部时区、美国太平洋时区和日本标准时区中代表性组织的情况发现,开发者普遍在周一的平均开发工作时间较短,但在周六、周日都会做开发工作,而且跟周一的时间相差无几。与其他时区相比,美国太平洋时区的开发工作时间在周二至周五显著增加。

             

开发工作量方面,日本标准时区的人均工作量最均衡,是最可持续的开发工作方式。而美国太平洋时区的人均工作量最高,这可能是由于互联网公司的过度加班文化或需要跨时区工作相关。

虽然工作方式发生了转变,人们仍保持了一定的开发活跃度,甚至活跃度有所增加。相比去年,开发者对开源项目的贡献度增加了25%。

       

基于云的开发为人员、团队和组织提供了更稳定和更有弹性的开发。同时,自动化可以提高生产力并改善开发人员的体验。pull requests merge时间减少了18%,但数量增加了34%。灵活的工具、工作方式和解决方案可以支持开发人员的生产力,甚至在“中断”状态下仍继续创新。

提高生产效率和避免倦怠Tips:每天花点时间思考自己的事儿;可以根据自己的精力调整工作安排;安排灵活且可持续的工作时间。

6JavaScript 和 Ruby 正面临最紧迫的开源安全风险   

当然,即使是GitHub平台上的开发人员已经超过5600万,但是对于这样一群数量庞大的开发人员而言,发布开源代码却并不意味着他们会自动检查代码是否存在安全问题。尽管开放源代码是一件好事,但是开源代码的安全性问题一直是一个令人头疼的问题。

GitHub特别分析了开源软件的依赖关系以及这些依赖项中的漏洞,同时对平台上支持的六个软件包生态系统提供的数据进行了分析研究,在进一步了解全球性开源项目安全性趋势的同时,并对重要重大安全漏洞项目及其开发人员给予警示和修改代码提示。

与2019年相比,GitHub发现,现在94%的项目依赖开源组件,平均接近700个依赖项。最常见的是,JavaScript中有94%的开源依赖关系,而Ruby和.NET中有90%的开源依赖关系。  

       TypeScript超越C++成第四大语言!无惧中国开源托管平台竞争:GitHub发布2020年开发_java_04

在公开项目之前的四年中,这些漏洞在开放源代码项目中长期未被发现。然后通常会在一个多月内获得一个修复程序,GitHub表示“这表明改善漏洞检测的机会非常明显”。

与此同时,报告还指出,开源软件中的大多数错误都不是恶意的。取而代之的是,GitHub发出的警报中有83%是由错误和人为错误引起的——尽管这些错误仍然有可能被出于恶意目的人员利用。 此外,还有17%的漏洞被认为是恶意的(例如后门植入),但这些漏洞目前仅触发了0.2%的警报,因为它们大多数存在于废弃或很少使用的程序包中。 

      TypeScript超越C++成第四大语言!无惧中国开源托管平台竞争:GitHub发布2020年开发_java_05开源社区现在在软件开发中起着关键作用,但与其他行业一样,漏洞也将存在。GitHub表示,项目开发人员、维护人员和用户应定期检查其依赖项是否存在漏洞,并应考虑实施自动警报以更有效,更快速地解决安全问题。 据GitHub表示,该平台上59%的开源项目将在2021年收到来自GItHub发出的安全警报。而Ruby和JavaScript最有可能在今年提前收到警报提示。 

针对开源软件漏洞普遍存在的难题,使用自动警报和补丁工具快速保护软件安全正在变得越来越为重要。据该报告还进一步敦促开发人员使用自动化工具来补救漏洞并保持开源软件安全。

 “自动生成pull requests 以更新易受攻击的依赖项的开源项目,他们对软件打补丁的速度是不自动更新的开源项目的1.4倍,自动化的安全工具可帮助开源项目的团队保护代码。”该报告的作者补充说道。