22 年春季开源软件设计与开发课程仓库。
周数 | 日期 | 实验 |
---|---|---|
1 | 2 月 22 日 | |
2 | 3 月 1 日 | 实践作业 1 learn-git-branching |
3 | 3 月 8 日 | 实践作业 2 learn-git-branching (远程仓库部分) |
4 | 3 月 15 日 | 实践作业 3 Github Pages |
5 | 3 月 22 日 | 实践作业 3 Github Pages(分享与答疑) |
6 | 3 月 29 日 | 实践作业 4 Github Trend |
7 | 4 月 5 日 | 放假 |
8 | 4 月 12 日 | 实践作业 4 Github Trend(分享与答疑) |
9 | 4 月 19 日 | 实践作业 5 Github Action |
10 | 4 月 26 日 | 实践作业 6 期中报告 |
11 | 5 月 3 日 | 放假 |
12 | 5 月 10 日 | 实践作业 7 期末报告 |
13 | 5 月 17 日 | 实践作业 7 期末报告答疑 |
14 | 5 月 24 日 | 实践作业 7 期末报告答疑 |
- 期末作业成绩:40%
- 其中作业成绩:30%
- 平时作业成绩:20%
- 课堂考勤成绩:10%
id | a1 | a2 | a3 | a4 | a5 | a6 | a7 |
---|---|---|---|---|---|---|---|
10185501403 | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | |
10184800428 | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | |
10183901201 | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | |
10182100359 | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | |
10182100242 | ✔ | 🕘 | ✔ | ✔ | ✔ | ✔ | |
10182100208 | 🕘 | ✔ | ✔ | ✔ | ✔ | ✔ | |
10182100106 | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | |
10181900144 | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | |
10174507108 | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | |
10174102137 | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ | |
10174102126 | ✔ | ✔ | ✔ | ✔ | ✔ | ✔ |
习题地址:Learn Git Branching
要求范围:主要部分的 “基础篇”、“高级篇”、“移动提交记录”
提交地址:Issues · X-lab2017/22-Spring-OSDD (github.com)
提交形式:在 issue 的页面开启一个新的 issue,命名格式:Assignment-1 <学号>
。此后每完成一个任务点,就截取网页的图像发到 issue 中。(注意网页数据存储在浏览器,如果有清理浏览器缓存的习惯可能会丢失,所以请及时截图记录)
截止时间:当周周日晚上 24:00 点前,按时提交作业将作为平时成绩的参考。
实验目的:帮助同学复习常见的 Git 指令。作为课程任务会给大家合适的练习量,其余未指定的部分我也十分建议有时间都尝试一遍。
想要完整系统地了解 Git 的全部知识,助教个人还是推荐阅读开源教材 Git - Book (git-scm.com) (全书文本开放在线阅读,有社区提供的中文翻译)
接续作业 1 “Push & Pull —— Git 远程仓库”。
实践概述:参考教材 G4D 第四章至第五章,选择自己喜欢的静态网站生成方案,部署自己的 Github Pages。
具体要求:
- 包含任意一篇自己任意内容的文档。
- 安装个性化的样式。
提交地址:Issues · X-lab2017/22-Spring-OSDD (github.com)
提交形式:在指定 issue 内 评论自己 GitHub Pages 的链接与学号。
截止时间:下周周日晚上 24:00 点前。(暂定给两周的时间)
备注:假如同学已经提前有了自己的博客,可以提交自己已有的技术博客的链接。
作为工作量的替代,我们会邀请已有博客的同学上台来与大家分享以下几点:
- 什么时候开始的?
- 驱动自己去折腾个人博客的动力是什么?
- 采用了什么样的技术方案?
- 最近写了哪些内容,简单介绍介绍。
实验概述:挑选开源项目,从一些角度进行分析,准备下次课堂的 5 分钟左右的分享。
提交形式:在指定 issue 内 评论自己选定的仓库链接与学号。(早点选定防止和他人重复)
截止时间:当周周日晚上 24:00 点前。(一周时间)
切入点:
- 仓库的主要内容
- 仓库的主要贡献者
- 仓库在当时火热的原因
以下表是 Open Digger 社区提供的 2021 年每个月份热度较高项目的名单,同学可以用来参考:
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
---|---|---|---|---|---|---|---|---|---|---|---|
coder2gwy/coder2gwy | conwnet/github1s | GorvGoyl/Clone-Wars | QuantumClient/Energy | ant-design/ant-design | ibraheemdev/modern-unix | flightlessmango/MangoHud | public-apis/public-apis | VickScarlet/lifeRestart | WorkerLivesMatter/WorkingTime | AppFlowy-IO/appflowy | TencentARC/GFPGAN |
kamranahmedse/developer-roadmap | JonnyBurger/remotion(没了) | microsoft/Web-Dev-For-Beginners | jwasham/coding-interview-university | google/zx | jwasham/coding-interview-university | microsoft/ML-For-Beginners | microsoft/Web-Dev-For-Beginners | public-apis/public-apis | public-apis/public-apis | remix-run/remix | Eugeny/tabby |
signalapp/Signal-Android | nasa/fprime | dolthub/dolt | kamranahmedse/developer-roadmap | slidevjs/slidev | public-apis/public-apis | public-apis/public-apis | jpochyla/psst | narze/THIS_REPO_HAS_2306_STARS | microsoft/Data-Science-For-Beginners | microsoft/ML-For-Beginners | aplus-framework/app |
kettanaito/naming-cheatsheet | tauri-apps/tauri | docker/awesome-compose | EbookFoundation/free-programming-books | jwasham/coding-interview-university | trimstray/the-book-of-secret-knowledge | jwasham/coding-interview-university | commaai/openpilot | EbookFoundation/free-programming-books | louislam/uptime-kuma | sindresorhus/awesome | sindresorhus/awesome |
pavlobu/deskreen | danistefanovic/build-your-own-x | kuchin/awesome-cto | public-apis/public-apis | public-apis/public-apis | PaddlePaddle/PaddleNLP | mrpond/BlockTheSpot | EbookFoundation/free-programming-books | microsoft/ML-For-Beginners | trekhleb/javascript-algorithms | donnemartin/system-design-primer | EbookFoundation/free-programming-books |
labuladong/fucking-algorithm | EbookFoundation/free-programming-books | trekhleb/javascript-algorithms | Chia-Network/chia-blockchain | dogecoin/dogecoin | rustdesk/rustdesk | microsoft/IoT-For-Beginners | babysor/Realtime-Voice-Clone-Chinese | 30-seconds/30-seconds-of-code | sindresorhus/awesome | tldraw/tldraw | donnemartin/system-design-primer |
Developer-Y/cs-video-courses | RealPeha/This-Repo-Has-204-Stars | sickcodes/Docker-OSX | TheAlgorithms/Python | nocodb/nocodb | EbookFoundation/free-programming-books | deepmind/alphafold | microsoft/ML-For-Beginners | mgdm/htmlq | ossu/computer-science | github/copilot-docs | mkrl/misbrands |
ml-tooling/best-of-ml-python | ant-design/ant-design | public-apis/public-apis | GorvGoyl/Clone-Wars | EbookFoundation/free-programming-books | TuSimple/naive-ui | tenacityteam/tenacity | NvChad/NvChad | freeCodeCamp/freeCodeCamp | peng-zhihui/Dummy-Robot | OpenIMSDK/Open-IM-Server | kamranahmedse/developer-roadmap |
signalapp/Signal-Desktop | therealsreehari/Learn-Datascience-For-Free | benawad/dogehouse(仿 clubhouse) | donnemartin/system-design-primer | donnemartin/system-design-primer | peng-zhihui/XUAN-Bike | mvt-project/mvt(安全相关) | ibraheemdev/modern-unix | babysor/MockingBird | monicahq/monica | EbookFoundation/free-programming-books | AppFlowy-IO/appflowy |
danistefanovic/build-your-own-x | DidierRLopes/GamestonkTerminal | flutter/flutter | trekhleb/javascript-algorithms | Tencent/secguide | maaslalani/slides | bndw/wifi-card | trekhleb/javascript-algorithms | jwasham/coding-interview-university | appsmithorg/appsmith | vinta/awesome-python | mtdvio/every-programmer-should-know |
也可以参考一些网站提供的热度排名,比如 GitHunt – Trending Github Repositories,有更具体的时序数据。
实践概述: 创建一个仓库,存放至少一个 markdown 文件,借助 Github Action 的功能来实现自动格式转化。
具体表现为:每次 push 更新 markdown 的时候,Action 自动重新转换这个文件构建新的 pdf 存放到项目的 release 当中。
实践步骤:
- 创建仓库,命名不限。
- push 一个 markdown 文件到当前仓库中,内容随意,不建议太短。
- 在
.github/workflows
目录下创建your-action.yml
配置本项目的流水线。(这一步会比较花时间) - 在正确配置以后,push 更新 markdown 的内容,查看 Actions 页面是否增加了流水线的记录。(类似这样)
参考资料:
提交形式:在指定 issue 内 评论自己的仓库链接与学号。
截止时间:下次课程前一天晚上 24:00 点前。(一周时间)
其他信息:
Action 可以理解为一次性地租用 Github 的服务器,你可以配置这个服务器安装什么环境,执行什么命令。并且默认地,你的仓库的代码会存在于这个服务器当中。
当你有了环境和执行命的条件,就可以把许多重复性的任务从本地转移到服务器上。
比如要构建一个 release,可能每次更新都要重新构建,如果手动操作再上传的话,会有本地环境的不确定性,并且很麻烦。Action 就能解决这个问题。
当然,转化 markdown 并不复杂,当项目的编译过程更加复杂的时候,手动的代价就更高了。
网络上进行转化的方案有很多,甚至有现成的 Action 可以直接调用,同学可以根据自己情况选择适合的方案。常见的方案是借助 python 或者 pandoc 的 Action 指令。
感兴趣的话,而可以尝试更进阶的主题:借助脚本,合并多个 md 文档,产出一个 pdf。
实践概述:
GitHub 开源项目分析报告
内容包括但不限于以下几点,可以根据自身情况,添加其他有趣内容。
1、项目基础数据分析
项目简介,Star/Frok 数量,累计 Issue/PR 数量,累计贡献者数量,主要开发语言。
2、项目协作数据分析
列出 Top5 开发者/Top5 关联项目。(可借助 Hypercrx 插件)
并分析 top5 关联项目与本项目的关联原因。
3、项目文档内容分析
该项目是否有明确的 README/贡献指南能够让新手快速了解并明确向项目的贡献方式。
可以提出对项目文档和参与流程的建议。
4、项目实际体验分析
如果这个项目有落地的产品:例如在线网页/开源软件等,可以介绍产品的使用流程。
如果用流程较难描述,可以尝试观察这个开源项目的 github issues,总结近一个月内社区内最讨论最热烈的 3 个议题,附上 issue 链接和自己对该 issue 的简单看法。
如果条件允许,也可以提出自己的 issue 作为上述 3 个议题之一。
5、社区/项目推荐列表
GSoC 项目:https://summerofcode.withgoogle.com/programs/2022/organizations
开源软件供应链点亮计划:https://summer-ospp.ac.cn/#/org
提交形式:
向助教邮箱([email protected])发送本实验报告。
文件格式 <学号>-<姓名>.pdf
邮件标题 OSDD-6-<学号>-<姓名>
截止时间:下一周周末(五月八日)23:00 点
根据官方的解释,归档(Archive)是指当项目停止维护后将其设置为“只读”状态。
附录中提供了一批曾高度流行的 GitHub 归档项目列表,每位同学从其中选择一个项目进行分析,不能重复选择。
选择项目:
Assignment-7 · Issue #27 · X-lab2017/22-Spring-OSDD (github.com) (#27)
回复 issue 以选用项目,格式为 <序号> <项目id> <项目名>
,例如:3 2935735 adobe/brackets
提交文件:
<学号>-final-report.md
<学号>-data.ipynb
(根据选做情况可以没有)
请在 5 月 30 日(最后一次课之后)前提交到课程仓库。
提交形式:
- fork 课程仓库。
- clone 自己的 fork 到电脑。
- 创建分支
<学号>-final-report
。 - 把文件加入到
./final-report
目录下。 - commit, push。
- 在 GitHub 上上传分支,等待助教合入。
报告内容:
通过项目仓库的查阅,以及搜索引擎上项目的相关资料,给出项目一些基本的介绍:
- 技术类型
- 版本发布历史
- 主要贡献者的构成(国家、区域和组织等)
- CI/CD 的使用
- 其他有价值的信息
本节可以选做(0~8 个),本次作业会按照做的数量给予更高的评分。
基于给出的镜像数据和 OpenDigger,完成项目 2015 年/创建 - 归档期间的以下数据分析任务:
- 每月新增 Star 和 Frok 的个数
- 每月打开 Issue 和 关闭 Issue 的个数
- 每月打开 PR 和 合入 PR 的个数(注意,关闭 PR 不等于合入)
- 每月在仓库中活跃(只要有日志产生就算)的不同开发者(也就是一个 GitHub 账号)总数
- Issue 从打开到关闭的平均时长和中位数(单位:天)
- PR 从打开到合入的平均时长和中位数(单位:天)
- Issue 和 PR 从打开到第一次有人回复(非本人回复)的平均时长和中位数(单位:天)
- 根据你观察到的仓库的历史数据,尝试找到几个你认为关键或值得注意的时间节点 说明:
- 对于任务 1-4,数据结果展示以月为单位,给出每月数量的曲线图和表格
- 对于任务 5-7,数据结果展示以天为单位,仅给出数值即可
- 对于第二块的数据分析内容,交付形式为一份 jupyter 文件
- 镜像中提供了一共 172 个归档项目数据,有兴趣的话欢迎探索单个项目以外的横向对比分析
数据镜像的获取方式:(前提: 本地需要安装 docker 环境)
docker pull xlab-registry.cn-shanghai.cr.aliyuncs.com/opendigger/github-log-archive:202204
- 阅读分析项目的相关信息:
- 主页、主要贡献者发表的相关技术博客
- Issue 和 PR 中的相关讨论
- README 文件,贡献者指南,Code of Conduct 及其他可能有的相关文档
- 结合一和二中得到的信息和分析结果,尝试总结项目可能的归档原因
- 结合你搜集到的信息,尝试分析项目归档后可能产生的影响(对开发者和用户)
- 表述你对开源项目如何可持续发展的理解
https://github.blog/2017-11-08-archiving-repositories/
https://docs.github.com/en/repositories/archiving-a-github-repository/archiving-repositories
https://tommcfarlin.com/why-im-archiving-my-github-repositories/
https://iliana.fyi/blog/everything-that-lives-is-designed-to-end/
序号 | 项目 id | 项目名 |
---|---|---|
1 | 460078 | angular/angular.js |
2 | 80276391 | GitSquared/edex-ui |
3 | 2935735 | adobe/brackets |
4 | 1129010 | blueimp/jQuery-File-Upload |
5 | 2579314 | fzaninotto/Faker |
6 | 18044526 | StreisandEffect/streisand |
7 | 23141830 | paularmstrong/normalizr |
8 | 38380854 | dnSpy/dnSpy |
9 | 18275356 | facebookarchive/pop |
10 | 3122202 | Reactive-Extensions/RxJS |
11 | 32665718 | railsware/upterm |
12 | 3755875 | Prinzhorn/skrollr |
13 | 21399598 | angular/material |
14 | 24186761 | Kotlin/anko |
15 | 46806184 | helm/charts |
16 | 45147841 | facebookarchive/prepack |
17 | 78186814 | apache/incubator-weex |
18 | 92104803 | mozilla/send |
19 | 7827081 | apache/predictionio |
20 | 4702560 | PHPOffice/PHPExcel |
21 | 156648725 | eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee/eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee |
22 | 2874001 | chrisbanes/Android-PullToRefresh |
23 | 268027 | carhartl/jquery-cookie |
24 | 73902337 | vmware-archive/kubeless |
25 | 83285138 | alibaba/vlayout |
26 | 38066334 | facebookarchive/caffe2 |
27 | 70202506 | golang/dep |
28 | 124492610 | xiandanin/magnetW |
29 | 1136075 | cubiq/iscroll |
30 | 50807547 | turbolinks/turbolinks |
31 | 15345331 | boltdb/bolt |
32 | 22282353 | vicc/chameleon |
33 | 47690142 | CoatiSoftware/Sourcetrail |
34 | 11290232 | flynn/flynn |
35 | 4931659 | Netflix/SimianArmy |
36 | 75566993 | openai/universe |
37 | 2328523 | casperjs/casperjs |
38 | 5279091 | square/dagger |
39 | 59939691 | yhatt/marp |
40 | 68627122 | GetStream/Winds |