# 项目清单列表 ## 开源项目榜单 * [x] [开源项目榜单](./ranks/%E5%BC%80%E6%BA%90%E9%A1%B9%E7%9B%AE%E6%A6%9C.csv) * [ ] 个人向主要开源技术栈贡献榜单 * [ ] 个人向国际主要开源技术栈贡献榜单 * [ ] 个人向中国主要开源技术栈贡献榜单 * [ ] 公司向主要开源技术栈贡献榜单 * [ ] 公司向国际主要开源技术栈贡献榜单 ## 项目目录结构说明 * `data/` 目录下是各种中间输入数据目录 * `ranks/` 目录下是榜单数据输出目录 * `src/` 是数据获取和榜单计算源代码目录,其中榜单计算代码是:`src/tasks/ranks.py` ## 项目配置和运行 1. python 3 环境 2. cd src/ 3. `pip install -r requirements.txt` 4. `python main.py -a task.ransks` ## 数据源 1. **Apache 基金会项目** ,GitHub Apache 组织下的所有项目,通过 GitHub API 获取,每个 Json 文件含 100 个项目; 1. **CNCF 基金会项目**,GitHub CNCF 组织下的所有项目,通过 GitHub API 获取,每个 Json 文件含 100 个项目; - 补充数据源: https://landscape.cncf.io/ 1. **LinuxFoundation 项目**, https://landscape.linuxfoundation.org/ ## 其它补充资料 1. **木兰Aarch64开源生态全景平台**,http://armlandscape.mulanos.cn/ 1. **LF AI & DATA 基金会项目**,https://landscape.lfai.foundation/ 1. **MySQL 项目**,待补充 1. **阿里大数据开源公示榜单**,https://shimo.im/docs/m8AZVb0n88Hg6oAb/ # 开源指数计算 ## 计算方法1 计算方法 1 是通过对项目各个数据因子进行加权计算得出的一个排名结果,具体的计算规则可参考[src/tasks/ranks.py](src/tasks/ranks.py) 方法 1 的结算结果详见 `ranks` 目录中的数据 ## 计算方法 2 1. 项目的受欢迎指数 P,指标包括:项目总 Star 数(S)、项目总 Fork 数(F)、项目总 Issue 数(I) - P = S * 0.5 + F * 0.3 + I * 0.2 2. 项目的活跃指数 A,指标包括:一段时间范围内(eg:1年)的项目主分支 Commit 数(c)、项目主分支新增 PR 数(p)、项目新增 Issue 数(i)、项目主分支贡献者 Contributor 数(d) - A = A = c * 0.4 + p * 0.2 + i * 0.2 + d * 0.2 3. 项目的一段时间范围内的趋势,包括: - 受欢迎指数变化趋势,以月为单位,最近 12个月项目的平均受欢迎指数的变化趋势 b(正的趋势>1 ,减弱的趋势 <1) - 活跃指数变化趋势,以月为单位,最近 12个月项目的平均活跃指数变化趋势 d (正的趋势 >1 ,减弱的趋势 <1 ) 4. 开源项目指数 = P * ATAN(b) + A * ATAN(d) 方法 2 的计算结果详见 [`data/csdn/gitcode_project_rank_top1000.csv`](data/csdn/gitcode_project_rank_top1000.csv) # 贡献者排行 基于 `data/CSDN/repo-commit-rank.csv` 的数据和通过该邮箱 commit 找到的对应 GitHub 用户的公开地址、公司信息,提取出地域为中国(有省份信息的需要标记到省份),然后得到国内开发者的贡献排行榜 基于仓库的 commit 汇总数据 & `RepoType-OSChina.xlsx` 开源项目分类情况,找到不同项目的开发者排行,然后根据 GitHub 用户信息得到不同项目的开发者排行 ## 数据介绍 > 补充说明: > > 1. 时间范围: 2020-10-1 至 2022-9-30 > 2. 趋势类的数据统计是以月为单位 ### CSDN 数据 - `data/CSDN/CSDN 指数.xlsx` : 开源项目关键词在 CSDN 内容社区的指数变化趋势,以月为单位;该数据主要用于计算项目排行榜 - `data/CSDN/repo-commit-rank.csv` :开源项目的提交排行榜(按邮箱);该数据用于爬虫抓取全部提交用户的 GitHub 用户信息 - `data/CSDN/repository_commit_events_20200930_analysis_new-demo.csv` : 全部 5000 + 开源项目的 commit 提交记录按项目/按邮箱的汇总表,完整数据会导入到数据仓库中;该数据用于计算 Top 项目的用户贡献排行(个人用户&公司用户) - `data/CSDN/commit_analysis.csv` : 全部 5000 + 开源项目最近24个月 `2020-10-1 ~ 2022-09-30` 的基于全部 commit 历史记录 汇总的 author_email 提交次数记录 ### PingCAP 数据 PingCAP 数据主要用于计算项目排行榜 - `data/PingCAP/项目活跃度变化.csv` :开源项目按月为单位统计的 push 次数、新增 PR 数、新增 Issue 数以及这 3类事件的除重用户数 - `data/PingCAP/项目受欢迎度变化.csv` :开源项目按月为单位统计的新增 Star 数和新增 Fork 数 - `data/PingCAP/近24个月的活跃数据总数.csv` : 开源项目近 24 个月的活跃指标数据总数,包括总的 push 次数、总的新增 PR 数、总的新增 Issue 数以及这 3类事件的除重用户数 ### 项目列表 - `data/RepoType.xlsx` :开源项目列表 - `data/RepoType-OSChina.xlsx` :开源项目列表的国别分类数据;该数据用于辅助区分项目的类型,包括国际主流开源项目、国内发起的国际开源项目以及主要在国内活跃的开源项目 ### GitHub 用户数据 - `data/GitHub/UserInfo.xlsx` : GitHub 用户信息;该数据用于通过 `UserInfo` 中的 `company` & `location` 字段来辅助判断用户的所属公司信息 以及 用户的地区信息(国外开发者 & 中国(含城市)的开发者) ## 数据处理流程 ![数据处理流程](data/CSDN/Processor.jpg) ## 报告出品方 - CSDN - GitCode - PingCAP - 北京大学软件与微电子学院 荆琦博士及其团队