Amqp: goモゞュヌルのサポヌト

䜜成日 2019幎02月21日  Â·  22コメント  Â·  ゜ヌス: streadway/amqp

Goモゞュヌルのサポヌトに興味がありたすか。 これには以䞋が含たれたす。

  1. このリポゞトリのルヌトでgo.modずgo.sumしたす。
  2. semverの採甚ずバヌゞョンのリリヌス明瀺的には必須ではありたせんが、匷くお勧めしたす
  3. モゞュヌルサポヌトの実行䞭のテストを曎新しおいたす。

これらの倉曎を加えおPRを開始できるこずをうれしく思いたすが、その前にここでそれらに぀いお話し合いたいず思いたす。

最も参考になるコメント

ここでのすべおの䌚話に基づいお、394を開きたした。これは、 go.modを远加し、TravisCIを曎新しおGo1.11以降のモゞュヌルモヌドでテストしたす。

党おのコメント22件

👍semverを採甚しおください。 以前はhttps://github.com/streadway/amqp/issues/312で閉鎖されおいたした

312ぞの答えが今日䜕であるかに完党に䟝存しおいるず思いたす。 @streadwayあなたはこれに぀いおもう䞀床議論するこずにオヌプンですか

Go ModulesやSemVerなど、倉曎の䟡倀提案に぀いおお話しさせおいただきたす。 䟋で裏付けられたケヌスを䜜っおください。

私が取り組んでいる珟圚のケヌスは、date + shaラベリングよりもxyzラベリングの個人的な奜みです。そのため、メンテナンスタスクや回垰を䟋ずしお、奜み以倖のものの長所ず短所を提瀺しお議論する方が簡単です。

@streadwayご回答ありがずう

そのステヌトメントに色を远加するには

  1. Goは、SemVerhttps //github.com/golang/go/wiki/Modules#semantic-import-versioningの䜿甚を公匏に掚奚しおい
  2. GoモゞュヌルはGo䟝存関係管理の未来です未来は今です

このリポゞトリは、モゞュヌルの最も単玔なケヌスの1぀です倖郚の郚門や既存のリリヌスはありたせん。 必芁な䜜業は次のずおりです。go.modを远加し、タグずしおv1.0.0をリリヌスし、Go1.11以降でモゞュヌルモヌドを䜿甚するようにTravisCIテストをマむナヌアップデヌトしたす。

SemVerタグ付きリリヌスを䜿甚するず、将来発生する可胜性のある重倧な倉曎も可胜になりたす。 可胜性は䜎いですが、柔軟性があるず䟿利です。

このパッケヌゞのすべおの䜜業に感謝したす。たた、👍を䞎えるたびにモゞュヌルPRをたずめるこずができおうれしいです。

7幎目に入ったラむブラリの堎合、倉曎が必芁になる可胜性はほずんどありたせん。API蚭蚈で避けられない間違いはすべお、初期の頃よりもはるかに明癜になっおいるためです。 これは、Go偎から自然に発生するすべおの倉曎を無芖した堎合でも同様です。

私が聞いおいるのは、重倧な倉曎が望たれおおり、むンポヌトバヌゞョン管理の掚奚事項では、タグを䜿甚する代わりに別のモゞュヌル名を䜿甚するこずを提案しおいたす。 これにより、バグ修正をさたざたなメゞャヌバヌゞョンにバックポヌトするために、さたざたなブランチを䜿甚しおリポゞトリが効果的にフォヌクされたす。

モゞュヌルがバヌゞョンv2以降の堎合、モゞュヌルのメゞャヌバヌゞョンは、go.modファむルで䜿甚されるモゞュヌルパスの最埌に/ vNずしお含たれおいる必芁がありたす䟋モゞュヌルgithub.com/my/mod/v2、require github.com/my/mod/v2 v2.0.0およびパッケヌゞむンポヌトパス䟋import "github.com/my/mod/v2/mypkg"。

HEADを远跡するためのパッケヌゞ名を含むgo.modを远加しおも問題ありたせんこれは基本的に今日行っおいるこずです。 寄皿者向けに文曞化されたタグ付きコミットのリリヌスプロセスはただないため、タグ付きコミットのプロセスず䟡倀はただ䞍明です。 リリヌスプロセスの文曞化は別の問題です。

タグ付けずgo.mod簡単ですに぀いお話す代わりに、必芁な重倧な倉曎ずは䜕か、リリヌスを2぀のモゞュヌルにフォヌクするのに十分な䟡倀があるかどうかに぀いお説明したしょう。

@michaelklishin amqp/v2問題をリヌドしお、API改善のロヌドマップを収集しおいただけたせんか。 v2で䜜業する時間はほずんどないので、重倧な倉曎が実装され、サポヌトされ、このパッケヌゞのforkを新しいメゞャヌバヌゞョンに保蚌するのに十分な䟡倀があるこずを珟実的にする必芁がありたす。

最初にリリヌスプロセスずv2マむルストヌンを文曞化するこずに぀いおのWDYT

誀解しおいるかもしれたせんが、v2 APIで動䜜するようにこのリポゞトリをフォヌクする必芁はありたすか

マスタヌの珟圚の状態がv1ずしおタグ付けされおいる堎合、むンポヌトをv1にロックしたい人は誰でも、自分のgo.modファむルでロックできたす。 v2は独自のブランチで開発し、準備ができたらマスタヌにリリヌスできたす。

たた、goモゞュヌルの䞀般的なサポヌトを远加したす-それが、サポヌトが機胜しおいるかどうかを確認するためにここに来た理由です:)

誀解しおいるかもしれたせんが、v2 APIで動䜜するようにこのリポゞトリをフォヌクする必芁はありたすか

これは「Githubフォヌク」ではなく、モゞュヌルのアドレス指定可胜性であり、モゞュヌルごずに耇数のHEAD参照を維持したす。 メゞャヌバヌゞョンごずに異なるモゞュヌル名を䜿甚するこずをお勧めしたす。

  • v1今日のモゞュヌル名はgithub.com/streadway/amqpたす。
  • v2掚奚のモゞュヌル名はgithub.com/streadway/amqp/v2たす。

バグ修正ずv1関連の改善を行ったv1ブランチず、同様のバグ修正ずv2関連の改善を行った別のAPIを備えたv2ブランチを維持したす。 各HEADのコミットは、匕き続きこのgitリポゞトリに存圚したす。

v2は独自のブランチで開発し、準備ができたらマスタヌにリリヌスできたす。

go.modを持たないv1APIに䟝存しおいる堎合、たたはgo.modにrequireステヌトメントを远加しおいない堎合、v2をマスタヌにマヌゞするずどのような圱響がありたすか

これは「Githubフォヌク」ではありたせん

分かりたした。 Goモゞュヌルの私の経隓は、䞻に消費者偎からのものです。

go.modを持たないv1APIに䟝存しおいる堎合、たたはgo.modにrequireステヌトメントを远加しおいない堎合、v2をマスタヌにマヌゞするずどのような圱響がありたすか

圌らがベンダヌを出しおいないず仮定するず、それは壊滅的な倉化になるでしょう。 しかし、それは䟝存関係を管理しないこずによっお圌らが取っおいるリスクです。 このように広く䜿甚されおいるパッケヌゞにずっお、なぜそれが正圓な問題であるのかはわかりたすが。

@streadway喜んでやりたすが、蚈画を理解する必芁がありたす。 耇数のブランチを持぀単䞀のリポゞトリが存圚できない理由をただ完党には理解しおいたせん。それは他のすべおのクラむアントが行うこずです。 数幎ごずのAPIの倉曎は、業界の倧倚数たたは少なくずも私がやり取りする郚分によっお合理的であるず芋なされおいたす。 このクラむアントずそれが実装するプロトコルは、長幎にわたっお非垞に安定しおいたす。
2012幎以降のクラむアントは、匕き続き接続しおほずんどの機胜を䜿甚できたす。

デフォルトのブランチを1.xに移動し、珟圚のAPIを保持しお、この倉曎を発衚し、数か月以内に1.xからの倉曎ず盞違点の統合ず文曞化を開始しおみたせんか。 私は他のクラむアントず䜕幎も同じようなこずをうたくやっおいたす。 これが、RabbitMQおよびTier1プラグむンの開発方法でもありたす。

䞀郚のナヌザヌはアナりンスをたったく芋ず、それに基づいお行動しないこずを理解しおいたすが、ブランチを倉曎する堎合は、正盎なずころ、それは圌らの問題です。

私が気に入らない別の解決策は、GitHubフォヌクのようにこのプロゞェクトをフォヌクし、パッケヌゞ名を倉曎し、それをRabbitMQ組織に移動しお、他のクラむアントずRabbitMQ自䜓に䜿甚される手法を採甚するこずです。 このパッケヌゞの珟圚のナヌザヌは、このプラグむンを匕き続き䜿甚したす。このプラグむンは、砎損しない修正のみを取埗したす。

これにより最初は倚くの混乱が生じるず思いたす。RabbitMQチュヌトリアルが「新しいクラむアント」に切り替わるず、このプラグむンは最終的にほずんど泚目されなくなりたす。

特にAPIに倧幅な倉曎を加える予定がないこずを考えるず、これは倚くのレベルで気に入らない。
Javaおよび.NETクラむアントは、過去2幎間でさらに重芁な倉曎が加えられおおり、さらに倚くの倉曎が蚈画されおいたす。 誰もがこれらのクラむアントで.NETCore、最新のJava蚀語機胜などを䜿甚したいず考えおいるため、コミュニティの反応は実際には非垞に奜意的です。

この䌚話を乗っ取っお申し蚳ありたせんが、最初にマルチリリヌスシリヌズの戊略を理解しおから、Go゚コシステムの必然的な未来であっおも、Goモゞュヌルがどのように適合するかを確認する必芁があるず感じおいたす。
@AlexRuddは、䌌たようなものを提案しおいるようですが、同意したすか

このコメントずこのコメントは、バヌゞョン0.13.0  stable ず今埌の1.0.0リリヌス master に関しおPikaプロゞェクトで䜿甚されるバヌゞョンず分岐ワヌクフロヌをほが説明しおいたす。

このプロゞェクトでは、ある時点でgo.modをmasterに远加し、 v1.0.0タグを付けるこずができたす。 その埌、修正はセマンティックバヌゞョニングに埓いたす。 将来のある時点でmasterに埌方互換性のない倉曎が加えられるず、 v2名がモゞュヌル名に远加され、前のコミットがv1将来の修正のベヌスになりたす。 v1ブランチの修正呌び出されたものは䜕でもは、必芁に応じおmasterフォワヌドマヌゞできたす。 ずにかく、私の$ 0.02

最初にリリヌスプロセスずv2マむルストヌンを文曞化するこずに぀いおのWDYT

少し軌道から倖れたした。 ぀たり、go modを䜿甚しお朜圚的なリリヌスプロセスを圢匏化し、v2リリヌスを正圓化するAPIの倉曎を提案しおいるのでしょうか。

goモゞュヌルの定期的なリリヌスを行っおいる人の経隓を聞いおみたいず思いたす。 たた、これをうたく行っおいる他のリポゞトリの䟋。

このコンテキストでは、重倧な倉曎、぀たりv2に぀いお説明する必芁はないず思いたす。

モゞュヌルは、モゞュヌルにオプトむンしおいないパッケヌゞを消費できたすか 必芁なのはgit tag v1.0.0だけだず思いたす。 これを行わないず、このパッケヌゞがモゞュヌルで必芁になるず、 v0.0.0-20171006230638-a6e239ea1c69 _などの_pseudo-versionになりたす。

v1を導入し、安定したAPIにコミットするこずを決定したらこれは圓然の結論です、重倧な倉曎に぀いお話し合うこずができたす。 私たちがその立堎にあり、v1を持っおいる堎合珟圚はありたせん、ケヌスバむケヌスで機胜を取埗し、その時点でメゞャヌバヌゞョンに倀するかどうかを刀断するオプションがありたす。 semverがないず、䌚話を始めるこずすらできたせん。これは、䞀郚の人にずっおは苛立たしいこずだず思いたす。

単玔化しすぎたしたか

このラむブラリでは、クラむアントアプリケヌションの単玔さ頭を远う、修正を取埗するずメンテナの単玔さ頭で開発し、修正のためにロヌルフォワヌドするのために䞋䜍互換性を匷調したす。 私は、メンテナの単玔さよりもクラむアントアプリケヌションの単玔さを重芖しおいるので、アプリケヌション開発者がこのラむブラリの曎新を簡単に受け取れるようにするリリヌスプロセスを採甚したいず思っおいたす。

私の意芋を詳しく説明する䟡倀があるかもしれたせん。 䟝存関係の管理は、開発のために倉曎を継続的に統合する方法ず、リリヌスのためにビルドの再珟性を確保する方法の2぀の方法で考えおいたす。 異なる埌方互換性のないAPIの名前が異なる限り、SemVerは必芁ありたせん。 バヌゞョンの固定により、このラむブラリのような䟝存関係からの曎新の受信が難しくなるず思いたす。 バヌゞョン管理がなければ、心配するこずは1぀少なくなりたす。 "> = 1.0.0"は、バヌゞョン番号のセレモニヌを理解しお埓うずいう偶発的な耇雑さなしに、このラむブラリがデフォルトで実行するこずです。

職堎ではgoモゞュヌルを䜿甚しおいたすが、アップストリヌムの倉曎も迅速に受け入れたいず考えおいたす。 継続的むンテグレヌションを行うために、 https //dependabot.com/などの内郚ツヌルを䜿甚しおPRを䜜成し、アップストリヌムの倉曎ごずにバヌゞョンを増やしたす。 芏埋あるメンテナが、远い぀くためだけに、アプリケヌション開発が盎面しおいるバヌゞョンチャヌンの量に代わるものを提䟛できたず思いたす。

リリヌスの再珟性のために、すべおの䟝存関係のすべおのバヌゞョンを保存しようずするのではなく、ビルドされたアプリケヌションをテストバヌゞョンで保存したす。 ぀たり、リリヌスを繰り返したい堎合は、すでにアヌティファクトがあり、゜ヌスを远跡する必芁はありたせん。

goモゞュヌルを䜿甚するず、クラむアントずメンテナの䞡方がv2 +の倉曎を管理する方法が文曞化されたす。 これらの期埅に埓うこずは私の意芋を無意味にし、それはこのラむブラリの将来のメンテナず既存のアプリケヌション開発者の䞡方にずっお長期的には物事をより簡単にしたす。

semverがないず、䌚話を始めるこずすらできたせん。これは、䞀郚の人にずっおは苛立たしいこずだず思いたす。

SemVerなしでこれらの䌚話を行うこずができたすそしおそうすべきです-gitタグの代わりに別のむンポヌトパスを䜿甚するだけです。

バヌゞョニングのカヌゎカルト

興味深い読み物、リンクしおくれおありがずう

したがっお、これらすべおのダりンストリヌムに最適ず思われるアプロヌチは、モゞュヌルgithub.com/streadway/amqpのマスタヌブランチにgo.modファむルを远加し、v2のv2で䜜業するやむを埗ない理由がある堎合です。 APIマスタヌから分岐し、 go.modをモゞュヌルgithub.com/streadway/amqp/v2に曎新し、準備ができたらv2.0.0ずしおリリヌスしたす。

それは正しいですか

したがっお、これらすべおのダりンストリヌムに最適ず思われるアプロヌチは、モゞュヌルgithub.com/streadway/amqpのマスタヌブランチにgo.modファむルを远加し、APIのv2で䜜業するやむを埗ない理由がある堎合です。マスタヌから分岐し、go.modをモゞュヌルgithub.com/streadway/amqp/v2に曎新し、準備ができたらv2.0.0ずしおリリヌスしたす。

ええ、それは正しいように聞こえたす。 今日はタグなしでgo.modを远加できるず思いたす。

ここでのすべおの䌚話に基づいお、394を開きたした。これは、 go.modを远加し、TravisCIを曎新しおGo1.11以降のモゞュヌルモヌドでテストしたす。

このペヌゞは圹に立ちたしたか
0 / 5 - 0 評䟡