7分钟阅读

Norbert Preining 于 2021 年 6 月加入 scikit-learn 团队。在本访谈中,了解有关 Norbert 的旅程、沉浸和对开源的热情的更多信息。他对开源的贡献跨越了一生——看看 scikit-learn 在这一切中所处的位置。

  1. 跟我们谈谈你自己。

    我住过几个国家,但大约 13 年来,我一直把日本称为我的家。在日本,我并不在任何大城市,而是在农村。我一生中的大部分时间都在学术界工作,从事数学逻辑研究。现在我已经在日本公司的研发团队工作了 7 年。首先是 Accelia,然后是富士通,现在是 Mercari。我的主要研究课题是数学逻辑,特别是证明论和多值逻辑、可计算性以及软件规范和验证。在我的当前工作领域中,我主要关注机器学习的各个方面,但主要是在无监督学习中,最近是在搜索中。

  2. 你是如何第一次参与开源的?

    我在写硕士论文时得到了我的第一台电脑,当时一个朋友为我安装了 Linux。从那时起,我几乎只使用 Linux,并学会了热爱开源的优势。

  3. 我们很乐意了解您的开源之旅。

    我最初是在 TeX Live(TeX 及其相关软件的最大发行版,适用于所有主要操作系统和许多次要操作系统)中开始为 OSS 项目做出贡献,通过为一个神秘的架构(alpha-linux)提供构建。后来,我开始了一段将 TeX Live 带到 Debian 的冒险之旅。近 20 年来,我一直维护着 TeX Live 和许多其他与 TeX 相关的(以及不相关的)软件包在 Debian 中(从 2005 年到 2021 年的所有 TeX Live 版本都是由我打包的),直到今年我将接力棒传给了 Hilmar Preuße,他在过去几年中给了我很多帮助。在所有这些年中,我还为许多其他 OSS 项目做出了贡献并领导了这些项目。

  4. 你是如何参与 scikit-learn 的?

    我一直都在我的 AI/ML 项目中使用 scikit-learn。在富士通工作期间,我是富士通在 scikit-learn 联盟的代表,并开始在日本组织开发冲刺,以及自己为 scikit-learn 贡献代码。

  5. 您能分享您组织或参与的开源冲刺的经验吗?有什么经验教训吗?

    我在日本组织了两次 scikit-learn 开发冲刺(2021 年春季2021 年秋季),并参加过类似的活动几次。对我来说,最大的问题是“广告部分”——在哪里/如何激励人们参与。我已经组织过有数百到数千名参与者的科学会议,因此实际的冲刺组织对我来说一直是一项相当轻松的工作。不过,我在开发冲刺中非常喜欢的是结对编程选项——与其他人坐在一起,共同完成一个项目。总能从其他人那里学到东西,而且能够接触到不同的观点或意见通常会极大地改变编码方式。

  6. 您为哪些 OSS 项目和社区做出了贡献?

    最大的贡献是 TeX Live 项目,我是整个基础设施、TeX Live 管理器以及大部分服务器端工具的负责人。另一个相当大的部分是为日本 TeX 开发者社区,我在其中贡献了一些工具,使日本 LaTeX 用户的生活更加便捷。在 FOSSASIA(一个致力于开源和开放硬件的全球组织,总部位于亚洲)中,我参与并领导了 SUSI.AI 项目(基于 Raspi 的隐私感知智能助手和智能音箱)。对于 Debian,我几乎打包了所有与 TeX 相关的软件包,以及其他一些软件包,并且在过去几年中,我彻底改造了完整的 KDE/Plasma 堆栈,该堆栈一直落后。其他较大的贡献包括 Shotwell 照片编辑器(整个评论系统)、Linux Onedrive 客户端,以及其他一些零零散散的东西。

  7. 您对刚开始从事您工作领域的人有什么建议或技巧吗?

    我不确定“我的工作领域”是什么,不过 ;-) 如果你想开始做 OSS,找到一个你正在使用的项目,以及你想修复的一个痛点,然后开始编码。即使一开始不知道语言,也可以很快做出贡献。我以前从未听说过 ObjC,但为 Shotwell 贡献了不少代码。直到我开始为 Onedrive 开发功能之前,我从未听说过 D。只要开始,边学边做。

  8. 您发现 OSS 有什么吸引力?

    我发现 OSS 的吸引力在于我可以修复我不喜欢的东西。我也喜欢“付出和收获”的态度:我免费获得了许多东西,优秀的程序往往远远超过其商业对手。但我也可以回馈社区:有很多方法可以做到这一点,即使是非程序员也可以回馈:改进文档、社区工作、资源管理、良好的错误报告等等。

  9. 您在社区主导的 OSS 中观察到哪些痛点?

    政治在许多社区中占据了过大的主导地位,保护利益相关者比保护开发者更重要。这会导致许多地方的意见多样性受到严重压制。但我猜想这是 OSS 日益重要的结果,也反映了社会的一般趋势。

    另一个痛点是众所周知的“获取”和“付出”之间的差距,来自大公司。核心组件通常是由小团队在业余时间开发的,而庞大的基础设施依赖于这些组件,却没有充分地认可这一事实。

  10. 如果我们讨论 OSS 在 10 年内发展了多远,您希望看到什么发生?

    我希望看到一个更强大的开发系统:像恶意软件注入 Python 库或 Javascript 库存储库这样的问题需要得到解决,否则人们对开源作为一种可行且稳定的替代方案的信任就不会增长。

    未来几年的另一个愿望——与 scikit-learn 相关,因为它是一个 Python 库——是拥有更好的 Python 开发体验。工具仍然很痛苦,Python 版本之间的不兼容性(甚至在点版本之间),许多工具试图做类似的事情,仅举两个主要痛点。每天使用 pyenv 同时处理 3 个版本的 Python,为项目创建多个虚拟环境,以及使用 3 种不同的工具进行安装/维护,我希望看到这些消失。

  11. 您最喜欢的资源、书籍、课程、会议等是什么?

    我喜欢从书籍中学习,所以我积累了很多技术书籍,我大部分的书籍都来自 Manning Publications(我与他们没有关联!)。有两本书我反复阅读:计算机程序的结构和解释(Abelson/Sussman)和 务实的程序员(Thomas/Hunt)。我认为这两本书都是值得反复阅读的珍宝。在更实用的方面,Knuth 的 计算机程序设计艺术 是一笔巨大的财富。

    我尝试过在线视频课程,但这对我来说不是一种合适的格式。网络上的问答网站当然是一个很好的资源,但请注意,简单地复制粘贴在大多数情况下会导致严重的错误(甚至更糟,臭虫)。只有当我理解了那里的代码后,我才会在我的程序中重用它。

    Reshama 的评论
    >当我第一次学习 Python 时,我犯了一个痛苦且非常耗时的错误,就是将版本 2 的代码复制到我的版本 3 脚本中,并且最初不明白为什么它不起作用。不幸的是,StackOverflow 的答案不包括库的版本。

  12. 除了工作和开源之外,您的爱好是什么?

    我喜欢去山里,而且是严肃的登山。我曾担任过专业的登山向导(UIAGM)多年,主要是在法国和瑞士,我也在日本做一些专业的向导工作。除此之外,与朋友一起外出登山(攀岩、冰攀、滑雪旅行、传统登山,以及日本/台湾/韩国特有的攀岩方式:淋浴攀岩……)可以让我头脑放松。当然,家里有一个小孩,山变得小了一些,也不那么常见了。所以现在我和家人一起露营、去海边、冬天滑雪、旅行(希望很快也能去日本以外的地方旅行!)。

photo of a man hiking
照片来源: Norbert Preining