オプティミスティックマージに関するPeter Hinchens:最初に人々、次にコード。 適切なコミュニティを構築し、必要なコードを作成します

画像








私は2015年11月にDomCodeで講演しました(ちなみに、すばらしい会議です。小さな美しい町で開催されました)。オープンソースコミュニティを構築するためのルールのリストについて話しました。 ある人は後で、継続的インテグレーションのテストが完了するのを待たずに、コードを再確認せずに、パッチをすばやくマージすることを勧める理由を説明するように頼みました。 この戦略を楽観的統合(OM)と呼びます。 そして、その利点のいくつかについてお話します。



多くのコミュニティの標準的なプラクティスは、悲観的マージ(PM)です。 これは、継続的な統合テストが完了するまで最初に待機する必要がある場合です。次に、コードを確認し、ブランチでパッチをテストし、作成者にフィードバックを行います。 その後、彼だけがパッチを修正でき、このサイクル全体が新たに始まります。 この段階では、メンテナーは簡単に言うことができます:「私はあなたがこれをどのようにしたのが好きではない」または「これはプロジェクトのビジョンと一致しません。」



最悪の場合、パッチが受け入れられるまで数週間から数か月かかる場合があります。 まあ、あるいは、彼らは決して受け入れられないかもしれません、そして、彼らは何千もの異なる理由で拒絶されます。



多くのプロジェクトで、PMの概念は多少誤解されているように思えます。 PMが作成する問題をリストしてみましょう。





では、これがOptimistic Merge(OM)でどのように発生するかを見てみましょう。

まず、すべてのパッチとすべての貢献者が異なることを理解しています。



オープンソースプロジェクトでは、少なくとも4種類の貢献者がいます。



  1. ルールを知っていて、すばらしいパッチを書いてくれる良い貢献者。
  2. 間違いを犯し、大量のバグを含む有用なパッチを作成する良い貢献者。
  3. 誰も必要としないパッチを書く平凡な貢献者。
  4. ルールを無視して悪意のあるパッチを作成する密輸業者をトロールします。


PMの概念は、クリーンで有用であると認識されるまで、すべてのパッチが悪意があるという事実に基づいています。 実際には、ほとんどのパッチは最初は有用であり、改善する価値があります。



PMとOMを比較しましょう。 4種類すべての貢献者が一貫してプロジェクトに参加するとどうなりますか?



  1. PM:任意の基準に応じて、マージパッチは高速または低速になります。 そして、少なくとも1人の良い貢献者は不幸なままです。

    OM:良い貢献者は喜んで感謝し、プロジェクトに合格するまですばらしいパッチを書き続けます。
  2. PM:貢献者は引き返し、パッチを修正し、やや戻ってきます...屈辱。

    OM: 2番目のタイプの貢献者が参加して、最初のパッチを修正します。 短いクールなパッチパーティーがあります。 新しい貢献者には、プロジェクトに友人とメンターがいます。
  3. PM:私たちは口頭での小競り合いと、社会が敵対的である理由の理解不足に陥ります。

    OM:誰もが平凡な貢献者を無視します。 パッチを修正する必要がある場合、これは遅滞なく行われます。 寄稿者は興味を失い、最終的にプロジェクトを去ります。
  4. PM :私たちは、トロルが引数のブルートフォースによって勝つ小競り合いを獲得します。 コミュニティは嫌なパッチを押しています。

    OM:すべての既存の貢献者はすぐにプロジェクトに戻ります。 議論はありません。 トロールは再び攻撃を試みる可能性があり、最終的には禁止されます。 悪意のあるパッチは、gitaの歴史に永遠に残るでしょう。


これらの状況のそれぞれにおいて、OMの結果はPMの結果よりもはるかに優れています。



ほとんどの場合(まだ多くの作業が必要なパッチの場合)、OMはトレーニングとメンタリングの条件を作成します。 そして、これはまさにZeroMQプロジェクトで見られるものであり、彼らと仕事をするのがとてもクールな理由です。



参照:



ZeroMQ(http://rfc.zeromq.org/spec:22)、C4.1:集団コード構築契約。



さらにいくつかのヒント:







翻訳:アレナ・カルナウコワ



出版サポート-Edisonはプロバイダー向けの課金システムを 開発し、インターネットを介した税申告用ソフトウェア開発しています



続きを読む






All Articles