开源特训营 - Lesson 6 - 如何提交一个合格的PR

编辑:李明康

责编:袁睿斌

作者:课程助教 - 苏斌

主讲教师:张齐勋(北京大学)、赵生宇(同济大学)

本次课程的主题为《如何提交一个合格的PR》,主讲者为来自北京大学的张齐勋老师和来自同济大学的博士研究生赵生宇同学。

 

张齐勋老师首先回顾了前五次课的主要内容,然后由赵生宇老师主讲今天的课程内容。

实操基础:Issue的功能有哪些?

Issue的构成包括标题(Title)、内容(Body)、评论(Comments)、标签(Labels)、指派者(Assigness)、所属项目看板(Project)和里程碑(Milestone)。

 

Issue的典型功能是提供一个提问和交流的平台,可以在这里提交软件使用过程中出现的bug,也可以提交软件还需要添加的功能模块。

理论基础:异步沟通与信息沉淀

Issue的理论基础概念包括异步沟通和信息沉淀。

 

异步沟通的优点包括跨时区合作,个人开发者的时间成本低;不过异步沟通存在着以下挑战:总体沟通的时间成本较高、需要尽量减少沟通的回合数并且需要尽量在一次沟通中表达尽量多的内容。

 

信息沉淀的优点包括把所有信息都沉淀下来,可后期检索,此外沉淀信息可为后来人提供有效的查询路径。

实操进阶:多角色视角下的Issue     

在共同协作的开发模式下,沟通是必不可少的环节,那么如何降低总体的沟通成本呢?赵老师提出了“开源社区是互惠互利,谁也不欠谁”的观点:对于开发者而言,提出Issue之前需要先搜索有无相关的历史Issue,避免重复提问。提交Issue时,内容也尽量详实充分,例如如果是Bug,说明运行环境、参数配置等,最好是可以提供日志或最小可复现仓库;对于维护者而言,需要做到的是维护良好的社区沟通环境、提供有效的沟通指引、使用模板指引开发者提供更全面的信息并且设计有效的流程使得Issue可以被更快地响应。

理论进阶:管理学视角下的Issue流程

赵老师从管理学的视角下解释了开源过程中的相关概念。

 

管理学的主要目的是在现有条件下通过合理的组织和配置各种资源,提高生产力水平。则以下概念从管理学的角度可以这样理解:

 

  • 异步沟通:减少同步沟通而减少核心维护者的时间成本;

  • 信息沉淀:减少反复沟通而减少开发者搜寻解决方案的成本和维护者反复回答的成本;

  • 流程清晰:减少决策的心智成本同时降低响应时间从而使开发者有更好的体验;

  • 流程自动化:减少组织的制度成本而使整体项目可以更加顺滑的运转。

活动回顾视频

点击小程序观看第6期活动视频哦~

开源社简介

开源社是由国内外支持开源的企业,社区及个人,依“贡献,共识,共治”原则,所组织的厂商中立、纯志愿者、非营利的开源联盟,旨在共创健康可持续发展的开源生态体系,并推动中国开源社区成为全球开源软件的积极参与及贡献者。我们专注于开源治理、国际接轨、社区发展和开源项目。

相关阅读 | Related Reading

开源特训营 - Lesson 1 - 开源基础

开源特训营 - Lesson 2 - 项目启动

开源特训营 - Lesson 3 - GITHUB仓库管理 

开源特训营 - Lesson 4 - 如何运营社区

开源特训营 - Lesson 5 - 社区如何评审代码

开源特训营

喜欢本篇内容请给我们点个在看

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/307472.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

改进程架构,Edge优化浏览器内存问题

微软 Edge 团队称,“今天的浏览器更像是操作系统,而不是文档查看器。用户正在浏览器中执行越来越多的任务,而在桌面应用程序中执行的任务越来越少。与此同时,每个网页、Web 应用程序和扩展程序都在使用内存,这也会使用…

中芯国际第二代FinFET工艺有望与2020年底试产

媒体报道,第一代FinFET 14纳米已于2019年四季度量产;第二代FinFET N1已进入客户导入阶段,可望于2020年底小批量试产。梁孟松披露,中芯国际的下一代N1工艺和14nm相比,性能提升了20%,功耗降低了57%&#xff0…

gRPC-微服务间通信实践

微服务间通信常见的两种方式由于微服务架构慢慢被更多人使用后,迎面而来的问题是如何做好微服务间通信的方案。我们先分析下目前最常用的两种服务间通信方案。gRPC(rpc远程调用)场景:A服务主动发起请求到B服务,同步方式…

移动 Azure 资源后如何快速修复 Dashboard

点击上方蓝字关注“汪宇杰博客”导语Azure 用户经常因为不够有钱,需要把资源移动到另一个资源组或订阅中。移动完成后,会导致资源对应的 Dashboard 失效。通常,我们都需要从 Dashboard 上将找不到的资源删除,并逐个重建。有没有快…

八大排序算法之插入排序

一:直接插入排序 1:思想 首先选择一个哨兵,我们默认将第一个数作为哨兵,随着循环的进行,我们一直将我们待插入数的前一个数作为哨兵然后就是插入的数与哨兵比较,比哨兵小的话,就将哨兵后移,然后再与哨兵前面的数进行比较,直到遇…

跟我一起学Redis之五种基本类型及其应用场景举例(干了6个小时)

前言来啦,老弟?来啦,上一篇就当唠唠嗑,接下来就开始进行实操撸命令,计划是先整体单纯说说Redis的各种用法和应用,最后再结合代码归纳总结。Redis默认有16个数据库(编号为0~15),默认使用第0个&am…

leetcode周赛6070. 计算字符串的数字和

一:题目 二:上码 class Solution { public:/**思路:1.设置一个while循环&#xff0c;循环的条件是s.length<k2.while里面进行 1>:将字符串按k个进行拆分成个单个字符&#xff0c;并将其转换成数字,然后计算将计算结果再组成字符串 */string digitSum(string s, int k) {…

ASP.NET Core 中的 User Agent 识别及搜索引擎爬虫鉴定方法

User Agent中文名为用户代理&#xff0c;简称 UA&#xff0c;它是一个特殊字符串头&#xff0c;使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。百度百科在 ASP.NET Core 中&#xff0c;可以通过以下代码在 …

leetcode周赛6071. 完成所有任务需要的最少轮数

一:题目 二:上码 class Solution { public:/**思路:1.如果x1的话,那么的话 直接返回-12.如果x2的话&#xff0c;那么就一次执行3.如果x是3的倍数的话,那么就直接执行 x/3 次4.如果x/3 余数是1的话 那就执行 x/31,比方说是4 其实是两个2&#xff0c;但是我们求数的的时候,我们求…

netcore使用 jenkins + supervisor 实现standalone下多副本自动化发布

前面的文章聊过用 jenkins 做了一个简单的自动化发布&#xff0c;在shell中采用的是 BUILD_IDdontKillMe nohup dotnet xxx.dll & 这种简单的后台承载&#xff0c;如果你的业务量相对比较小&#xff0c;可以用这个方法玩一玩&#xff0c;但存在二个问题&#xff1a;1. 无法…

实战解读ASP.NET Core身份认证

长话短说&#xff1a;上文我们聊了 ASP.NET Core 基于声明的访问控制到底是什么鬼&#xff1f;今天我们乘胜追击&#xff1a;聊一聊ASP.NET Core 中的身份验证。身份验证是确定用户身份的过程。授权是确定用户是否有权访问资源的过程。1. 万变不离其宗显而易见&#xff0c;一个…

Java并发之AQS

文章目录一:AQS简介二:了解AQS 上锁和释放锁的原理1:前言2:上锁(非公平锁)(1):我们从main主函数中点进去(2):从lock进入(3):找到非公平锁中的lock(4):查看acquire()方法(5):查看tryAcquire(arg)方法a:前言介绍b:进入ReentrantLock类中的nonfairTryAcquire方法(6):addWaiter(Nod…

网络知识 | 《图解TCP/IP》读书笔记(上)

【网络知识】| 作者 / Edison Zhou这是EdisonTalk的第290篇原创内容作为一个专业的IT技术人&#xff0c;一个Web应用开发者&#xff0c;不了解网络基础和协议&#xff0c;怎么能行&#xff1f;本文是我2016年阅读《图解TCP/IP》一书的读书笔记&#xff0c;希望对你有所帮助&…

Java并发之semaphore(信号量)

文章目录1:官方解读2:通俗易懂的例子解析3:代码解析4:Semaphore的应用5:类结构和相关方法(1):类结构(2):acquire()方法(3):release()方法6:总结1:官方解读 semaphore信号量就是并发工具类,Semaphore管理着一组许可permit&#xff0c;许可的初始数量通过构造函数设定。 当线程要…

IdentityServer4系列 | 初识基础知识点

前言我们现在日常生活中&#xff0c;会使用各式各样的应用程序&#xff0c;层出不穷&#xff0c;其中有基于网页浏览方式的应用&#xff0c;有基于手机端的App&#xff0c;甚至有基于流行的公众号和小程序等等&#xff0c;这些应用&#xff0c;我们不仅要实现各个应用的功能之外…

八大排序算法之终章---归并排序

一:简单介绍 归并排序排序就是利用归并的思想实现的排序方法 它的原理是将初始化序列划分成n个记录,则可以看成是n个有序的子序列,每个子序列的长度为1,然后两两归并&#xff0c;得到(n/2)个长度为1或者2的有序子序列;然后再两两合并…不断重复 直到最后 得到一个长度为n的有序…

Firefox 18周岁

Mozilla Firefox 起源于开源运动兴起之初建立的一个项目组织——Mozilla 社区&#xff0c;可以说是最早以“开源”名义出现&#xff0c;并取得成功的项目之一。Firefox 首次发行是在2002年的9月23日&#xff0c;当时的代号为“Phoenix”&#xff08;凤凰&#xff09;。18年过去…

三种方式让你轻松监控 EntityFramework 中的 sql 流转

大家在学习entityframework的时候&#xff0c;都知道那linq写的叫一个爽&#xff0c;再也不用区分不同RDMS的sql版本差异了&#xff0c;但是呢&#xff0c;高效率带来了差灵活性&#xff0c;我们无法控制sql的生成策略&#xff0c;所以必须不要让自己缺乏好的工具去监控sql&…

java并发之CountdownLatch

一:CountdownLatch 1:基本含义 CountDownLatch中count down是倒数的意思&#xff0c;latch则是门闩的含义。整体含义可以理解为倒数的门栓&#xff0c;似乎有一点“三二一&#xff0c;芝麻开门”的感觉。CountDownLatch的作用也是如此&#xff0c;在构造CountDownLatch的时候…

leetcode142. 环形链表 II(详解)

一:题目 二:思路分析 三:上码 class Solution { public:ListNode *detectCycle(ListNode *head) {ListNode* slow head;ListNode* fast head;while (fast ! NULL && fast->next ! NULL && fast->next->next ! NULL) {//这里选用快指针fast fast-&g…