您可以使用比您想象的更多开源软件

2021-06-10 05:04:10

README项目放大了开源社区的声音:贡献每天贡献世界前进的维护者,开发人员和团队。

Tobias Koppers不适用于Instagram。他从未有过。但自2014年以来,他一直负责维护Instagram的Web版本的重要组成部分。

Koppers是WebPack的创建者,一个用于JavaScript的开源代码捆绑工具。基本上,WebPack启用代码拆分,允许开发人员优化他们的JavaScript代码并将其拆分为较小的块,以便在访问Web应用程序时,首先访问最重要的代码。这使得Web应用程序更快,因为在开始使用它之前不必下载整个应用程序。

WebPack于2012年作为学术项目的一部分。就像许多其他开源项目一样,它开始作为一种划伤痒的方式。 “我正在为我的计算机科学硕士学位申请,我正在寻找一个代码优化工具,”他在最近的Readme播客中解释了。对其他工具处理代码拆分的方式不满意,他在Github上写下自己并释放它。 “我以前为开源做出了贡献,但我以前从未开放了我自己的项目,所以我认为这会很有趣,”他说。

不到三年后,前Instagram工程经理Pete Hunt在2014年在Oscon 2014中解释,该公司依赖于WebPack,将Koppers放在维护世界上最受欢迎的应用中最受欢迎的应用程序之一的重要位置。

WebPack在Instagram上的封面下的危险角色是我们在我们的软件中更广泛的开源而不是普通用户可以实现的一个很好的例子。专有的应用程序和Web服务 - 甚至不太可能是一个 - 允许广泛使用开源,尽管它并不总是显而易见的。例如,包括Hulu,Poshmark和Tiktok-依赖于开源网络库Alamofire或其前任AFnetworking的无数IOS应用,即使用户直接与这些库互动,也可以下载图像和数据。

WebPack在Instagram上的危险之下,upl-lood角色是我们所有在我们的软件中使用的所有开放来源的一个很好的例子,而不是普通用户可能会实现。

开源软件通常会绘制对物理基础架构的比较。作家和研究员Nadia Eghbal描述了作为数字世界的“道路和桥梁”的开源。但是,虽然道路和桥梁是高度可见的基础设施形式,但开源经常通过最终用户看不见。

卷曲等开源库是隐藏的电源,许多人认为授予。而且,就像他们的物理对应物一样,他们需要保持保持运作。卷曲包含在大多数Linux发行版中,需要更新以支持最新的Web标准,就像任何标准的Web浏览器一样。 “许多人没有意识到卷曲是一个应用程序,而不仅仅是一个操作系统功能,”卷曲创建者大卫斯滕伯格说。 “即使是那些了解它的人常常想知道为什么我需要进行维护。”

许多开源项目的近似隐喻为开源生态系统创造了许多挑战,从而从资助项目并确保其代码确保其组件之间的兼容性。

安全是关心开源基础架构的最紧迫理由。无论是开源还是专有的,都没有审核和维护的代码是使用它的每一块软件的安全风险。但是,提供支持合同和保证的公司未创建和维护许多开源项目。相反,它们由开发人员建造,通常在业余时间工作。这些开发人员可能没有任何人积极修补安全漏洞,更不用说审核。

理想情况下,关键的开源项目将拥有全日制开发人员,不仅可以修复漏洞,而且在第一次将安全性“转移左转”以减少漏洞。如今,较大组织的开发人员可以在部署到生产之前扫描他们的漏洞并解决问题,而Infosec团队与软件架构师一起工作,以确保项目开头的最佳实践。但是,相同的资源并不总是适用于小型公司或个别项目。

全职开发人员需要资金。虽然开源的金融模式是近年来兴趣的主要话题,但没有单一的模型最为努力。许多开发人员发现初创公司可以将其制定工作。其他人依靠公司赞助来资助全职发展。额外咨询和支持资助其项目的一些费用。经过多年的卷曲在业余时间工作,Stenberg去为Wolfssl工作,为卷曲提供商业支持。

说服雇主支付开放源工作的支付,因为开发商的职责是另一个受欢迎的资助模式。对于像Koppers这样的开发人员来说,这是一个理想的情况。 Koppers通过企业赞助而退出了他的工作,而是通过公司赞助,但现在为一家名为Vercel的公司的项目全职工作。一些公司认识到,他们的业务取决于开源库的可靠性,安全性和完整性,并且在回应中,雇用维护者雇用全部或兼职的创作,如任何其他关键的基础架构。 Carolyn Van Slyck在自己的时间上开始了开源部署自动化系统搬运工。现在它的维护是她在微软的职责的一部分。但她指出,这些安排不一定是永久性的。公司可能无法无限期地资助项目的开发,特别是如果他们停止使用该软件。

但是,提供支持合同和保证的公司未创建和维护许多开源项目。相反,它们由开发人员建造,通常在业余时间工作。

有些软件更好地作为自己的启动,但其他项目不会借给自己的货币化。 “一千个开源项目就像具有不同商业模式的一千个初创公司,”埃文·你,流行的JavaScript框架Vue的维护者,在Github Universe 2020上说:“我大多数都在做众筹,因为Vue是一个非常高曝光的项目,但它可能不适用于某些类型的项目。“

塞缪尔科尔文是Python Library PyDantic的维护者,他说他没有看到一个清晰的方式来将他的工作中的工作。 PyDantic是一个数据验证库。它帮助开发人员确保将正确类型的数据输入应用于应用程序。例如,它可以检查以确保当应用程序期待整数时,用户不会输入一串字母。

一方面,PyDanty是一种广泛使用的软件,核心到其他流行的Python软件包,如自然语言处理库Spacy和Fastapi,第三次最受欢迎的Python框架,根据20世纪20年10月进行的28,000多个Python开发商的调查。 “对我们在Spacy做的事情至关重要,”维特纳利说,蒙大西斯维特纳说。 “像PyDanty这样的工具建立了一个整个生态系统。”另一方面,科尔文说它还没有足够大的人来说,可以帮助资助或捐赠的数量,这将有助于为该项目提供全职开发人员,也没有明显的方式建立它周围的初创公司。

此外,资金不会解决现代开源面的所有问题。开源生态系统正在增长更加复杂,并且随着该复杂性来说,开源维护者的新负担,以使他们的项目与他们旨在使用的其他项目,代码和应用程​​序兼容。

例如,在2017年,Python核心开发团队提出了对程序化语言的改变,这些语言将部分地破坏PyDant,并通过扩展,所有依赖于它的一切,包括Fastapi。 COLVIN没有意识到将在2021年4月到2021年4月的改变,当他收到一个有关的Python维护者的电子邮件时。 “他告诉我,他刚刚听到Fastapi和PyDantic,并意识到该提案可能会影响它们,”科尔文解释道。

科尔文在线提出了在线活动,最终,Python团队选择在解决方案工作时延迟变化。 “我可能已经更好地处理了这种情况。我可能比我需要的猛烈撞到鼓声,“科尔文说。 “我对Python指导委员会留下了非常深刻的印象,他们理解我们的担忧,我们将来会更加与他们一起工作。”

该事件阐明了维护软件的挑战。 “追随Python开发人员邮件列表将是一个全职工作,本身就是一个全职工作,”科尔文说。即使他在PyDanty境外没有全职工作,他也无法跟上可能影响他项目的Python生态系统的一切。同样,期望核心Python维护者了解在那里的每个Python库的内部工作,更不用说边缘案例是不合理的。

“即使你有资金,也总是比你能做的更多工作,”Van Slyck说。 “而且酒吧总是被提升。它曾经足够放弃一些代码在线。现在你有望促进一个社区。你有更多的帽子穿着。“

一些开发人员通过专注于制作较小,更可管理的代码和故意穿着更少的帽子来发现开源中的宁静。 “我不喜欢设计需要大量维护的东西,”詹姆斯·哈林斯登说,数百个节点.JS模块的创建者说。 “我试图保持我的模块最小。如果人们停止努力,我认为很多工具会更好,无缘无故地停止改变事情。“更多功能意味着更复杂,每种变化都会引入新错误的可能性。

Halliday - 他的句柄别名更好地了解他的工作毫不常见的方法。 “我已经关闭了所有的GitHub通知电子邮件,”他说。如果有人发现他的代码或想要添加到模块中的一个问题,他不再努力,他们可以自由攻击他的代码。这是毕竟,开源方式。但他并没有努力投入他考虑完成的包裹的问题或拉动请求。 “不要让我在每隔几十年前的小事上保留标签,”这不是我的工作,“他说。 “我总是忙于新的项目,如果我总是回顾旧项目,我就不会有足够的时间前进。”

没有完美的开发过程,适用于所有开源开发人员。很多人都很乐意维持他们的项目或与社会有关改进的工作。 “较少是更”的心态的较少极端版本正在成为维护大型项目和社区的越来越受欢迎的替代品。作为eghbal指出在公众的书中:开源软件的制作和维护,向项目添加更多贡献者实际上可以为维护者创造更多的工作,因为维护者可以快速发现自己的钩子,不仅要查看别人的代码但如果这些贡献者最终离开项目,也保持新功能。 eghbal确定了开源更具模块化设计和开发的趋势,维护人员创建了更小的包,需要更少的维护者和更少的工作要维护。甚至更大的项目,如Ruby在Rails上,正在采用更模块化的方法。

同时,GitHub的2020章节章节报告发现,开源开发人员越来越关注制作更小,更多的增量变化,为维护人员创造了更少的开销。 “确定的最佳实践的数量是保持拉拉请求的范围,因为它让评论更容易,导致更好的评论,如果存在问题,更容易恢复,”报告说。 “它还简化了反馈,创造势头并为团队的生产力做出贡献。”

虽然这种更模块化的方法可能使Life更容易开放开源维护者,但它可以为企业创造新的挑战,因为它会增加他们需要兽医的不同包装的总数并保持更新“潜在问题的表面积更大,因为有更多依赖性,每个由不同的开发人员管理的每个依赖性,“eghbal写道

在某些方面,这是使用自由软件的成本。 “请记住,开源维护者通常是为了做出更大的良好工作,通常没有补偿,并且没有控制他们的软件被其他人的使用方式或修改太多。” Github CSO Mike Hanley说。 “如果您取决于第三方和开源软件,则有责任在您将其结合到您的项目中以及如何使用它时执行一些尽职调查。考虑分享任何改进,有趣的用例,或者使用项目恢复的错误修复。“

除此之外,公司和个人还有很多机会,将更多地参与开源社区,他们依赖于资金和维护,促进尚未存在的社区。这一切都始于仔细看看代码背后的软件,并看到先前的未经看来的基础架构。

编码通常被视为孤独的活动,但它实际上是世界上最大的社区努力,由开源维护者,贡献者和团队领导。这些无名的英雄在长时间延长了构建软件,解决问题,现场问题和管理社区。

README项目是Github正在进行的努力,扩大开发人员社区的声音。与社区互动并探索环绕着开源世界的故事,挑战,技术和文化是一种不断发展的空间。

提名开发人员

我们总是在寻找激发挑战的开发人员,他们热情地将自己献给他们的社区。了解某人的故事应该被告知?让我们知道,他们最终可以在Readme项目中推出。

告诉我们这个人和项目。他们如何帮助你或他人?他们是他们领域的主题专家吗?请尽可能详细地提供细节。