企业开源指南:启动一个开源项目

最大限度优化组织中运行开源计划或启动开源项目的实践。这些资源由 Linux 基金会与 TODO Group 合作开发,代表了我们的员工、项目和成员的经验。

  • 英文:https://todogroup.org/guides/starting/
  • 中文:https://linuxfoundation.cn/resources/open-source-guides/starting-open-source-project/
  • GitHub:https://github.com/todogroup/todogroup.github.io/blob/master/content/en/guides/starting.md

一旦公司参与开源社区已有足够长的时间来建立声誉,它就能够发布自己的开源项目。在开源参与的这个阶段,公司可以从开放式协作中获得最大的好处。您可以开放可用于社区的专有项目的源代码。另一种常见的途径是从头开始创建新的开源项目并在一开始就从外部开发人员之间的协作中受益。

本指南旨在帮助已经精通开源的企业了解他们启动自己的开源项目所需要了解的内容。我们将带领您经历这个过程,从决定开源的内容,到预算和法律考虑等等。创建开源项目的道路可能不是本就有的,但谷歌、IBM、脸书、推特和微软等主要企业已经为您开辟了道路。按照本指南所提供的专题的且有用的建议,您将走上启动开源项目之路。

本指南的撰稿人

  • Christine Abernathy – Facebook 开源开发者 & 倡导者
  • Ibrahim Haddad – 三星美国研究院研发副总裁兼开源小组负责人
  • Guy Martin – Autodesk 开源负责人
  • John Mertic – 基金会项目管理负责人
  • Jared Smith – Capital One 开源社区经理

为何创建一个开源项目

贵公司启动一个开源项目有很多原因。您可能旨在加快创新速度,更快实现上市,收集新想法,实现互通性或事实上的标准,招募有才能的开发人员,并收集不同的观点和贡献来生成更好的代码和更好的产品。

这些好处都可以通过使用并贡献于在贵公司以外创建和管理的开源项目来实现。但是一个全面的开源战略通常还包括创建并启动您自己的开源项目。

启动项目或发布已有的项目作为对社区的开放源代码可以增强奉献意识,这样可以进一步提高公司在开源领域的声誉,并使公司对开源开发人员更具吸引力,且对其所贡献的开源项目更具影响力。将您的代码库作为讨论的起点可以带来其他优势,因为您期待参与一个由合作伙伴、供应商和用户组成的外部生态系统。

通过开放自己的代码和开发实践以供外部使用和贡献,您真正参与了开放式创新并使您的业务对于开源的使用达到了最佳效果。根据开源许可证发布的代码允许任何人贡献、检查、修改和改进它。这种协作式的开发方式是如今事实上的开发软件方式,也是技术创新的成熟引擎。

无论您的主要任务是金融服务,提供医疗服务,运营卡车队,在商店或网上销售零售商品,向乘客和航空公司乘客提供交通工具,修建道路和桥梁,或数以千计的其他专业,这都是事实。虽然这些企业当然希望保留对向客户提供的价值至关重要的应用程序和技术,但存在无数的具有依赖性的代码和软件,而且这些代码和软件对组织而言并不具有高价值。将这些技术作为一个项目对外部贡献开放可以为发展与加强这些代码创造新的可能性和机会。

“无论我们在公司内部聘用多少聪明人,在公司外部总是会有更聪明的人。我们发现开源并与外界分享我们的代码是值得的,这样可以换取外部拥有专业知识并愿意与我们分享的人们的一些很好的建议。”

Jared Smith – Capital One 开源社区经理

当公司将它们的议程向前推进至它们的员工中可能没有所需人才的领域时,它们会希望开源。通过转向开源,它们可以经常加快工作速度,并与朝着相同软件目标工作的人们合作,同时也降低了成本并改进了它们的终端产品。

开源项目提供了协作的自由——即使是在同一行业的竞争对手之间——并且可以通过多方关注过程中的代码来加速开发进程。通过合作,开发人员可以公开分享,获得大量反馈,并共同构建可扩展的、高效的且高质量的代码。

企业启动新的开源项目的 5 个理由:

  • 加速开源解决方案;为标准提供实施参考;分摊战略性功能的开发成本
  • 将市场商品化;降低非战略性软件组件的价格。
  • 通过为您的产品建立生态系统来推动需求。
  • 与他人合作;吸引顾客;加强与共同目标的关系。
  • 为您的客户提供自我支持的能力:无需等待您即可自行调整代码的能力。

来源:Ibrahim Haddad

何时创建一个开源项目

发布或创建新的开源项目的决定取决于您的情况。贵公司首先应该通过使用开源软件并为现有项目做出贡献来达到一定的开源掌握水平。这是因为消费可以教您如何利用外部项目和开发人员来构建您的产品。而且参与可以使您对于开源社区的公约和文化的掌握更熟练。(请参阅我们关于使用开源代码和参与开源社区的指南)但是一旦您熟练掌握了开源,那么开始启动您自己的开源项目的最佳时机就是“尽早”和“经常”。

发展方法论

尽早发布

  • 其他项目参与者可以提供反馈并为开发做出贡献。
  • 新的想法可以被合并,同时代码仍然是灵活的。
  • 问题可以被其他参与者标记出来,在问题变得更严重之前。

经常发布

  • 较小的更改更易于理解、调试、改进与推动成熟。
  • 保持快速的开发速度、质量保证和创新。
  • 对项目成员保持对于进展情况和当前发展状况的高度公开。

来源:Ibrahim Haddad

从何处开始

也许创建一个新项目的时间是当您意识到您有一个无法自己解决的技术难题的时候。另一个激励因素是当您无法找到并加入另一个做着您想让它做的事的项目的时候。最终,这个问题并没有正确答案。当您需要一个项目却找不到现成的项目时,您就开始创建一个项目。

对于考虑新的开源项目的企业而言,您希望通过找到您关于“为何创建开源项目?”的独特答案来开始。以提出关于什么对您的组织至关重要的许多问题开始。出于正确理由来启动一个开源项目是非常重要的。

“我认为,对于一家公司来说,考虑他们希望通过一个新的开源项目来实现什么是至关重要的。他们必须考虑一个新的开源项目对社区和开发人员的价值以及他们希望从中获得什么成果。然后他们必须理解他们要以正确方式做到这一点所必须具备的所有条件,包括法律、管理、基础架构和一个初始社区。当您提出一个开源项目时,那些是我总是强调最多的东西。”

John Mertic – Linux 基金会项目管理负责人

开始的地方包括二级编码项目,在这些项目中,企业不需要成为一个权威机构,而且这些项目中可能有数量更庞大的一群技术人员,这些来自世界各地的技术人员可以帮助您解决问题。如果它不是关键任务代码,那么它可能是一个很好的开源备选项。但是,它也应该是贵公司仍在积极使用和维护的代码。对代码的商业依赖可以实现错误修复、补丁和新功能的连续反馈循环。

“我们分享的许多项目都是我们在内部使用的项目,因此我们尝试分享我们在生产中实际使用的项目。这意味着,由于Facebook的规模,它的规模经过了实战检验;这是我们为社区贡献的专业工作。另一个关键的是,因为我们正在使用这些工具,所以我们不会让它们疲于奔命或不被支持,因为我们的工程师也需要它们的强大功能。

Christine Abernathy – Facebook 开源团队开发者&倡导者

另一个要考虑的问题是您的项目是否是独一无二的,或者其他人是否因为他们有着类似的问题已经在研究类似的代码。潜在的开源项目是否对贵公司来说至关重要,贵公司是否可以将之作为项目来提供支持和管理,以及其他用户是否也会这样做?如果是这样,那么这个想法可能很有意义。

您还需要决定是否要将您的代码捐赠给坚持供应商中立的非营利组织,或者通过拥有和运行自己的项目来保留一些控制权。而且,答案取决于您想要实现的目标。

“做一个开源项目是因为您认识到潜在项目中的某些东西对贵公司严格来说并不是很重要,但您想要对其保持一定的控 制权。当您知道通过让其他开发人员将其作为一个开源项目来参与其中,它也会帮助促进您自身的发展的时候,您可以这样做。所以,思考追求一些事情并着手去做。”

John Mertic –Linux 基金会项目管理负责人

在启动开源项目之前要问的问题

  • 我们可以在财务上赞助该项目吗?
  • 我们有一位内部执行冠军吗?
  • 是否有可能与现有的开源项目一同努力?
  • 我们可以使用 OSS 模型启动和维护项目吗?
  • 成功由什么组成?
  • 我们如何衡量成功?
  • 项目能否吸引外部企业的参与(从一开始)?
  • 是否有足够的外部兴趣来组建和发展一个开发人员社区?

来源:Ibrahim

项目计划

一旦您已经开始了您的计划,就有无数的细节必须考虑和解决,以使您的开源项目成为现实。让我们一步一步地考虑问题,从您如何决定是否发布或捐赠项目源代码开始。

决定发布或捐赠什么代码

首先,您必须决定贵公司是否希望创建或发布代码,同时保留代码和项目的所有权,或者您是否要将代码捐赠给其他人来维护和管理项目。如果代码已经存在,那么有一个相关问题是您是否会发布项目中的所有代码或仅将其中的一部分代码作为开源项目发布。

为了做出这些决定,考虑退一步去确定您心中为代码设定的目标。

“当我们的工程师决定要启动开源项目时,我们会看这几件事情。首先,我们想要确定,这个项目将对公司以外的开发人员有用吗?且这个项目将会是变革性的吗?这是我们可以展示的东西吗?以及是否将会有一个围绕此项目建立的社区,维护此项目的人能否为社区提供支持?”

Christine Abernathy – Facebook 开源团队开发者&倡导者

例如,您可能希望吸引来自其他开发人员的关于应用程序中对您的工作不是特别重要的部分的新鲜见解。或者您可能寻求额外的实际算法来检测系统监控应用程序中的日志。您只能发布与算法相关的代码,而不要将整个产品作为开源发布。这使您可以获得其他人的贡献,并帮助需要类似帮助的其他人,而不会危及您的核心业务。

开始一个项目并保持整体控制权可以让您拥有监督权并给予您帮助将其塑造成您所需要的项目的能力,同时还给予正在做贡献的开发人员自由与控制权以让他们完成工作。

贡献您的代码是不同的。这意味着放弃并将一些控制权交给其他人维护和管理。它可能是贵公司不再需要的代码,但它对其他人仍然有价值,因为它为用户填补了重要的利基。这种贵公司只可能不会再为之花费时间的代码,可以受到开源社区的欢迎与推动,并可能引出蓬勃发展的长期项目。它也可能是贵公司的关键代码,但一个项目需要中立,以吸引更多的参与者并发展更广泛的生态系统。

不要仅仅提供对您不再有用或您不再有兴趣的代码,并期望社区能够保持它的最新状态——这不是我们的意思。相反,不要使用开源社区或项目来抛弃旧代码,以看它是否能重获活力。如果这不是一个真正重要的项目,那么您将在开源领域失去信誉,而且当您以后尝试开源其他代码时,开发人员将不会感兴趣。他们会记得您过去浪费了他们的时间,这不是您想要它发生的事情。

“如果您今年创建了三个开源项目,而且它们都是非常好的项目,并且它们已经吸引了一个良好的社区,而且它们有很高的价值,那这将比每年创建 10 个开源项目更为重要。老实说,开源社区重视质量超过重视数量,而且它们会自行选择要加入的项目。如果您创造了 10 个可怕的项目,您将不会创造任何吸引力。 您想要把好东西拿出来开源。”

Guy Martin – Autodesk 开源负责人

建立一个商业案例

启动开源项目的好时机,是在您开发了一个完备的商业案例之后。这个案例是由可以实现的成果带来的,就像您正在带入市场的任何其他产品一样。然后还需要有高管的认同,因为管理层需要理解为什么要进行这项工作,目标和预算是什么,路线图将会是什么,哪些知识产权将会被开放,以及将会涉及什么代码,不会涉及什么代码。

分配资源

您还需要决定您是否可以做出必要的资源承诺,包括能够贡献于项目的开发人员的时间。开发人员的时间原来可能与他们在内部代码工作上花费的时间长度差不多。您还需要考虑您的开发人员需要提供什么时间、材料或帮助来帮助新社区中的其他人加快代码库的速度。法律团队也需要资源来参与创建可能涉及竞争对手的开源项目。而市场营销投资将确保项目在启动之后获得支持和贡献者。

您还需要为用于开始和维护项目的基础架构设置预算。这包括一个项目托管和源代码控制网站, 如保留并维护代码的 GitHub,还有漏洞解决方案和其他所需工具。

测试代码质量

您考虑在您的开源项目中使用的代码的完备性与成熟度也可以表示您已准备好开始启动您的计划。您希望确保代码的状态良好,正如我们之前所提到的那样,而不是会导致开源社区可信度灾难的垃圾代码。

同时,您必须注意的陷阱是,完美的代码并不是必需的。如果您认为代码必须是完美的,那么您将可能永远无法启动它。用您已拥有的最好的代码去做,并知道其他人会帮助使它变得更好。您也确实希望确保您开始时使用的代码不包含带有商业秘密的代码注释,引用您的专有界面或亵渎以及其他问题,因为您要确保它足够成熟以进入社区。

确保它是有用的

当您看到并证明,它对其他同样为他们的IT问题寻求这样的解决方案的人将是有用的的时候,您的项目也准备好继续前进。这些问题可以通过传统市场分析来收集。您想确定这是其他人会寻求并愿意为之贡献的东西,因此它可以成为一个成功的项目。做一些研究并问问周围的意见。参加开源活动并与开发人员和演示者讨论他们的问题和项目。

如果您发现其他人已经开始了一个类似的项目来解决类似的问题,那么您可以考虑您是否想加入这个项目工作而不是复制它。如果一个类似的项目已经存在,即使您的竞争对手在推动它,协作也将更有力,因为协作是开源社区的重要组成部分。

在开源项目上与竞争对手合作是重要的考虑事项。如果贵公司启动一个开源项目并吸引竞争对手参与,您可以建立协作和友好,所有这些都是为了代码的更好的质量,同时领导而不是跟随。

咨询您的团队

通过我们已经列出的每一项考虑,技术团队可以与管理团队合作来做出这些决定并帮助指导流程以使项目成功。您的开发人员和 IT 人员可以说明它何时何地对协作变得有用。

“如果我们找不到我们正在寻找的东西,或者如果我们发现过去发挥作用的东西在我们前进的过程中不再适用于我们,我们将启动一个开源项目。有时这是出于性能的原因。有时候,这只是成本原因或供应商锁定原因。有时候,我们正在将一大堆基础架构转移到更先进的技术上,我们过去使用的一些传统供应商只是没有做好准备,或者不愿意在云或集装箱化环境中运行他们的软件。”

Jared Smith – Capital One 开源社区经理

启动您的开源项目

一旦您正确地规划了您的项目,现在是时候采取一些更正式的步骤来设置您的项目,从法律准备开始。这包括代码扫描和清理以确保代码的安全使用,为您的项目选择正确的开源许可证,并设置项目管理以实现平稳运营。解决方案的相关主题包括:建立适当的基础架构,准备代码以启动,然后最终向社区传达项目的启动,并持续提供文件。

法律审查

项目可能发生的最糟糕的事情之一就是社区对代码库的法律清白缺乏信任。确保您发布的代码具有明确的许可证和出处是非常重要的。完整的法律审查通常有助于确保获得贡献的内容将被社区中的其他人接受。这个审查的一个重要方面是验证贵公司是否有权发布所有代码。您的法律审查应包括商标尽职调查和注册。请注意,如果您将项目贡献于基金会,请确保您在开源您的代码库之前与商标战略形成一致。

您还需要为您的项目选择许可证。记录所有许可证或知识产权的要求是很重要的。知识产权政策可以成为创建的一个有用的文件,以明确所有许可证和贡献要求。此外,请确保您的代码具有嵌入每个文件中的许可证标题或 SPDX 许可证标识符。另一个最佳实践是在每次提交时都要求开发者原产地证书Developer Certificate of Origin(DCO)‘签名’,以帮助改进代码的出处。例如,GitHub 已经构建了一个要求用于所有存储库的工具,该工具可在 https://probot.github.io/apps/dco 上获取。

熟悉常见的开源许可证及其交易是很重要的。一些有明确的专利授权,一些有防御性的终止权利,一些保护用户的权利,一些提供措施条款,有些只是在您的行业中更简单或更普遍地被接受。您还需要为了您的依赖性考虑您的软件可能与其相结合或与之整合的其他代码库中正在使用的许可证。

除了软件源代码之外,还应考虑项目其他方面的许可证要求。如果您预计需要公司对专利授权的承诺,或者稍后重新授权项目的能力,那么您可能需要查看一些更常见的贡献者许可协议Contributor License Agreements(通常称为 CLA)。并非所有的 CLA 都是相似的,所以仔细考虑这个选项。还要注意,CLA  可能成为参与的障碍,因为开发人员通常需要经过艰苦的审批流程才能签署协议。

您的项目也可能产生不是软件的交付物。如果您的项目正在生成文件,请讨论您是否应该为文件使用特定的许可证。例如,许多开源项目将开源许可证用于软件,而将创作共用授权Creative Commons license(CC)用于文件。此外,有些项目寻求创建可能由其他人以各种方式实施的规范。这些项目应考虑使用规格许可证的选项。其中一个例子就是开放容器倡议Open Container Initiative(OCI),它使用了 OWFa 1.0 版—— 专利专用许可证,以及他们正在构建的开源软件实施的 Apache 许可证 2.0 版。

许可证的另一个常见问题是在著作权许可和许可证许可之间进行选择。著作权通常用于描述需要相互共享的许可证,并且通常试图保证用户接收他们被提供的软件的源代码的权利。许可证许可倾向于使其他人无需履行下游义务即可轻松参与和分享贡献。这特别有利于软件部分,这些软件部分要求软件生产商能够基于开源代码库分发专有软件,而不泄露其变更。

每种许可方式都有其优点和缺点,但要注意分裂项目的潜在风险,这是要求互用性或为各种供应商解决方案提供可移植性的软件的一个特殊问题。如果商业解决方案通过了社区创建的测试或一组要求,那么通常会通过创建允许使用项目商标的一致性程序来解决此问题。预先考虑这一点将有助于预示您的法律审查和项目计划。(有关开源法律问题和注意事项的更多信息,请参阅我们推荐的阅读清单。)

总而言之,法律审查过程中的步骤包括:

  • 考虑开源对贵公司知识产权的影响
  • 确保完全符合开源许可证
  • 选择要发布的源代码的开源许可证,在您的项目中非常清楚地记录所有许可证要求
  • 决定您是否需要贡献者协议
  • 考虑社区可能提供的非软件输出以及恰当的许可证,如文件和说明书
  • 决定与商标相关的任何考虑因素
  • 决定是否还有其他因素可以纳入您的生态系统计划中,例如一致性测试

技术审查

技术审查验证了源代码可以在不依赖于其他内部代码或开发实践的情况下运行,并且它不包括公司在开源发布中不包括的第三方代码。

您需要确保您计划发布的代码中没有任何部分违反了其他公司的知识产权,例如专利。有大量的专利兜售者会违反他人专利寻求代码。这是一个具有重大负面影响的巨大问题,所以您必须从一开始就把它做好。为此,公司通常使用专门的扫描工具扫描代码,以确保代码清白。添加许可证和版权声明,以及描述它是什么与如何使用它的文件。

清除非公共组件的关键依赖性技术审查应包括所有许可证和版权声明的验证,而且私人代码评论应予以清理。 步骤包括:

  • 提供文件和用例示例
  • 清除内部评论,对其他内部代码的引用等
  • 确保编码风格一致
  • 更新源代码文件中的版权声明
  • 在源代码文件中添加许可证通知
  • 将许可证文本作为文件添加至根目录中 

管理

为了准备启动项目,您还必须定义项目管理的技术要求。管理是项目作出关于战略、发布、方向和发展重点的决策所通过的过程。决策制定应该公开且开放,以帮助确保所有参与者都了解项目的变化并保持透明度。另外,请考虑您的管理是否应包含升级问题的途径。

在过程的早期决定参与项目管理机构必须达到什么标准是很重要的。关于如何追踪功能和漏洞, 如何提交代码以及由谁来管理发布流程的决策应该正式化。

您希望确保项目委托的人员拥有运营和维护项目所需的工具。这就是您的开源项目办公室和经理参与之处。

“您需要确保需要完成这些工作的人员被充分授权以获得成功。您还需要意识到不要将项目的业务部分与项目的技术部分混为一谈——他们需要有独特的领导力。这样您就不会使事情停滞不前。您没有让人们做出关联之外的决定。让业务部门帮助使技术部门更加成功。”

John Mertic – Linux 基金会项目管理负责人

技术流程

在启动之前,创建一个标准发布流程来安排代码的定期发布通常是有帮助的,因为项目维护人员进行了更改和改进。应该为项目的开发社区和业务部门设置具有明确定义和可见细节的时间表。

这些代码的发布频率应该取决于您的社区的期望。如果项目是以企业为中心的,而且您正在尝试构建非常强硬的项目,那么您的发布时间表可能是每年两次。如果项目范围较小,且较灵活,而且您试图从中获取一部分内容,也许您可能每月或每周发布代码。时间表的关键在于,社区必须规定时间线,并理解项目的能力以从速度的角度支持项目,同时向用户提供他们需要和期望的东西。

如果社区提供的反馈意见是发布得太快或太慢,那么您需要查看过程并进行一些调整。这里最重要的是一致性、可预测性和可见性。

领导

在开始之前,设置领导角色也很重要。这对于不同的项目可能意味着不同的事情。如果您正在与多个企业参与者一起启动一个多公司经营的项目,则该项目可能需要更正式的管理,例如管理委员会或其他管理组织。其他安排可能只需要一个从技术角度监督开源项目的所有方面的技术委员会。委员会的组成主要包括技术领导,以及向执行团队提供关于进展和项目需求的最新信息的联络员。只要技术成员和管理人员认为合适,法律团队就可以被引入。

您的顶级架构师也一定会在那里,还有其他知道代码库工作原理的人。总而言之,委员会成员将对项目进展以及来自开发人员社区内部的支持有一个远景。 那些是您想要他们参与计划过程的人。

“您对贵组织的信托责任是为代码做贡献,以确保这与您的董事会和您的股东以及所有受此知识产权委托的人保持一致。您必须确定它们与此一致。但是,那么您必须考虑到潜在的负债、风险和类似这样的问题,正视这些问题。不要轻视这一 点。”

John Mertic – Linux 基金会项目管理负责人

基础架构

在项目启动之前,您需要为项目准备一个存储库。这实质上是一个代码库的基础架构,在这个代码库中项目将随时对贡献者开放。许多项目使用众所周知的 GitHub 或 GitLab 存储库,或者使用如 Gerrit 这样的工具托管自己的存储库。 还有很多其他选项可用,但请记住,考虑让开发人员更简便地参与和从事您的项目工作通常是很有用的。选择您的平台,开立一个账户,并为代码准备一个地方, 设置工作流程并做好准备等待魔法发生。

漏洞、问题和功能的跟踪也应作为项目基础架构计划的一部分。您希望为贡献者提供一个简单的地方,让他们编写需要被解决的问题的报告和添加的可能有用的新功能的要求。然后自动构建并测试系统流程,这些流程可能需要作为项目 GitHub 存储库的一部分被包含在内,以便在扫描和检查代码来确保其质量的同时保持您系统和项目的顺利运行。

网站

下一步是为该项目创建一个公司中性的网站或维基页面。该网页为社区提供了一个可以找到项目信息的地方,包括文件、代码下载链接等等。该网页还可以提供关于项目领导、范围、用户和贡献者、预算、管理和其他细节的详细信息。

沟通

为您的社区提供沟通渠道以提出问题来寻求帮助是至关重要的。您需要查找可整合到整个开发工作流程中的工具(例如,接收支持请求、代码签入、错误日志和其他任务的通知)。您还需要提供重要的论坛和社区成员机制,以便从正在从事项目工作的其他人那里快速获得答案。所有这些都是帮助实时推进项目的重要沟通方式。

需要考虑的一个项目工具是 Slack,一个在线团队项目管理和沟通平台,在这个平台上用户可以访问和共享消息与文件,组织工作流程,执行信息搜索等。 但是,Slack是一个专有工具,并且可能需要花费金钱来维护。还有其他开源选项,如 IRC、Gitter.im 等。例如,Hyperledger 项目使用一个名为 Rocket.Chat 的沟通系统,这个系统是完全开源的,并提供与 Slack 类似的功能。如果您需要现代论坛,Discourse 是一个很好的选择,它是完全开源的并且还提供可选的托管服务。

在选择沟通系统时,请注意任何形式的锁定、财务成本以及将来迁移至新系统的容易程度。随着您的社区的成长,您需要适应所有新的沟通渠道,不久之前,新闻组成为许多开源项目的首选沟通方式。

“我们各种开源项目中的大约 190 个项目被安排在 GitHub 的 Autodesk 部分的一个中心位置。我们过去至少有 14 个不同的部门专注于 Autodesk 开源项目。通过使用来自 Twitter 的一些代码,我们将 14 个部门放在一个单独的视图中,以供访问者浏览。从公司的角度来看,确保人们看到您已经启动的内容是很重要的,并且确保有一个他们可以找到的中心位置来让他们提出问题。“

Guy Martin – Autodesk 开源负责人

启动与维护

最终,在完成所有规划、准备和多方面审查以及所需步骤之后,您将准备好启动并开始维护您的开源项目。您将通过公共规划、开放式沟通和完整的从顶层至底层的基础架构,以及您为管理、技术流程以及两者间的一切所创建的步骤来达成目标。

一旦这些关键部分全部到位,便是时候向全世界开放项目,并从贡献者那里获得投入。当感兴趣的贡献者检查这个项目并且看到它是周到的、简洁的且有价值的时,他们将会很高兴参与进来,因为这是他们可以使用的东西。

启动之前的必要任务:

  • 事先简短介绍启动合作伙伴
  • 确保所有项目基础架构正在运行、安全且可扩展
  • 确保开发人员加入并监控沟通渠道(IRC,邮件列表等)
  • 发布源代码
  • 遵循开源开发模式

不要忘了营销!

当然,启动并不意味着您工作的结束。为了保持项目的顺利进行,还有一系列额外的业务与营销步骤也需要关注。它们包括推广项目、制定成功的运营战略、提供切合实际的预算和项目品牌战略, 并建立活跃的社交媒体账户和有效域名以支持其长远的成功。

营销评估为品牌建立了指导方针。这一点尤其重要,因为它有助于确保市场信息的一致性。营销评估的步骤包括:

  • 设计一个项目徽标、色彩设计、网站、担保物等。
  • 正式制定品牌指南
  • 为项目注册社交媒体账户(Twitter、Facebook、LinkedIn 等)
  • 既然您拥有这个项目,那么推广它并让人们知道它就在那里,是您的工作,这样人们就可以使用它并在项目上工作。作为营销人员,这是一个有趣的挑战,因为在这里对您的成功的最后的检验是您可以驱动多少人加入项目中以贡献代码、参与论坛、提供漏洞修复和报告问题。为项目注册域名

“由于社区对此至关重要,因此您需要确保您照顾好社区。这可以体现在一些小事上,例如快速处理请求并确保您的项目能随时提供帮助。所以,当有人来到您的项目时,他们可以看到它,并知道它的状况如何。”

Christine Abernathy – Facebook 开源团队开发者 & 倡导者

建立社区

项目启动之后,监测外部社区的活力是至关重要的。

社区建设不会自动发生。在项目的早期阶段,可能有必要在主要会议上举办开发人员活动或赞助商聚会以建立势头。

指定社区经理或社区倡导者管理期望和履行项目管理义务与透明度义务也是非常重要的。

持续的活动包括:

  • 确保明确传达方向或管理上的任何变化
  • 遵循其他类似社区的最佳实践
  • 鼓励并提供面对面社区建设的机会
  • 识别合适的活动并举行社区提交会谈
  • 考虑开展本地聚会

通过建立多元化的贡献者群体,您可以通过与其他企业和将其视为有价值的项目的组织进行讨论来确定他们是否有兴趣投入时间、资金和其他资源来扩展您的初始努力,稍后决定将您的项目推进至下一个层面。通过从其他人那里获得投入和资源,该项目可以得到扩展和成长,可以为更多的贡献者做更多的事。

这种增长意味着其他企业可能想要贡献更多的资金来让他们自己的开发人员加入项目工作,并通过在您已经开始的工作背后加入他们的支持来帮助推进工作。这可能涉及 10,000 美元或 250,000 美元或更多,取决于项目的重要性及其对于其他公司的意义。您的项目一旦开始,如果项目可以帮助其他公司完成任务的话,其他公司可以加入进来为项目工作贡献资金。

这种情况如今经常发生,因为企业和组织都意识到他们试图解决的技术问题比他们任何单独一方都要大。正是此时,他们可以开始看到与其他公司一起参与供应商中立的联合项目的战略价值,这些项目正致力于更好地解决企业面临的技术问题。

这种方法的几个例子是:Hyperledger 的开源项目,是由 Linux 基金会赞助的促进跨行业区块链技术的协作工作;云原生计算基金会的开源项目,是将开源软件用于创建现代私有云和公共云。企业不仅为这些大型项目贡献开发人员为之工作,而且还提供大量资金来帮助资助、推进和驱动技术向前发展。

结语

至少在第一次跃跃欲试去启动一个开源项目时可能有点神秘,甚至是可怕。但是当您的企业看到并量化自身在过程中可以获得的指数级别的价值时,第一个项目可能只是贵公司更加战略地使用开源软件的开端。了解其他人如何完成开源之路来帮助您的下一次开源努力取得成功。

开源项目启动清单

注意事项

  • 评估加入现有开源项目的可能性
  • 评估公司使用开源模型启动和维护项目的能力
  • 评估其他公司从一开始就加入该项目的可能性
  • 评估成功因素并为开源项目设置适当的指标

业务战略和计划

  • 确定并为您的项目设定目标
  • 从利益相关者那里收集做这件事的原因
  • 选择要为项目考虑的代码
  • 确定项目是否将包含应用程序的所有代码或仅包含部分代码
  • 为选定的提案创建一个商业案例
  • 确定是否有高管认同此举
  • 为开发人员和资金计划资源承诺
  • 设置成本预算,包括开发时间、基础架构和相关费用
  • 集合高管和技术人员进行项目讨论并制定决策
  • 辩论并最终确定项目范围和选择的代码

法律审查

  • 考虑开源对贵公司知识产权的影响
  • 确保完全符合开源许可证
  • 选择要发布的源代码的开源许可证,在您的项目中非常清楚地记录所有许可证要求
  • 决定您是否需要贡献者协议
  • 考虑社区可能提供的非软件输出以及恰当的许可证,如文件和说明书
  • 决定与商标相关的任何考虑因素
  • 决定是否还有其他因素可以纳入您的生态系统计划中,例如一致性测试

技术审查

  • 清除非公共组件的关键依赖性
  • 提供文件和用例示例
  • 清除内部评论,对其他内部代码的引用等
  • 确保编码风格一致
  • 更新源代码文件中的版权声明
  • 在源代码文件中添加许可证通知
  • 将许可证文本作为文件添加至根目录中

管理和流程

  • 定义项目管理步骤和结构
  • 设置代码库、漏洞报告和代码测试基础架构
  • 创建支持 Slack 的渠道、论坛和 Wiki
  • 为项目的成功建立开放的贡献者沟通渠道

品牌与营销

  • 制定营销战略以促进积极的贡献者社区的发展
  • 设计一个项目徽标、色彩设计、网站、担保物等
  • 正式制定品牌指南
  • 为项目注册社交媒体账户(Twitter、Facebook、LinkedIn 等)
  • 为项目注册域名

启动与维护

  • 启动项目并开始开发工作和贡献流程
  • 指定社区经理或社区倡导者
  • 确保明确传达方向或管理上的任何变化
  • 遵循其他类似社区的最佳实践
  • 鼓励并提供面对面社区建设的机会

TODO Group

这些资源是与 TODO(Talk Openly,Develop Openly)组织合作创建的, 该组织是 Linux 基金会中专业的开源网络组织。特别感谢奉献自己的时间和知识来制作这些综合指南的开源项目负责人。参与制作的公司包括 Autodesk、Comcast、Dropbox、Facebook、Google、Intel、Microsoft、Netflix、Oath(Yahoo + AOL)、Red Hat、Salesforce、Samsung 和 VMware。如想了解更多信息,请访问:todogroup.org

企业开源指南:启动一个开源项目

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/56598.html

(0)
上一篇 2021年8月7日
下一篇 2021年8月7日

相关推荐

发表回复

登录后才能评论