## 七. 开发者洞察 ### 7.1 开发者角色分析 本部分基于 GitHub 数据进行分析。我们基于GitHub用户在开源仓库中所触发的事件将GitHub用户分为探索者、参与者、开发者、维护者四个角色,四种角色定义为: | 角色 | 定义 | 含义 | | --- | --- | --- | | 探索者 | 对某一项目 star 项目的用户 | 表示用户对该项目有一定的兴趣 | | 参与者 | 对某项目有过 Issue 或者 Comment 行为的用户 | 表示用户参与该项目 | | 开发者 | 对某项目中有 PullRequest 的用户 | 表示用户对项目CodeBase贡献 | | 维护者 | 参与 PR-review 的用户 | 表示用户对项目有深度贡献 | 一般情况下,四种关系层层递进,结构如下图所示。基于所定义的角色体系,我们从角色数量、时间变化、开发者角色演化三个视角对GitHub全域项目中OpenRank排名前十的项目进行量化。项目排名见第二章。 ![image.png](https://cdn.nlark.com/yuque/0/2024/png/21501894/1704849815908-a5ba196c-ec66-48d0-b36b-d6fe3995f5a7.png#averageHue=%23828384&clientId=ubaf35f32-8b15-4&from=paste&height=666&id=vkyP8&originHeight=666&originWidth=1492&originalType=binary&ratio=2&rotation=0&showTitle=false&size=119354&status=done&style=none&taskId=uc8810660-e9f8-46a7-a10b-1b0c951457f&title=&width=1492) #### 各角色数量分布 | 仓库名 | 探索者 | 参与者 | 开发者 | 维护者 | | --- | --- | --- | --- | --- | | NixOS/nixpkgs | 6244 | 3381 | 3074 | 2638 | | home-assistant/core | 17778 | 9116 | 1230 | 905 | | microsoft/vscode | 20113 | 16027 | 525 | 339 | | MicrosoftDocs/azure-docs | 8939 | 2282 | 1591 | 610 | | pytorch/pytorch | 13237 | 6391 | 1230 | 685 | | godotengine/godot | 23426 | 7203 | 1020 | 569 | | flutter/flutter | 14056 | 11101 | 637 | 334 | | odoo/odoo | 5078 | 1841 | 930 | 570 | | digitalinnovationone/dio-lab-open-source | 3619 | 907 | 504 | 40 | | microsoft/winget-pkgs | 1852 | 1395 | 1384 | 286 | ![pie-simple.png](https://cdn.nlark.com/yuque/0/2024/png/21501894/1704902473252-c03e7bde-1a5f-4099-8633-0fdd2f63f5c4.png#averageHue=%23150a09&clientId=ue0662a33-544e-4&from=ui&id=ue3cc70a1&originHeight=1128&originWidth=1628&originalType=binary&ratio=2&rotation=0&showTitle=false&size=152221&status=done&style=none&taskId=u4d3ee67f-dce5-4461-813f-ebde388dd2a&title=) - 探索者的数量普遍较高,这表明这些项目受到了广泛的关注和支持。godotengine/godot、microsoft/vscode、home-assistant/core 探索者数量远超其他项目,说明了这三个项目受到广泛关注。 - microsoft/vscode是参与者与开发者人数差距最大的项目,而 microsoft/winget-pkgs 二者差距最小 - 维护者方面,NixOS/nixpkgs项目维护者最多,有 2638 人;digitalinnovationone/dio-lab-open-source 项目维护者数最少 #### 2023年各角色新增情况 角色新增的统计口径为:某用户在2023年之前不是某一角色,在2023年成为某一角色则为新增。 例如:A 2021 年给 B 项目提交了 PR,但是从未参与 Code Review 工作。2023 年 A review了一个 PR,则称 A 为新增维护者。以下是详细角色新增情况。 | 仓库名 | 新增维护者 | 新增开发者 | 新增参与者 | 新增探索者 | | --- | --- | --- | --- | --- | | NixOS/nixpkgs | 1226 | 1622 | 1591 | 3027 | | home-assistant/core | 538 | 808 | 4640 | 8998 | | microsoft/vscode | 263 | 394 | 10216 | 15746 | | MicrosoftDocs/azure-docs | 352 | 1420 | 3913 | 1579 | | pytorch/pytorch | 391 | 802 | 2083 | 13016 | | godotengine/godot | 386 | 708 | 2834 | 22996 | | flutter/flutter | 184 | 455 | 3954 | 13579 | | odoo/odoo | 244 | 453 | 472 | 4991 | | digitalinnovationone/dio-lab-open-source | 40 | 3611 | 732 | 504 | | microsoft/winget-pkgs | 231 | 957 | 485 | 1373 | ![bar-polar-real-estate.png](https://cdn.nlark.com/yuque/0/2024/png/21501894/1704866082042-a00ab4a2-e0ed-4a43-9985-f350c7048701.png#averageHue=%23070503&clientId=u1ffbc9d9-6a74-4&from=ui&height=1166&id=buYZR&originHeight=1166&originWidth=1486&originalType=binary&ratio=1&rotation=0&showTitle=false&size=124561&status=done&style=none&taskId=u5412a79e-d24b-4399-a29a-0b541766930&title=&width=1486) ##### 结果分析: 1. 新增探索者: - 最高新增 Stars 的仓库是 godotengine/godot,达到了22996。这与该仓库创建时间不长有关且影响力大有关 - digitalinnovationone/dio-lab-open-source 和 microsoft/winget-pkgs 的新增探索者最少,分别为504和1373。 2. 新增参与者: - 最高新增参与者的仓库是 microsoft/vscode,达到了10216。 - digitalinnovationone/dio-lab-open-source 的新增 Issues 最少,为732。 3. 新增开发者: - 最高新增开发者的仓库是 NixOS/nixpkgs,达到了1622。 4. 新增维护者: - 最高新增维护者的仓库同样是 NixOS/nixpkgs,达到了1226。 #### 开发者演化视角 开发者演化过程定义为一个开源社区中,有多少角色转向其他角色。由于开发者流失比较难定义,本报告中我们只度量转向跟深层次角色的开发者,即2023年前后属于不同的层级的开发者其2023年后所处角色层级更深入的开发者。例如某用户 2023 年以前是参与者 ,到了 2023 年该用户提出了自己第一个pr,从参与者转变为开发者,则为参与者者转变成开发者。 ![pie-roseType-simple (2).png](https://cdn.nlark.com/yuque/0/2024/png/21501894/1704865575868-9798ef9e-e9da-4bfb-be9e-76a8bf056ed7.png#averageHue=%23120e06&clientId=u1ffbc9d9-6a74-4&from=ui&id=K7kGj&originHeight=1166&originWidth=1486&originalType=binary&ratio=1&rotation=0&showTitle=false&size=115066&status=done&style=none&taskId=u80bb7672-4d85-41e6-8609-53be9ef69ca&title=) | 仓库名 | 开发者->维护者 | 参与者->开发者 | 探索者->参与者 | | --- | --- | --- | --- | | NixOS/nixpkgs | 254 | 122 | 168 | | home-assistant/core | 70 | 113 | 134 | | microsoft/vscode | 16 | 70 | 287 | | MicrosoftDocs/azure-docs | 129 | 169 | 21 | | pytorch/pytorch | 60 | 53 | 187 | | godotengine/godot | 63 | 131 | 330 | | flutter/flutter | 31 | 91 | 419 | | odoo/odoo | 55 | 19 | 32 | | digitalinnovationone/dio-lab-open-source | 0 | 0 | 0 | | microsoft/winget-pkgs | 49 | 11 | 18 | **结果分析:** - 在各社区中,我们可以观察到典型的漏斗模型,即从探索者到参与者,再到开发者和维护者的演化路径。以 godotengine/godot 为例,有 330 名开发者成功演化为维护者,131 名参与者演化为开发者,而 63 名探索者演化为参与者。这一趋势在其他社区也得到了体现,符合社区成员从初次探索到深度参与的一般发展过程。 - 在一些社区中,例如 NixOS/nixpkgs,我们观察到开发者向维护者的演化数量相对较大。在该社区中,254 名开发者成功演化为维护者,这可能代表相对高的 代码审查需求,鼓励更多的开发者深度参与到维护工作中。这种机制可能有助于提高社区代码的质量和稳定性。 - 在一些社区,例如 flutter/flutter 和 godotengine/godot,我们观察到相对较多的探索者成功转化为参与者。在 flutter/flutter 中,419 名探索者演化为参与者,而在 godotengine/godot 中,有 330 名探索者变为参与者。 ### 7.2 开发者工作时间分析 本小节对 GitHub 及 Gitee 开发者工作时间进行分析。本节时间默认使用UTC区时,相比东八区滞后 8 小时。数据默认使用min-max方法放缩到1-10区间 #### GitHub全域开发者工作时间分布 统计 GitHub 全域开发者工作时间,可以看出 GitHub 开发者工作时长分布在 6 时到 21 时更普遍,12 点更为集中,可能是受到定时任务的影响。周六周日相对更不活跃。 ![image.png](https://cdn.nlark.com/yuque/0/2024/png/21501894/1704949176089-9867076f-cfad-4e33-b4b7-81dff0b06d1f.png#averageHue=%23eee8e6&clientId=u8c476fd4-c3b1-4&from=paste&height=377&id=u0abf50f3&originHeight=753&originWidth=1962&originalType=binary&ratio=1&rotation=0&showTitle=false&size=163528&status=done&style=none&taskId=u6a088dae-20e0-4a2b-a34a-9dd7da147c1&title=&width=981) #### Gitee全域开发者工作时间分布![image.png](https://cdn.nlark.com/yuque/0/2024/png/21501894/1704949234650-de073818-fa2e-40ce-b2e8-7c25cce60518.png#averageHue=%23efe7e6&clientId=u8c476fd4-c3b1-4&from=paste&height=324&id=u613bd34f&originHeight=648&originWidth=1961&originalType=binary&ratio=1&rotation=0&showTitle=false&size=142933&status=done&style=none&taskId=u4c1725d2-d5b8-4ce5-97a8-fbf6181b67c&title=&width=980.5) - Gitee数据更符合东八区作息规律 #### 除去上述机器人的全域开发者时间分布 ![image.png](https://cdn.nlark.com/yuque/0/2024/png/21501894/1704949991745-db1a506c-178c-4971-9754-f6e7f473717a.png#averageHue=%23eadfdc&clientId=u8c476fd4-c3b1-4&from=paste&height=328&id=u248521b2&originHeight=655&originWidth=1967&originalType=binary&ratio=1&rotation=0&showTitle=false&size=157502&status=done&style=none&taskId=u5871641e-4b04-47ef-ac9a-1ade3c9e691&title=&width=983.5) 去掉机器人数据后发现开发者时间分布集中在 6 时- 21 时这个区间更为普遍,分布更加均匀。 以下为2023年度中国项目 OpenRank 前 4 名与全球 GitHub 仓库OpenRank前四名的对比。 NixOS/nixpkgs ![image.png](https://cdn.nlark.com/yuque/0/2024/png/21501894/1704949331516-3b91d628-cea7-4a2a-b9a8-df55d07bda25.png#averageHue=%23ece2df&clientId=u8c476fd4-c3b1-4&from=paste&height=333&id=uf77d60f8&originHeight=665&originWidth=1987&originalType=binary&ratio=1&rotation=0&showTitle=false&size=158756&status=done&style=none&taskId=u48fcd0c1-e75e-4b83-b59f-7841c2001f5&title=&width=993.5) home-assistant/core ![image.png](https://cdn.nlark.com/yuque/0/2024/png/21501894/1704949360112-546409e3-704a-4e84-8a3c-9409b57ae682.png#averageHue=%23e9dcd9&clientId=u8c476fd4-c3b1-4&from=paste&height=326&id=u539fc940&originHeight=651&originWidth=1959&originalType=binary&ratio=1&rotation=0&showTitle=false&size=156221&status=done&style=none&taskId=ue7c06363-e416-4861-b761-705ac1faecd&title=&width=979.5) microsoft/vscode ![image.png](https://cdn.nlark.com/yuque/0/2024/png/21501894/1704949386475-b6da0e58-8fd1-4df4-afc1-d4243ac85455.png#averageHue=%23f0ebe9&clientId=u8c476fd4-c3b1-4&from=paste&height=331&id=u1f409f9f&originHeight=662&originWidth=1963&originalType=binary&ratio=1&rotation=0&showTitle=false&size=142118&status=done&style=none&taskId=u084bf807-5eb6-4d8f-b4d1-872c3678278&title=&width=981.5) MicrosoftDocs/azure-docs ![image.png](https://cdn.nlark.com/yuque/0/2024/png/21501894/1704949413840-d04fbd4b-0319-4427-bb05-e01c1236247c.png#averageHue=%23f2efed&clientId=u8c476fd4-c3b1-4&from=paste&height=321&id=u0e7c72f9&originHeight=641&originWidth=1973&originalType=binary&ratio=1&rotation=0&showTitle=false&size=136813&status=done&style=none&taskId=u1a645881-19d1-4ae2-9418-cd9b9a1b087&title=&width=986.5) openHarmony ![image.png](https://cdn.nlark.com/yuque/0/2024/png/21501894/1704949459665-513b7693-d6d8-4406-aad8-e945a1404a68.png#averageHue=%23eee6e5&clientId=u8c476fd4-c3b1-4&from=paste&height=331&id=uf749fd7b&originHeight=661&originWidth=1976&originalType=binary&ratio=1&rotation=0&showTitle=false&size=143441&status=done&style=none&taskId=u5c01e755-5439-4674-958c-f47b57e1047&title=&width=988) openEuler ![image.png](https://cdn.nlark.com/yuque/0/2024/png/21501894/1704950072823-9fff8422-9d8f-4bd3-baec-bda10b2b91de.png#averageHue=%23f2eeed&clientId=u58bb5731-a988-4&from=paste&height=331&id=u35295ee6&originHeight=661&originWidth=1976&originalType=binary&ratio=2&rotation=0&showTitle=false&size=132573&status=done&style=none&taskId=u4ef78297-1998-4a97-8655-17570120fcd&title=&width=988) PaddlePaddle ![image.png](https://cdn.nlark.com/yuque/0/2024/png/21501894/1704949518694-bd072e4b-4e8d-4697-aae1-abd61588160d.png#averageHue=%23f5f3f3&clientId=u8c476fd4-c3b1-4&from=paste&height=331&id=ua7b81858&originHeight=661&originWidth=1988&originalType=binary&ratio=1&rotation=0&showTitle=false&size=128115&status=done&style=none&taskId=u4dab54ef-5c45-4c77-aa3d-6c759639d39&title=&width=994) MindSpore ![image.png](https://cdn.nlark.com/yuque/0/2024/png/21501894/1704949542742-24946c38-6a78-428e-9264-31ed1758eb9f.png#averageHue=%23efe7e6&clientId=u8c476fd4-c3b1-4&from=paste&height=327&id=u7be59fed&originHeight=654&originWidth=1980&originalType=binary&ratio=1&rotation=0&showTitle=false&size=136680&status=done&style=none&taskId=ub6a6b108-6425-4d01-970c-0bf4b1f7c02&title=&width=990) ### **7.3 开发者的地区分布** 通过采样229847个2023GitHub活跃用户(2023有日志事件记录的用户)的经纬度,将他们的位置展现在地图上可以直观地感受GitHub用户大致的地理位置分布。在人口数量众多且互联网发展较快的地区例如中国沿海地区、欧洲地区、美国、印度、巴西东南沿海地区有着最为密集的GitHub用户分布,在其他居住人口少或者互联网较不发达的地区则相对稀疏。 ## ![image.png](https://cdn.nlark.com/yuque/0/2024/png/32840817/1704784154908-8f003a12-a30d-4b84-b09c-1b9b1bca7330.png#averageHue=%23908645&clientId=u8caff82f-0939-4&from=paste&height=643&id=a78f7&originHeight=1286&originWidth=2402&originalType=binary&ratio=2&rotation=0&showTitle=false&size=452855&status=done&style=none&taskId=u91b4bbf2-e858-4dd4-a332-20c0babb238&title=&width=1201) 对于1296920个在个人信息中标注了国家信息的2023GitHub活跃用户的国家/地区分布中,可以发现美国的人数最多为236899,中国、印度和巴西则紧随其后,其他拥有一定人口数量和经济水平的国家例如加拿大、澳大利亚以及一些欧洲国家也拥有着较多的GitHub用户。 ![4b75da60555f4690275f362b10a2843.png](https://cdn.nlark.com/yuque/0/2024/png/32840817/1704883969507-405d3c43-206f-4311-9106-00f2b37e0ba3.png#averageHue=%232a2525&clientId=u5305120d-f6de-4&from=paste&height=997&id=u292432b0&originHeight=1246&originWidth=2095&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=299808&status=done&style=none&taskId=uf7a7faf6-6e29-47f4-a8d9-97215b4abb5&title=&width=1676) | **国家** | **数量** | | --- | --- | | United States | 236899 | | China | 113893 | | India | 107066 | | Brazil | 83932 | | Germany | 64836 | | United Kingdom | 55175 | | Canada | 42238 | | France | 40341 | | Russia | 31534 | | Japan | 21942 | 对于126245个在个人信息中标注了一级地理行政区的2023中国活跃GitHub用户的分布图中,可以发现北京拥有着国内最多的GitHub用户,其次是上海、广州和浙江。中国的大部分GitHub活跃用户都在东部沿海地区,中部的一些省份例如陕西、湖南、湖北也有拥有不少的活跃用户,值得注意的是四川是除了沿海地区以外拥有最多GitHub活跃用户的省份。 ![596a7c2d43ad94533bd240eb462e379.png](https://cdn.nlark.com/yuque/0/2024/png/32840817/1704883975712-0dde4912-a3f1-4ea9-b725-11d648713600.png#averageHue=%23181616&clientId=u5305120d-f6de-4&from=paste&height=1062&id=ubfe5a235&originHeight=1327&originWidth=2227&originalType=binary&ratio=1.25&rotation=0&showTitle=false&size=165245&status=done&style=none&taskId=u373050a2-bf91-4606-843d-4ca2d0aef67&title=&width=1781.6) | **地区** | **数量** | | --- | --- | | 北京 | 24151 | | 上海 | 18215 | | 广东 | 16153 | | 浙江 | 10927 | | 台湾 | 8823 | | 江苏 | 5437 | | 四川 | 5311 | | 香港 | 3344 | | 湖北 | 3273 | | 陕西 | 1993 | ### 7.4 机器人账号分析 机器人(bot)自动化是开源协作平台中的重要贡献力量,本部分分析了 2023 年全年近 6 亿条仓库事件,涉及 770 万开源仓库,以及 1200 多个机器人账号。 #### 7.4.1 机器人活跃数据分析 ![output](https://hackmd.io/_uploads/rJ5Myvwta.png) 2023年机器人事件占所有事件的比例 ![output](https://hackmd.io/_uploads/HkX-kvDYp.png) 年度机器人事件和整体事件的对比统计 分析 2015 年至 2023 年的机器人活动数据,部分观察如下: 机器人事件数量从 4,217,635 个增长至 304,257,084个,增长趋势显著 从 2019 年起,机器人事件数量急剧上升,尤其是在GitHub平台 2019 年至 2021 年间,GitHub 上机器人账号活动量呈现爆炸式增长 增长是由于 GitHub 自动化、持续集成/持续部署(CI/CD)工具的普及和完善有关 尽管机器人账号数量不多,但每个机器人服务于多个仓库,展现出高效率和广泛影响力 #### 7.4.2 机器人事件类型分析 ![image](https://hackmd.io/_uploads/Sk85TdQta.png) 年度增长率(%)和 GitHub 事件计数的数量差异(2022 vs 2023) 这幅图表展示了2022年与2023年间GitHub各事件类型的数量变化及其增长率。通过对比这两年的数据,我们可以洞察机器人账号在开发流程中的使用趋势: 1. 活动类型的持续趋势: PushEvent(推送事件):在两年中都是最常见的事件类型,2023年数量更是大幅上升至1.85亿次,表明代码推送是GitHub最核心的活动之一。 CreateEvent(创建事件):在2022年是第二常见的事件类型,数量超过5.32亿次,但在2023年有所减少。这可能表明了项目创建活动的一定减缓。 2. 协作与审查活动的重要性: PullRequestEvent和IssueCommentEvent:这两种事件在2022年和2023年均非常常见,数量分别为6599万和3414万次(2022年),3125万和2487万次(2023年),突显了GitHub在协作和代码审查方面的活跃度。 活动类型的显著变化: DeleteEvent(删除事件):在2022年有2339万次,而在2023年减少至1425万次,显示出项目删除活动有所下降。 ReleaseEvent(发布事件):这类事件在2023年有所增加,从2022年的273万次增至351万次,反映出更频繁的软件版本发布。 3. 注释相关事件的变化: CommitCommentEvent和PullRequestReviewCommentEvent:这些与代码审查和讨论相关的事件在2023年都有所增加,显示出更加活跃的代码审查和讨论过程。 4. 较少见的事件类型: GollumEvent涉及Wiki页面的创建或编辑,MemberEvent在新团队成员被添加到项目时触发。PublicEvent事件在私有仓库转为公开时触发。WatchEvent在用户关注(Star)仓库时触发。这些事件的数量非常低,表明机器人账号主要用于特定的自动化任务,如代码推送和自动回复,而在项目管理或社交互动方面的参与相对较少。 5. 季节性或年度趋势的可能性: 某些事件类型(如CreateEvent和DeleteEvent)在2022年和2023年的数量有显著差异,这可能反映出GitHub用户行为的季节性或年度趋势。 #### 7.4.3 机器人账号工作时间分布 类似开发者工作时间分布,可以对机器人的工作时间数据进行分析。 ![image](https://hackmd.io/_uploads/SJvXRdQta.png) 机器人账号工作时间分布 - 机器人账号的工作时间分布主要集中在凌晨 0 点至 1 点和中午 12 点至 13 点 - 根据全域开发者时区可以推测大多数自动化流程在凌晨和中午时段较为活跃 - 机器人工作活跃时间与工作日和非工作日相关度较小,大多数自动化协作任务为定时任务,较少的自动化任务与对贡献者的活动事件产生响应有关