您好,欢迎收听Kodish,一个探索现代开发者生活的节目。我们将深入探讨编程语言和框架、数据和事件驱动架构以及个人和团队效率等主题,所有内容都针对开发者和工程领导者量身定制。本期节目是我们DevLive系列的一部分。
欢迎收听Kodish。我是Alyssa Arvin,Salesforce开源项目办公室的高级经理。今天与我一起的是Salesforce OSPO的最新成员Jim Jagielski。大家好。很高兴来到这里。你在开源领域拥有非常令人印象深刻的背景。你介意向我们介绍一下你在你令人印象深刻的职业生涯中所做的事情吗?
我实际上是在为NASA工作时第一次接触开源的。从很多方面来说,我实际上是一位火箭科学家。
我的工作实际上是为太空飞船上的电力系统编程,使用一种叫做建模和仿真的技术。这基本上是为了确保太阳能电池板和电池的尺寸足够大,以便所有实验都可以在航天器内部进行。
因为它确实涉及大量的编程,所以我选择的平台是Unix,这主要是因为我在大学时使用过它。在NASA,我们只有VAX VMS机器,没有Unix。但我们也在迁移到PC平台。我们正在从大型机转向PC和Mac。
大约在这个时候,苹果公司推出了他们自己的Unix版本,叫做AUX。
作为一个苹果迷,也是一个Unix迷,这对我来说是一个自然的平台。所以在NASA的早期,我迁移到了运行AUX的Macintosh。我开始将许多与互联网相关的程序、守护进程和应用程序移植到这个平台上。移植基本上就是翻译它。它是可用的。所有这些程序都可以在Sun OS和Solaris上使用。
当时在Linux上,但实际上不在Apple AUX上。这正是让我开始参与开源运动的原因,因为那时,互联网的所有基本基础设施,比如Sendmail,比如DNS bind,都是开源的。它们都在非常非常宽松的许可证下可用。即使我们没有称之为开源,它也都是关于软件的协作和共享。
这种环境非常吸引我,因为正如我之前所说,它使我的工作更容易将这些非常非常重要的程序移植到我正在使用的平台上。
但我也很喜欢与大量外部人员互动和合作的想法。因此,随着互联网变得越来越成功,万维网开始兴起,这比我在NASA做的工程更吸引我。我因参与和参与互联网和Apple AUX而变得更知名
而不是我在NASA做的工作。大约在这个时候,我还开始了我自己的副业,叫做Jagunet,这是一个ISP,一个互联网服务提供商。我们提供拨号上网和网络托管,这让我参与了Web服务器技术。当时,Apache Web服务器刚刚启动,所以我几乎是Apache小组的原始成员之一。
这促成了Apache软件基金会的成立。我想,这真的是我在开源社区中第一次获得重大参与和关注或声誉,成为Apache软件基金会的联合创始人之一。真正伟大的是
实际上,将近20年,我都在ASF的董事会任职。ASF是一个基于会员的组织。对不起,我本来想说ASF代表Apache软件基金会。是的,是的,它确实代表。Apache软件基金会。说得对。
你会对那些刚开始接触开源或可能一直在为开源做贡献,但让我们说只是在开发者方面的人说些什么呢?开源和开源项目真正允许所有贡献者,不仅仅是代码贡献者,还有开发和贡献各种内容、媒体、才能和技能的人
真正与许多不同的人互动。因此,找到一个你热衷的开源项目或一组开源项目。
因为一般来说,大多数参与这些项目的人也对这些项目充满热情。因此,即使有一些项目你可能想要或需要贡献,因为你的日常工作或你有点感兴趣的事情,但你感到被迫要贡献。
开源也为你提供了参与你热情的机会。因此,我肯定会确保你正在查看你感觉受到欢迎的开源项目和社区,这些项目和社区具有非常严重的影响。
对多样性和包容性标准的参与和遵守。确保社区健康、参与、热情和欢迎,因为当你成为开源项目的一员并做出贡献时,你正在做的事情是
你真的付出了很多,你的才能和技能,你很多的心血投入到这个社区中。你真的应该把它献给一个欣赏它的社区。
所以真的花一些时间找到适合你的项目。不要把自己局限于一个技术领域。而且,如果你在一个项目或社区中,它开始变得有毒或不健康,你从中获得的收益不多,那就给自己自由和灵活性离开。有很多其他的项目,我很肯定。
会娱乐你并吸引你。所以善待自己,因为有很多项目正渴望得到每个人的才能和技能。
我喜欢那部分。你说开源是把自己的一部分奉献给那个项目。我也喜欢你提到的,你知道,找到一个专注于多样性和包容性,并且是一个欢迎社区的项目。我知道这是我们在内部推广项目时关注的事情。所以我们这样做的一种方法是寻找一个
项目将拥有的行为准则。从一开始就有一些其他的技巧和窍门来查看一个项目是否受欢迎,并且是否强调多样性和包容性吗?
我绝对认为行为准则是主要和不可分割的。你绝对需要确保开源项目和开源基金会(如果它在一个基金会下)包含这一点,并且他们认真对待它,他们不会敷衍了事。你当然可以弄清楚他们有多认真地对待
通过他们投入的监控代码和行为准则考虑的资源数量,以及确保人们遵守它。开源的一大优点是
大多数活动,大多数沟通都是通过公开、公共、透明的媒体进行的,你知道,有时是Slack频道。很多时候是电子邮件列表,这些列表很容易存档和搜索。因此,你可以通过查看其中一些档案来真正了解项目的完整历史。
我认为这是另一种很好的方法,可以判断你想要参与的项目是否真的值得你花时间。
另一件事是查看他们鼓励贡献的资源。仍然有一些开源项目,其中唯一有价值的贡献是代码贡献,我认为这真的是非常非常糟糕的。开源项目。
要成功,要蓬勃发展,要健康,真的需要各种各样的贡献和各种各样的贡献者。所以在多样性方面,当你刚开始接触一个项目或成为一个项目的核心贡献者时,
你如何去做项目的营销,以确保它能够接触到多元化的受众,而不仅仅是向你的朋友寻求贡献,以确保你正在扩大贡献者的范围?是的,我认为使用社交媒体绝对是一种方法。
确保外部世界知道所有贡献都有价值,所有贡献都有意义非常重要。我还认为,在许多方面,通过利用正在使用你正在开发的软件项目、正在使用你正在开发的开源程序的人员(无论是个人还是公司客户),
他们也可以在加强拥有多元化社区、多元化贡献者和多元化贡献的价值和必要性方面大有帮助。这不仅仅是当前贡献者担心或应该担心的事情。这真的是整个社区都需要的事情。
需要关注的事情。社区不仅仅是贡献者。社区实际上是最终用户、使用它的公司和组织。
他们是否回馈贡献在某种程度上无关紧要,因为通过使用开源项目,公司基本上几乎是在隐含地支持该项目。我认为通过这样做,他们在某种程度上也有必要确保他们正在使用的项目与他们公司内部的价值观相匹配。
是的,我认为这是一件很棒的事情,并且扩展了我看待它的方式。我相信它也做了其他人,它不仅仅是贡献者,也是使用该项目的人。是的,我认为看待它的一种方法是,当公司和企业使用和使用开源项目时,
他们会提供关于需要添加到开源项目中的问题、问题和增强功能的技术反馈,以使其对更大的用户社区更易于使用和更可行。这种非常非常紧密的反馈循环,我认为再次是开源和开源开发方法不同于旧的死板的开源开发方式的原因,在旧的死板的开源开发方式中,你
人们会创建软件并告诉你这就是你想要的,而不是最终用户说,不,这就是我想要的。事实上,我甚至会花一些时间和资源来添加其中的味道。你知道,这很好
最终用户得到了他们想要的东西。我相信这会给实际的开源项目带来一些压力。你会说这是开源中最具挑战性的部分吗?或者你认为运行开源项目中最具挑战性的部分是什么?我绝对认为,公司对软件开发的期望之间的互动、动态
和相对整体的、有机的驱动方式
是需要解决和处理的最大问题。曾经有一段时间,开源项目说,你知道,当软件准备好时,我们就发布软件。例如,我们不遵守人为的发布计划。其想法是,再次,因为它是由志愿者完成的,你希望他们有自由和灵活性去做。
因此,问题将是,好吧,如果开源项目没有正式的官方版本,
我们作为一家使用开源的公司,该如何说,好吧,在这个提交级别或开源存储库中的这个特定时间点,我们在内部使用吗?随着那些为开源做出贡献的人意识到,这正在变得越来越不重要了
在其中拥有更可靠、更健壮和更知名的发布计划确实符合他们的最大利益。这不是为了流程而流程。你并没有使开源公司化,但基本上,你再次使人们更容易使用开源。正如我之前所说,这确实是开源贡献者想要做的事情。你这样做是因为你希望人们使用开源。
所以我想回到我们一直在谈论公司使用开源,并回到个人贡献者这一点。所以假设,你知道,尤其是在Salesforce,我们是一家非常大的公司。我们绝对鼓励开源贡献。但是你会如何为个人贡献者提供工具,例如,
腾出时间为开源做出贡献,说服他们的管理层,这对我的工作、我的个人发展和整个公司都很重要。
有几种方法可以看待这个问题。首先,显然,如果你在公司内部工作的项目正在使用开源,因此你作为日常工作的一部分所做的贡献、增强或修复直接影响到你正在使用的开源项目,那么其中一件事是
你不希望从公司的角度去做的是创建这个缓慢但越来越不同的开源项目的派生版本和你对该开源项目的内部实现。因为将会发生的是,随着该派生版本开始真正非常不同,将它拉回到你内部的开源项目副本以及
折叠到外部开源项目中的增强功能、修复程序、补丁和改进变得更加困难。因此,你通过这样做会产生大量的技术债务。
因此,仅仅鼓励人们将这些补丁回传到上游的开源项目中,就意味着作为一家公司,你可以避免这种技术债务,这非常重要,并且有助于确保
你的内部软件项目仍然尽可能健康、可行和无风险,因为你不仅获得了公司内部每个人都在软件上运行测试的优势,而且还获得了外部开源社区的保证。
甚至还有一些人,你知道,他们的成长计划的一部分,这再次与之非常吻合,我想成为一个更好的工程师。我想成为一个更好的文档编写者。我想成为一个更好的技术作家。那么,通过利用和使用你在开源中获得的经验,你将成为一个更好的员工,也是公司更好的资产。所以有很多,
原因说明,这不仅对个人贡献者有意义,而且对管理层来说,也应该鼓励尽可能无摩擦的外部开源贡献流程。
那么,就你个人而言,你在职业生涯中换过公司,当然现在来到了Salesforce,公司的开源参与程度有多重要?我想补充一点,对于Salesforce来说也是如此,你最终选择Salesforce作为你职业生涯的下一步的原因是什么?
在我的职业生涯中,我已经看到了企业领域中各种各样的开源项目办公室。你知道,有些公司甚至直到今天仍然认为开源就像我不我不明白为什么我们还需要参与开源一样,你知道,更多了。
并忽略它。对于像我一样认真和热情地对待开源的人,以及许多其他人来说,这不是你想为之工作的公司。还有一些公司和开源项目办公室认为开源是一种必要的邪恶,好吧,我们必须参与开源项目。
因此,我们不妨制定一些流程和程序来确保我们正确地做到这一点。同样,这不是那种让你对他们的开源热情、他们对开源的参与产生温暖模糊感觉的公司。
Salesforce在这方面绝对不同。Salesforce显然将开源视为公司的战略优势,但他们也明白,这是一种推动文化的方式。这是一种确保团队协作、沟通的方式,并且在这个过程中,
推动由此产生的创新。它真正不仅使参与其中的个人受益,也使那些了解其基础的公司受益。所以如果我现在在一个没有OSPO的公司工作,这个播客会说服我启动它并开始优先考虑那里的开源。我希望如此,是的。
但是假设,你知道,我在X公司工作。我们还没有OSPO。我们应该采取哪些步骤来启动这个OSPO?创建OSPO的一个真正关键方面是确保你了解其背后的原因。
这实际上取决于开源对你和你公司文化的意义和有效性。我明白,对于一些公司来说,你知道,这可能真的不重要。我认为这不是公司的正确长期愿景。但如果是这样的话,我肯定会确保你正确地进行开源,你遵守你正在使用的开源项目的社区标准,
我认为最重要的事情是意识到,当你创建、制定和发展开源项目办公室时,你将要做的最重要的事情之一就是与与项目相关的外部开源社区互动和学习。但这最终真的是一种文化转变。
这是一个想法,你正在与外部实体、外部人员合作,
使用开源代码,并且你想确保你是一个优秀的企业公民,你是一个优秀的社区成员。确保你对开源社区开放和诚实。确保你以非常透明的方式与开源社区互动。确保他们了解治理结构,如果你有一个开源项目,那么你正在开源它并将其发布到开源社区。
我认为,这对于开源社区来说非常重要,那就是他们知道自己正在参与什么,而你不会为他们改变它。
有很多很棒的资源。首先,我认为,当一家公司参与开源并开始创建开源项目办公室时,真正理解你正在与社区互动,并与社区内部的人互动。因此,在这种情况下,我真的很推荐John O'Bacon的书《People Powered》。
但这确实是一个很好的例子和一个很好的说明,说明为什么公司应该担心为什么与人和社区的互动是有意义的。
还有一些来自世界各地各种OSPO的人组成的团体,叫做TODO组。那是T-O-D-O组。它有点像Linux基金会下的一个子基金会。他们提供了很多资源和指南,关于如何创建开源项目办公室,如何鼓励管理层创建开源项目办公室,
诸如需要哪些程序和流程之类的事情。当然,它肯定不是一种一刀切的环境,但它是另一个极好的资源。我认为,另一个在理解如何基本上利用开源项目的一些经验教训方面非常有用的资源是
在你的内部软件开发和方法中。除了开源之外,还有一个过程或方法叫做内部源。有内部源公共联盟
这真的是另一个很好的资源,它会鼓励人们不仅了解如何与开源社区互动,还了解如何采用一些开源方法来进行软件开发并将这些方法引入公司内部。最后,如果我不建议人们也看看,我会感到很遗憾
我们称之为Apache的方式。这些基本上是一套指导方针,一些关于ASF(Apache软件基金会)如何创建和运行开源项目的基本基本原则。我认为这很可能是ASF下、Apache基金会下成功的开源项目或项目的指导性示例之一。
你在职业生涯中还发现了哪些其他资源,让我们从那些第一次贡献的人开始,他们真的不知道如何或在哪里开始。所以我们谈到了,你知道,找到合适的社区,但有些人甚至不知道如何在开源中开始。他们可以查看哪些演讲或播客资源来入门?嗯,
正如我之前可能提到的那样,我非常支持潜伏在各种开源项目中,基本上,你知道,查看Slack频道,关注它们,阅读电子邮件列表等等。以便了解开源社区的氛围,并确保这是你想要参与的社区。
此外,查看他们的错误跟踪器是什么,无论是Jira还是GitHub问题等等。真正优秀的项目、真正优秀的社区、那些真正希望鼓励第一次贡献者加入的社区,通常会有一些标志或标签,叫做“好的第一个问题”或“适合新手”等等。
所以搜索它们。这些是专门设计用于相对容易地让那些不确定该做什么的人使用的问题、错误或增强功能,但也为第一次贡献者提供即时价值和即时反馈。
通常,这些项目也至少有一两个人注册成为这些人的优秀导师。因此,如果他们看到,例如,有人说,嘿,我对这个感兴趣。
你知道,在这个GitHub问题中工作。这是一个我正在考虑贡献的补丁。会有人帮助你并指导你说,好吧,这是一个相当不错的补丁。你考虑过这个吗?而不是仅仅,你知道,说,不,不够好,再试一次。你知道,那些是你绝对想要避免的社区。这实际上是项目的责任。所以大多数项目,正如我之前提到的,
真的鼓励这样做。因此,寻找那些有专门的导师或有某种孵化器或新贡献者和新社区成员入职流程的项目。寻找那些专门为新贡献成员保留项目或问题的项目。这些项目对那些想要的人来说非常有吸引力和前景
更多地参与开源项目。而那些拥有contributing.md文件或类似文件的项目,则清楚地说明了你可以如何参与以及随着你参与的深入,你的未来将会如何。
好吧,非常感谢Jim加入我们。我们非常高兴能让你成为Salesforce开源团队的一员。我知道我个人非常高兴能与你一起工作,看看我们可以在Salesforce内部使用开源做什么,以及我们还可以从外部带来什么。太棒了。是的,我也期待着。相信我。
感谢您收听本期Kodish播客。Kodish由Heroku制作,它是部署、管理和扩展云中应用程序的最简单方法。如果您想了解更多关于Kodish或Heroku任何播客的信息,请访问heroku.com/podcasts。