Meekail Zain,scikit-learn 团队成员访谈
发布者: Sangam SwadiK
Meekail Zain 是佐治亚大学(美国)的计算机科学博士生,Quinn 研究小组成员,也是 Quansight 的软件工程师。Meekail 于 2022 年 10 月正式加入 scikit-learn 团队担任维护者。
-
请您介绍一下自己。
我目前就读于佐治亚大学,攻读计算机科学博士学位。我的研究领域主要集中在深度学习、生成式建模和聚类的统计方法。我目前是三年级学生,在撰写本文时即将开始我的综合考试。
- GitHub: @Micky774
- LinkedIn: @meekail-zain
-
您最初是如何参与开源和 scikit-learn 的?
我最初是作为用户参与的,就像大多数人一样。NumPy 对我来说是一个经常使用的日常库,而 scikit-learn 是几门研究生课程的必要工具。最初,我从未想过自己能够走到能够影响这些库的程度,因为它们看起来已经非常成熟了!
-
我们很乐意了解您的开源之旅。
我的旅程真正开始于我加入 Quansight 并通过 NASA Roses 拨款 获得资金,能够将时间投入到为 scikit-learn 做贡献。这与我之前所知道的完全不同。我为了能够使用 PyTorch 为我的研究开发/部署模型而非常非正式地学习了 Python,并且几乎没有关于持续集成或强大 API 的经验。起初,我感到非常害怕和不合格,但与此同时,我非常激动能够学习这么多新东西! 我开始做一些非常简单的更改来适应贡献工作流程——比如删除多余的空格和修复错别字 ——然后逐渐转向更复杂的任务。最终,我开始“理解”代码库的某些小角落,并且能够根据这种熟悉度为新问题提供帮助。在那之后, 我开始审查其他人的拉取请求 (PR) 并以非正式的身份提供反馈 ,以及承担代码库中更具挑战性的任务。这种成长和升级的过程仍在继续,我真的希望它永远不会结束。
-
您为哪些 OSS 项目和社区做贡献?
NumPy、scikit-learn 和 scipy。现在主要集中在 scikit-learn 上,其次是 numpy,但我希望在不久的将来花更多时间在 scipy 上工作!
-
您对刚开始从事您工作领域的人有什么建议或技巧?
找到一种方法来享受被自己尚未掌握的事物包围的感觉 。如果您追求成长——事实上我认为我们都应该追求成长——那么您会发现自己大部分时间都处于被自己不太理解的事物包围的环境中,而对此的自然反应是沮丧和害怕。如果您能以某种方式说服自己也对这种环境感到兴奋,那么您会发现自己每天都在成长。没有人一开始就什么都知道 :)
-
您发现 OSS 有什么吸引力?
这个问题很难回答,有很多很棒的理由。如果我必须选择几个,那就是(不按特定顺序)
- 成长潜力
- 社区
- 影响力
我已经讨论过成长潜力,所以就不再赘述了。
社区也非常棒!每个项目都有自己的独特个性,而且它们都非常棒!能够看到经常出现的用户发布有趣的问题,或者尝试打开更复杂的 PR(拉取请求)真是太棒了。与那些也试图改进与您相同的项目的人之间有一种强烈的同伴意识!这就像高中里一个非常小众的俱乐部。找到与您一样痴迷于同一个酷炫项目的人是一种很棒的体验。
最后,影响力。归根结底,我们所做的工作会产生一些严重的后果。每个项目对于许多不同的工作流程都至关重要,并使杰出的研究人员和软件工程师能够构建复杂的系统和解决方案来解决尖端问题。有时,想到这些项目中的一些实际上是多么重要,这让人感到不可思议。
-
您在社区主导的 OSS 中观察到哪些痛点?
达成共识很困难 。这是一把双刃剑,因为它也带来了一些好处。在社区主导的 OSS 中,从任何规模的更改都需要达成某种共识。 这确保了更改经过深思熟虑,并提供了一层安全保障,因为随着仔细审查更改的人数增加,未被发现的错误传播的可能性降低了 (在大多数情况下)。
例如,在 scikit-learn 中,对代码进行更改的 PR 需要满足一个懒惰的共识,即两名官方审阅者(目前仅限核心开发人员)明确批准,并且没有其他官方审阅者正式反对。再进一步,项目中的新功能请求可能需要几个精通该主题领域的核心开发人员达成共识。大型系统性更改以 SLEPs(scikit-learn 增强提案)的形式体现,需要所有核心开发人员的 ⅔ 多数同意。甚至在更高级别,还存在跨社区讨论,其中“共识”本身的概念并不总是很明确。
这个系统至关重要,但它本身存在一些需要解决的重要问题。例如,谁有权在每个级别参与共识?一个人需要具备什么资格,我们如何将其编纂?还存在一个内在的权衡,即所需的共识越强,更改被采纳的可能性就越小。这是设计使然,因为范围广泛的更改需要达到很高的标准,但这确实也意味着,偶尔即使对于范围狭窄的问题,也无法达成解决方案,尽管提出了比现状更好的方案。
-
如果我们讨论 OS 在过去 10 年中的发展,您希望看到什么发生?
我无法谈论它在过去 10 年中的发展,因为我总体上对 OSS 还比较陌生,但我 希望看到对贡献者需求进行系统性的数据驱动分析 。不同的 OSS 项目在过去发布过贡献者调查,但总的来说,我认为很多重点都放在了用户在元问题或社区电话会议中提供的反馈上。虽然这确实很有帮助,但当项目试图通过这种方式确定其贡献者群体的需求时,会进行很多推断。
我非常希望看到研究的一些问题包括
- 贡献者群体的专业知识分布是什么样的?
- 每个专业水平上最大的瓶颈是什么?
- 除了专业知识之外,还有哪些社会经济或一般人口统计特征表现出持续的瓶颈?(例如,硬件访问)
- 我们如何从这些信息中制定出明智且有效的 DEI 政策?
开源项目依靠社区的蓬勃发展,因此我非常希望看到更多关于社区需求和痛点的系统性研究。
-
您最喜欢的资源、书籍、课程、会议等是什么?
我非常喜欢 “概率与统计” by Evans and Rosenthal。它从非常基础的概念出发,出色地构建了许多原本令人生畏的统计概念。对于那些没有扎实概率和统计基础的渴望学习的学生来说,这是我最喜欢的推荐书籍,因为它很好地培养了读者的直觉,让一切都感觉自然而然,而不是随意定义的。
关于会议,我不得不提 SciPy!我参加会议之前确实很害怕,担心自己会是每个房间里最不合格的人,而且没有话题可谈。我很快意识到,总有话题可谈,资格并不重要。这是一个充满热情的超级人群的聚会,每个人都渴望谈论他们感兴趣的事情,所以无论你是专家还是初学者,他们都会乐意向你解释。每个参加者都有自己的领域,无论多么具体,他们都可以谈论几个小时。这种真诚的兴趣和兴奋让我感到振奋,也让我记起了我为什么如此热爱开源。
-
除了工作和开源之外,你的爱好是什么?
我真的很喜欢远足、露营和玩 D&D(龙与地下城)!露营对我来说尤其重要,因为只要我手边有电脑,我就忍不住查看我的 GitHub 通知,所以偶尔完全断开连接一个周末对我来说是一个很棒的工具,让我可以放松一下,没有“我现在可以做那个新功能……”的压力。
如果你曾经因为脑海中那个声音说“你怎么敢放松?你现在可以做这个和那个!”而难以放松,那么我强烈建议你去露营,即使只是一晚!当那个声音在露营时出现时,我会反驳说“啊,但是你看,我没有带笔记本电脑,所以我不能现在做那个。我现在只能放松。”,然后焦虑感突然消失了 :)