典型开源解决方案开发简介

9月11日, Java集会在圣彼得堡举行,完全面向Apache Ignite 。 非常感谢组织者的邀请,并有幸代表这个非常开源的开发人员谈论开源。 鉴于听众的积极反应,我决定与无法参加会议的人分享演示文稿。

在剪切下,您会发现演示文稿的文本版本,充满了对开源的主观认识,包括肯定和否定。




因此,我叫Anton Vinogradov,在过去的四年中,我一直在开发开源Apache Ignite项目。 以他的例子为例,我想谈谈开源的完成方式,从社区参与中可以收获什么个人利益,最后,我想激发您的参与。

传统免责声明。
我立即警告您,我对开源的态度是主观的,不应被视为唯一的态度。



我将使用Apache Ignite的示例来谈论开源-Apache Ignite是Apache Software Foundation的众多项目之一。 ASF是拥有近20年历史的最大的开源社区之一。 首先,它的成功归功于动机的过程和原则,该过程和原则最早可以追溯到1999年,但今天仍然适用。 Dmitry Pavlov在他的文章中详细描述了社区的这一“哲学”方面,但是我们将使用Apache Ignite的示例来考虑开源开发的“应用”方面。

假设您决定为社区发展做出贡献。 怎么做?


通常,不能说开源是关于代码的。 许多不同的活动可以做出重大贡献,只有其中一些与代码直接相关。


  • 如果发现问题,请在用户列表中注明该问题的解决方法;
  • 如果您准备好了,则可以参加对开发人员任务的研究,并协调行动。
  • 如果您是一个很酷的开发人员,那么这是您编写大量优秀代码的机会。
  • 它将能够修改一个很酷的审稿人;
  • 如果您是一位好经理,则可以帮助发布发行版;
  • 如果您像我一样是讲故事的好手或只是该项目的粉丝,那么您可以参与推广该解决方案。


对开源最重要的贡献是将产品的问题及其缺点告知社区。 但是在这里重要的是要了解,开放源代码不是定制开发,社区也不欠您任何东西。 90%的成功取决于您。 如果您发现问题,那么您对开源的贡献将在于其详细的分析和寻找解决方案。 预计您将积极参与问题的讨论。 如果您报告并离开,该问题将无法解决。

理想的选择:您来了,讨论了问题,并准备将线程推进到最末端,以解决问题。

在用户列表中讨论但未解决的每个问题都属于开发列表,正在解决该问题。 在这里,开发人员讨论如何正确实现功能或解决错误。


Devlist是项目的一种“力量所在”,您可以在这里与出色的开发人员进行交流,这些开发人员可能在培训,研讨会,咨询,撰写文章中赚到很多钱。 但是这些人正忙于编写真实的代码,而这些代码恰好是当今最先进的代码。 在我看来,除了在开发人员列表上,您根本无法与这些人进行交流。

此外,开发人员是一种经过深思熟虑的信件,您有机会思考一两个小时,然后才回信,而使者则不像信使那样,在信件中很难阅读和理解全局。 以我的理解,开发人员是如此优秀的专业技术期刊,您不仅可以阅读,而且可以直接参与其创建。

与开放源代码中的任何作品一样,开发者清单中的作品是公开的。 如果您对此做出任何贡献,那么您当前/将来的雇主或同事将会用Google对其进行搜索。 对我个人而言,在评估应聘者时,他在少女中的参与比在github上的个人资料更为重要。 github上的配置文件仅表示编写代码的能力,而在开发人员列表上的经验也表示团队开发的经验。 而且,这种经历很重要,个人责任而不是集体责任。 在我看来,这项技能对于优秀的开发人员而言最重要,而在与开放源代码的开发人员进行交流时,最好地加以开发。

我们直接进行开发。


在就开发人员的改进达成协议并通常商定基本的设计决策后,就可以执行该任务了。 这项任务通常是由提出和交付该任务的同一人实现的,但并非总是如此。 一个人无法在合理的时间内掌握某些功能-尤其是当它是一半Ignite的功能时。

如果您是一名优秀的开发人员,并且愿意看开放源码-请选择一项已完成的任务,与作者进行协调并开始进行学习。

在开放源代码中,所有通信都是公开的。 讨论可以在开发人员列表中进行,也可以在问题跟踪器中进行。 重要的是,尽量避免在不进行讨论的情况下执行某些操作,因为执行错误操作的可能性很高。 最好在开始开发之前弄清所有关键点,以免做太多工作。

现在重要。

开源开发是一门很好的免费学校。 优秀的开发人员,他们所在领域的专业人员可以分解任务,让您执行任务,在遇到任何困难时提供帮助-最终,出现了使您成为优秀开发人员的特征。 就像我说的,这可以谷歌搜索,这是您投资组合的一部分。

如果您不想免费出售某些东西,则可以认为这笔捐款大致是您的信用记录。 它表明您做对了所有事情,可以编写代码和讨论任务,并且很容易与您合作。

开源开发中的一个危险时刻是绝对任何人都可以参与其中。 我认为,在每个开源项目中,都有一个人会分散所有人的注意力,然后离开而没有做出任何贡献。 如果他离开,那很好。

不能成为那个人是对开源社区的重要贡献!

因此,您决定在Open Source中进行归档。 可能是您第一次做错了所有事情。 随着时间的流逝,您将获得可以帮助您正确完成所有事情的经验-但不是第一次。

在这种情况下,评论会为您提供帮助。


在大多数项目中(肯定在Apache Ignite中),检查是在提交之前进行的,这使您可以保持主或开发早午餐的清洁。 而且,在将代码提交进行审核之前,我们必须满足一些基本要求。

代码样式。
该项目有很多代码,它是由不同的人,以不同的动机和在不同的时间编写的。 如果用不同的方式写,那就不可能读了。 因此,代码风格对我们来说至关重要。 如果您在评论中被告知需要空白行,那很重要。

每个功能都必须经过回归。
如果项目很大,那么您将永远不会猜到您的小小的完成将如何影响所有功能。 当前,我们大约有5万个测试,每个功能都包含一个或多个。 关于下降的测试,回归将有助于确定您已损坏某些东西。 对您来说,这是个好思考的好方法,可让您快速思考所有内容-是否存在故障。 如果我们谈论测试成本,那么我们有大约100台机器集群,它们在两个小时内运行一次早午餐的回归。

物质领域的变化。
如果您更改“核心”中的某些内容,则必须进行基准测试。 无论该功能多么艰苦和解决所有问题,如果它恶化了吞吐量/延迟对,那么就无法合并。 我们产品的性能下降是不可接受的。

API
有两点。 新的API应该不会破坏使用该产品旧版本的人员的编译。 而且不应出现几个月后就会弃用的方法。 做一个API-立即执行。

在最困难的开源贡献中,审稿人的输入是最重要的。 审稿人是愿意帮助您的人,在某些情况下,他最多可以完成90%的工作。 必要时,审阅者会推送,解释并几乎为您编写代码。 问题在于,当某个功能归入主功能时,它是由贡献者而不是审阅者列出的。 赞赏审稿人的无用功。

如果您在开源社区中工作,请尝试使审阅者感到舒服。 基本规则是使修补程序尽可能少,但尽可能清晰。 如果在审阅之前发现可以减少修补程序的数量并提高其可理解性,请执行此操作。

当前版本的Apache Ignite是2.6。 大约每3个月发布一次。


Sbertekh Nikolai Izhikov的一名员工正在准备2.7版,作为该项目的提交者将近一年。 对于该项目而言,这是一个重大事件,因为这是有史以来第一次,该发行不是由Gridgain的员工执行的,Gridgain是创建Apache Ignite并将其转移到ASF的公司。 这非常好,因为当产品脱离特定商业公司并独立存在时,我们正在朝着理想的开源方向发展。 我们希望这种体验将是成功的,并且下一版将已经由其他公​​司的员工进行,我们已经任命了其他公司的代表-趋势科技,WhatsApp,Nexign,Aurea,Pivotal,雅虎等。


解决方案的普及(例如在开发人员列表中)不仅是对项目的贡献,也是对您自己的贡献。 这些事情被谷歌搜索并影响了招聘决定。 另外,这是一种将代码推迟一段时间并执行一些有趣的操作的方法,但同样有用。

我们转向一个主要问题:为什么值得参加开源项目?


我将不停重复:参与开源是您的快速成长。 根据我的观察,与应用程序开发相比,大约需要三年甚至更长的时间。 这是您在面试中用“我看到了这个东西,我确切知道它是如何工作的,但您错了!”这句话震惊您的对手的机会。 -我做了两次,这是一次难忘的经历。

任何优秀的程序员都应注意趋势。 开源是我们时代软件开发中最热门,最有希望的趋势。 参与这种趋势可以保证您的同事(现在)的尊重,并提供一些稳定的财务保证(将来)。


许多公司没有像通常认为的那么多开源。 许多公司正在从根本上寻找具有开放源代码经验的员工,或者正在寻找全职特定项目的员工。 对于公司而言,拥有内部项目专业知识以影响其发展非常重要。 例如,某公司可能会要求您为产品增加安全性或修复仅在产品生产中存在的错误。 并迅速做到这一点,而不是在社区同意时。 如果您有在开源或特定项目中工作的经验,那么这对于您雇用或继续在公司工作将是一项竞争优势。

作为证据,我们的团队正在削减Sberbank Technologies的开放源代码,他们有非常有趣的空缺( MSKSPB ),而Apache Ignite并不是我们最终确定的唯一产品。



我希望每个人都感兴趣,许多人会考虑参加开源运动,而那些已经考虑过的人将继续采取具体行动。

Ps对于那些喜欢暖和的电子管声音的人,可以使用 “ Uncategorized”的音频版本

Source: https://habr.com/ru/post/zh-CN425043/


All Articles