几个月前,我写了一篇博文,回顾了 JuliaCon 2020 上一次有趣的讨论,一群专注于行业的 Julia 用户讨论了闭源专有软件开发与 Julia 的开源软件 (OSS) 生态系统之间的相互作用。这篇博文总结了我们的讨论小组认为对私营组织内部进行有意义的 OSS 贡献构成真正障碍的一些关键问题。文章最后宣布了我们尝试克服这些障碍的努力:Julia 行业用户贡献活动,一个黑客马拉松,参与的行业组织可以聚在一起回馈 Julia 生态系统。
本次活动的目標是……
……促进/加强跨组织边界的合作,并减少可能重复的努力。
……既推动又证明 Julia 生态系统已准备好用于“生产”用途。
……为相关组织提供良好的推广激励,以投入时间并参与 OSS 工作。
……为整个 Julia 社区提供推广和技术利益。
……以及获得巨大的乐趣!
现在,在 2021 年,我很高兴地报告上个月在 Beacon Biosignals、Invenia、TriScale innov、RelationalAI 和 PumasAI 等优秀团队的参与下,活动取得了巨大的贡献。活动欢迎各种形式的贡献:我们发布了完整的包,提交了 PR,修复了 bug,启动了新项目,并规划了我们未来工作的 OSS 路线图/积压工作。
以下是一些突出的例子
Lighthouse.jl,它提供了一个最小的框架无关接口,用于标准化/自动化多类、多评分员分类模型的性能评估(Beacon Biosignals)
SerializationCaches.jl,它提供了一种简单、可组合的机制,用于缓存从头计算所需时间明显长于从磁盘(反)序列化对象的机制(Beacon Biosignals)
K8sClusterManagers.jl,它提供了在 K8s 集群之上动态配置 Julia 工作器的机制(Beacon Biosignals)
KeywordSearch.jl,它利用 StringDistances.jl 为模糊文档搜索提供了一个不错的接口(Beacon Biosignals)
大量 JuliaPlots 贡献(Beacon Biosignals):AbstractPlotting.jl#569、AbstractPlotting.jl#570、WGLMakie.jl#71、JSServe.jl#76
改进了 RegistryCI.jl 对私有包注册表的支持(Beacon Biosignals)
大量与 AWS 相关的贡献(Invenia、Beacon Biosignals):AWSS3.jl#118、AWSS3.jl#119、AWSS3.jl#120、AWSS3.jl#121、AWSS3.jl#124、AWS.jl#257、AWS.jl#260、AWS.jl#262、AWS.jl#265
AWSTools.jl,各种 AWS 实用程序函数(Invenia)
DateSelectors.jl,它提供了将日期划分为测试/训练/验证等集的实用程序,用于时间序列机器学习(Invenia)
Cliquing.jl,它实现了各种算法,用于在图中找到一组不重叠的团(Invenia)
Checkpoints.jl,它提供了动态检查点 Julia 程序状态的机制(Invenia)
PDMatsExtras.jl,它使用几种不同的正(半)定矩阵类型扩展了 PDMats.jl,这些矩阵类型可以很好地与 Distributions.jl 互操作(Invenia)
RegistryCLI.jl,一个用于直接从命令行轻松管理私有包注册表的工具(TriScale innov)
XUnit.jl,一个具有良好并行化功能的单元测试框架(RelationalAI)
编译器支持在推理/LLVM 优化期间进行编译分析,启用酷炫的新 SnoopCompile.jl 功能(RelationalAI)
对 PProf.jl 进行了各种质量改进,包括与 FlameGraphs.jl 和 SnoopCompile.jl 的互操作性。(RelationalAI)
……以及许多我无法在此列出的其他问题/PR 等——尤其是投入到公共 OSS 积压工作创建中的重要工作。
除了贡献本身之外,这次活动还让我们了解了一些有价值的要点(或者在某些情况下,提醒了我们)
即使单个包的注册版本分散在私有和公共注册表中,Julia 的包管理器也能无缝工作。在很多情况下,这使得将下游内部包升级到其上游依赖项的现在开放版本变得非常容易——只需要进行版本更新!
拥有一个记录良好、经过实战检验的内部流程,用于安全地将私有代码开源,极大地降低了实际操作的门槛。创建明确的(如果可能,公开的)“OSS 积压工作”是启动内部流程开发的好方法。
Gather 实际上是一个非常有用的协作平台!就像在 JuliaCon 上一样,与日常在 Julia 在线社区中遇到的 GitHub 句柄背后的实际人员会面并闲逛很有趣。此外,在视频聊天中添加空间组件确实有助于重现共享工作空间的氛围。在使用它来举办活动后获得良好的体验后,我们在 Beacon Biosignals 创建了自己的内部 Gather 空间,我们每天都在那里闲逛。
跨组织协作一直是 Julia 社区中巨大的发展驱动力,而这次活动也不例外!发现我们组织技术栈的各个交汇点,并开始直接在这些工具上一起工作很有趣。JuliaCloud 生态系统(尤其是 AWS.jl)在参与者中引起了极大的兴趣。
有许多优秀的工程师,在加入支持 OSS 的公司之前,从未有机会将其日常工作的一部分贡献给 OSS。此次活动通过使这些个人能够将其现有的内部工作转化为有影响力的外部贡献,成为了一个很棒的 OSS 入门坡道。
总而言之,我认为此次贡献活动取得了成功,并在行业 Julia 用户之间建立了一些关键的协作点,我相信这些协作点将持续很长一段时间。更重要的是,它非常有趣。感谢所有参加活动的人、所有帮助协调的人以及 OSS 社区中所有为 Julia 在行业中持续发展提供支持的优秀人士!
对这篇博文和/或 Julia 在行业中的使用有任何想法/问题?加入Julia Slack 的 #industry-users
频道参与讨论!