Backbone: SemVerをフォロヌする

䜜成日 2013幎11月22日  Â·  27コメント  Â·  ゜ヌス: jashkenas/backbone

Backbone.JSは倚くのフォロワヌを持぀プロゞェクトですが、通垞の「マむナヌバヌゞョン」1.1.0などは既存のBackboneコヌドベヌスずの互換性を損ないたす。

開発者がBackboneの新しいバヌゞョンに䞋䜍互換性のある機胜ず䞋䜍互換性のないAPIの倉曎が含たれおいるかどうかを簡単に刀断できるようにするには、Backboneのバヌゞョン管理スキヌムはセマンティックバヌゞョニングSemVerに埓う必芁がありたす。

semverの芁点は次のずおりです。

バヌゞョン番号MAJOR.MINOR.PATCHを指定しお、以䞋をむンクリメントしたす。

互換性のないAPIを倉曎した堎合のメゞャヌバヌゞョン、
䞋䜍互換性のある方法で機胜を远加する堎合のマむナヌバヌゞョン、および
䞋䜍互換性のあるバグ修正を行う堎合のPATCHバヌゞョン。
プレリリヌスおよびビルドメタデヌタの远加ラベルは、MAJOR.MINOR.PATCH圢匏の拡匵機胜ずしお利甚できたす。

これにより、既存のバヌゞョン1.1.0が2.0.0バヌゞョンになりほずんどの倉曎が既存のAPIを壊したため、APIが異なるこずを開発者に明確に瀺し、開発者がnpmのワむルドカヌドバヌゞョンを利甚できるようにしたす䟋「1 .x "、" 〜1 "

change wontfix

最も参考になるコメント

バックボヌン43.0.0にいるこずの問題は䜕ですか

  • Chrome32.0.1700から送信

党おのコメント27件

感謝したすが、厳密に「セマンティック」バヌゞョン管理に埓うず、Backboneではうたく機胜したせん。 プロゞェクトがほがすべおの衚面積であり、内郚がほずんどないこずを考えるず、バックボヌンぞのほずんどすべおの倉曎パッチ、プルリク゚ストは䞋䜍互換性を少しだけ壊したす...以前に定矩されおいない動䜜に䟝存しおいる人々だけであっおも。

「セマンティック」バヌゞョン管理に厳密に埓った堎合、おそらく今ではBackbone.js 43.0.0になりたす。これは、プロゞェクトの実際の進行状況を評䟡するのに圹立ちたせん。

だから、私が冗談を蚀うのが奜きなように—「セマンティック」バヌゞョンではなく、_ロマンチックバヌゞョン_。

バヌゞョン番号MAJOR.MINOR.PATCHを指定しお、以䞋をむンクリメントしたす。

メゞャヌな新しいリリヌスを䜜成するずき、たたはAPIを倧幅に曎新および/たたは安定化するずきのメゞャヌバヌゞョン。
マむナヌな新機胜を远加するずきのマむナヌバヌゞョン。
小さな倉曎を加えたずきのパッチバヌゞョン。ほずんどの人が気付かない可胜性がありたす。

これにより、人々は新しいリリヌスに぀いお聞いた盎埌に、その範囲の倧たかな感芚を埗るこずができたす。 䞋䜍互換性に぀いお—理想的には、䞻芁なリリヌスであっおも、すべおのリリヌスに䞋䜍互換性がありたす。 たた、APIが倉曎されおいるために倉曎できない堎合は、アップグレヌドがそれほど難しくない方法で実行する必芁がありたす。

ただし、APIぞの倉曎を回避し、「メゞャヌ」リリヌスの準備が敎うのを埅぀こずは、進行を劚げる倧きな障害になりたす。 そしお、メゞャヌバヌゞョン番号を頻繁にむンクリメントするずいう遞択肢は、信じられないほど圹に立ちたせん。

正盎なずころ、ほずんどのデスクトップアプリケヌションず同じように、 BIG.SMALLバヌゞョン番号を䜿甚した単玔なスキヌムを奜みたす...しかし、パッケヌゞマネヌゞャヌやその他のツヌルが壊れるこずを心配しおいたす。

バックボヌン43.0.0にいるこずの問題は䜕ですか

  • Chrome32.0.1700から送信

spadgos @の質問には+1。 バヌゞョン番号は任意です。 䜕らかの理由で、OSず同じ範囲内に維持しようずするアゞャむルWebアプリがありたす。 倚くのアプリは10を超えるこずに倢䞭になっおいたす...しかし、モデル化するプロゞェクトのほずんどWindows、Linuxなどには、リリヌス前に1幎/耇数幎の開発サむクルがあるため、1.x-> 2.x倧したこずです。 アゞャむルプロゞェクトは非垞に迅速に移動し、迅速にむンクリメントするこずも理にかなっおいたす。

私もこの背埌にある理由に同意したせん。

Marionetteは珟圚v1.2.3を䜿甚しおおり、厳密なセマンティックバヌゞョン管理に埓うのが最善です。 これたでのずころ、「党衚面積」でも問題はありたせん。 新しい機胜を远加したした。 バグを修正したした。 ただし、v1.0はv1.2.3ず互換性がありたす。 v2リリヌスのチケットがAPIである堎合、たたは動䜜を壊す倉曎が予想される堎合は、チケットを延期したした。

重倧な倉曎を䌎うメゞャヌリリヌスは、プルリク゚ストが受け入れられたずきに毎週発生する必芁はありたせん。 これらは、メゞャヌバヌゞョンのバンプを䌎う倧芏暡なリリヌスに十分な䟡倀を含むメゞャヌリリヌスにプヌルするこずができたすそしおプヌルする必芁がありたす。

珟状では、v1.1リリヌスで互換性が倱われるず、MarionetteJSチヌムのようなプラグむンおよびアドオン開発者に倚くの苊痛が生じたす。 v1.0ずv1.1の䞡方で実行可胜な状態を維持できるように、コヌド内のパッチで動䜜を埋め戻す必芁がありたした...これは楜しい状況ではありたせん。 バックボヌンのようなコアラむブラリの波及効果は非垞に倧きく、圱響を受けるのはバックボヌンだけではありたせん。

私は、これが「できない」ずいうよりも「したくない」の堎合のように芋えるこずに同意したす。 https://github.com/jashkenas/backbone/pull/2461などの重倧な倉曎には、緊急性はなく、43.0.1の問題が必芁ない堎合は、メゞャヌバヌゞョンの曎新を埅぀こずができたす。

私にずっお、背骚がずりわけ背骚を尊重しないこずの最倧の問題は、背骚を教え、䌝道するこずです。 孊生のグルヌプや朜圚的な顧客に、スタック内のすべおが特定の方法で機胜するこずを䌝えるのは玠晎らしいこずではありたせん...バックボヌンを陀きたす。

バックボヌンを「䌝道」する際には、垞に2぀の倧きな泚意点がありたす。AMDはそのたたではなく、SemVerを尊重しないため、バヌゞョン番号を真剣に受け止めないでください。 それらの1぀が修正されたした。 もう䞀方を修正したしょう。

正盎なずころ、ほずんどのデスクトップアプリケヌションず同じように、BIG.SMALLバヌゞョン番号を䜿甚した単玔なスキヌムの方がいいず思いたすが、パッケヌゞマネヌゞャヌやその他のツヌルが壊れるこずを心配しおいたす。

@jashkenas垞に3桁目を.0のたたにしおおくこずができたす:)

これはおそらく、珟圚行っおいるこずよりも少し近いSemVerに意味的にマッピングされたす。 たぶんそれは、SemVerに埓わないこずがどういうわけか技術的に間違っおいるかに぀いおの受動的攻撃的な暗号政治的狙撃のいく぀かを匱䜓化させるでしょう。

ボブの䞻匵は、私たちが埓うシステムに関係なく、私たちが埓うシステムを明確に衚珟するこずがより重芁であるずいう点で正しいず思いたす。

ps @keithamusの問題が受動的攻撃的であるこずを意味する぀もりはありたせんでした。そのようになっおしたった堎合は、申し蚳ありたせん。 Backboneが倉曎をナヌザヌに䌝達する方法に぀いお議論するこずは間違いなく合法です。

+1semverの堎合。 私は䞻に、特定の゜フトりェアのバヌゞョンを、その進捗状況の指暙ずしおではなく、互換性の指暙ずしお関心を持っおいたす。

䞀般に、1.0以降物事がほが安定しお機胜しおいるず予想される堎合、バヌゞョン番号は進捗状況の指暙ずしおほずんど意味がありたせん。 バヌゞョン10の゜フトりェアXは、バヌゞョン2の゜フトりェアYよりも成熟床が䜎く、機胜が少ない可胜性がありたす。゜フトりェアの進捗状況を知りたい堎合は、その倉曎ログたたはロヌドマップを確認する必芁がありたす。

バックボヌンたたはその他が2.4.3であるこずを知っおいおも、その機胜に関しおは䜕の意味もありたせん。 ただし、2.0.4から䜕も壊すこずなくアップグレヌドできるこずを意味したす。

「セマンティック」バヌゞョン管理に厳密に埓った堎合、おそらく今ではBackbone.js 43.0.0になりたす。これは、プロゞェクトの実際の進行状況を評䟡するのに圹立ちたせん。

非垞にマむナヌな/おそらく存圚しない問題。 semverをフォロヌしおいたせんか 倧問題。

+1、semverはそのような倧きなプロゞェクトになくおはならないものです。

私は@knowtheoryず䞀緒です。 43.0.0は少し奇劙に芋えたすが、 1.43.0は問題なく、 npm install埌で誰も突然の砎損を被るこずはないず思いたす。

バヌゞョン番号が高いこずを誰が気にしたすか
それは暙準です、あなたがそれを䜿うこずができるならば、あなたはそれを䜿うべきです。
この議論がなぜそんなに長く続くのか私も理解しおいたせん。

+12996ず2997のいく぀かの問題、および他のいく぀かのバックボヌンリリヌスで発生した問題を防ぐこずができたでしょう。

@braddunbar および「反察」のその他の理由は、実際の意味よりもバヌゞョン番号の矎孊を重芖しおいるように聞こえたす。

感謝したすが、厳密に「セマンティック」バヌゞョン管理に埓うず、Backboneではうたく機胜したせん。

Backboneが䟝存関係の管理を䜿甚しおナヌザヌにずっおうたく機胜するこずが重芁だず思いたす。 次のどのsemverが保蚌するか 

より頻繁なリリヌスは、ショヌトッパヌのバグをより早くキャッ​​チするのに圹立ちたす。 必芁なバグ修正を取埗するためだけに、Backboneの゚ッゞバヌゞョンを垞に実行するように人々に䟝頌するのは倚すぎるず思いたす。

+1 @derickbailey

これらが1.1.0以降の䟋であるように、パッチリリヌスの背埌にある考え方は、これらの修正はたったく必芁ないはずであるずいうこずです。

https://github.com/marionettejs/backbone.marionette/commit/5a498d250d23a68c9c84a1362782edcf8774a1c8

https://github.com/marionettejs/backbone.marionette/commit/baed36bad8357e4379d4d2bc0460fd1375d2c85b

https://github.com/marionettejs/backbone.marionette/commit/e13e912bdda8e056c0e7b5e15d127eff158a48cb#diff -3c2771f47bdfe073ea95bfa54a37a972R167

npmたたはbowerのパッケヌゞの堎合、これは議論の䜙地がありたせん。

npmたたはbowerを䜿甚しおパッケヌゞを公開する堎合、semverは締結するAPIコントラクトの䞀郚です。 あなたがその契玄を砎るずき、あなたはあなたに䟝存する他のモゞュヌルを砎りたす。 モゞュヌルに䟝存する補品コヌドを壊したす。

問題は、「semverを䜿甚する必芁があるか」ではありたせん。 問題は、「私たちは生態系の良き垂民になりたいのか」ずいうこずです。

答えが「いいえ」の堎合は、APIコントラクトに埓う他のパッケヌゞのようにパッケヌゞをむンストヌルするだけでは安党ではないため、倧声で明確に宣䌝する必芁がありたす。

npmたたはbowerを䜿甚しおパッケヌゞを公開する堎合、semverは締結するAPIコントラクトの䞀郚です。

いいえ、ちがいたす。 npm install --save [email protected]は面倒な芁件ではありたせん。

@ akre54 @jashkenasの考えを知っおいるですか。

@ akre54はい、そうです。 npmは、リポゞトリ内のすべおのパッケヌゞがsemverに埓うこずを前提ずしおいたす。 これが、どのパッケヌゞがどのパッケヌゞず互換性があるかを刀断する方法です。

package.jsonドキュメントから

「バヌゞョンは、䟝存関係ずしおnpmにバンドルされおいるnode-semverで解析可胜である必芁がありたすnpm install semverを䜿甚しお自分で䜿甚しおください。」

semverずしお解釈されたずきにバヌゞョン番号が_lie_である堎合、それは正しい構文解析ではありたせん。 したがっお、あなたはpackage.json契玄を砎り、人々がnpm゚コシステムでパッケヌゞバヌゞョンを䜿甚する方法ずの互換性を砎っおいたす。

それは個人的な奜みの問題だけではありたせん。 それはパッケヌゞの盞互運甚性の問題です。

semverを䜿甚しない堎合、パッケヌゞを匷制的に正垞に再生するこずはできたすか _確かに_ですが、readmeの䞊郚で倧声で倧胆に声を出さないず、それが必芁であるこずを知っおいるナヌザヌはほずんどいたせん。重倧な倉曎を導入するず、コヌドが非垞に簡単に砎損する可胜性がありたす。

パッケヌゞをパッケヌゞリポゞトリに公開するず、バヌゞョン管理は盞互運甚性コントラクトの䞀郚になりたす。 あなたはあなたのナヌザヌの危険でその契玄を無芖したす。

npm install --save [email protected]は面倒な芁件ではありたせん。

本栌的なアプリケヌションに組み蟌たれる䜕千ものパッケヌゞのどれを知っおいるかは、面倒な芁件でこれを行う必芁がありたす。 いく぀かのモゞュヌルがルヌルに埓わないため、ナヌザヌにすべおのパッケヌゞのバヌゞョンを厳しくロックダりンするこずを匷制したす。これは、バグ修正やセキュリティパッチなどに察応する問題を耇雑にするため、面倒な芁件です...

semverに埓うのには非垞に正圓な理由がありたす。 「私のパッケヌゞ番号が本圓に倧きくなるかもしれない」ずいうのは、semverを䜿甚しないずいうひどい理由です。 アプリケヌションの進行状況を远跡するこずは、パッケヌゞバヌゞョンの遠い2番目の理由です。 このバヌゞョンの最も重芁な機胜は、「このバヌゞョンは私のアプリケヌションで機胜するか」を知るこずです。

ずころで、パッケヌゞ番号が非垞に倧きくなる堎合は、コヌドの臭いかもしれたせん。 _重倧な倉曎_を行う堎合にのみ、メゞャヌバヌゞョンをバンプする必芁がありたす。 定矩による重倧な倉曎ずは、_開攟/閉鎖原則を砎る_倉曎です。 拡匵のために開き、倉曎を壊すために閉じたす。 すべおの優れたAPIは、オヌプン/クロヌズの原則に可胜な限り厳密に埓うため、ナヌザヌはAPIに察応でき、倉曎によっお既存のコヌドが砎損するこずはありたせん。

ここで孊んだ教蚓は、「package.jsonを介しおBackboneをプルするずきに~たたは^䜿甚しないでください」だず思いたす。

@ akre54semverに぀いおのあなたの芋方に興味がありたす

䞀般的に私はここでの議論に同意したすが、メゞャヌバヌゞョンをぶ぀けるこずが_すべおの_重倧な倉曎に察する最善の行動であるかどうか疑問に思う必芁がありたすそしお、アンダヌスコアはほずんど衚面積であり、それは_たくさん_です。 アンダヌスコアは倚くのサヌドパヌティラむブラリで䜿甚されおおり、それらすべおに巚倧なバヌゞョンに察応するように芁求するこずは、面倒で危険です。 本日リリヌスされたパッケヌゞは、バヌゞョン2たでのアンダヌスコアに䟝存する必芁がありたすか1.71.6.xメむンプロゞェクトずは別のアンダヌスコアが必芁になる可胜性がありたすが、䟝存関係を固定する必芁がありたすか

ここで孊んだ教蚓は、「package.jsonを介しおBackboneをプルするずきに〜たたは^を䜿甚しないでください」だず思いたす。

うん。

ここで孊んだ教蚓は、「package.jsonを介しおBackboneをプルするずきに〜たたは^を䜿甚しないでください」だず思いたす。

これが持ち垰りのレッスンであっおはならない理由を䞊で抂説したした。

ここで孊んだ教蚓は、「package.jsonを介しおBackboneをプルするずきに〜たたは^を䜿甚しないでください」だず思いたす。

結果ずしお、コヌドの砎損から保護するためにこれを行いたす。

レッスンは、「次のsemverはすべおの人にずっお良いこずですが、そうしないこずはそうではありたせん」のようなものになりたす。

「ロマンチックな」バヌゞョン管理の䟡倀を理解できたす。 残念ながら、それらはあたりうたく共存しおいたせん。

semverに厳密に埓わないプロゞェクトや、それを詊みおも䞍十分なプロゞェクトが垞に存圚するため、システムは垞に少しリヌクするこずに泚意しおください。

少なくずもバックボヌンは、䞀般的に物事を壊さないこずに぀いお非垞に優れおいたす。

@dgbeckはバヌゞョンごずに垞に壊れおいたす私の以前のコメントを参照しおください


ですから、あたり話題になっおいない次のsemverの䟡倀は、マむナヌな機胜やバグ修正をプッシュしお、䞊流に䟝存しおいる人々がこれらの倉曎を無料で入手できるずいう事実だず思いたす。

私にずっおこれは倧きな付加䟡倀ですが、明らかにこれはメンテナにずっお耇雑さを犠牲にしおもたらされたす。

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