かし後方互換性のない変化のOSSプロジェクト?
-
05-09-2019 - |
質問
時に必要なものを紹介し後方incompatibile変更、改善のほかにマイナス面.が可能で、容易に切り替えに行動すが、ユーザていく必要があると考えております。
そのための質問は どうせ将来の後方互換性のない変更を扱うオープンソース)プロジェクト, うユーザーの準備をしてから、外出してください。変更、または設定プログラムと、男は高齢者らの自宅を訪れます。
だからOSSのプロジェクトではパッケージによる様々な分布は、独立して、ともにアップグレードする自動的に行なえ、ユーザーニーその後方互換性のない変化が混乱に誰ワークフロー(第三者のスクリプトなど)を行います。
通りの現在を考慮しなければならないと使用):
- プロジェクトのメーリングリスト
- プロジェクトのホームページ
- リリースノート(最初の警告は、その発表)
- メンテナのブログ
編集1: この後方互換性のない変更が起 主要 リリース。
すべての変更を約のいずれかの追加の保障措置(拒否のコマンドで徹底的に混乱のピー、または変化するデフォルトをよりソ値です。
編集2: 移行期のデフォルトの設定(入って変更されるデフォルト値を拒否拒否)に変更 警告, は、説明方法の警告するように保護する後方incompatibileの変更をデフォルトの動作です。
の場合には自動化システムとは異なる手伝---
のプロジェクトであるという Git, 配布バージョン管理システム
見 を早期警戒ユーザー 時 gitsterの雑誌 (Junio C浜野ブログ)
解決
- 変化の大手のバージョン番号
- でお知らせいたしのすべての道の処分
- 追加の著名な発表readme
- 追加のコードに変換する、新旧の場合DBまたはその他の変更が必要
- 追加のコードを検出するのに使用減価償却の方法、データ保存などに警告をユーザを行う前に破壊的な変化
- い関連するFAQタイプの問題では、主なQ/Aサイトで地域社会とともに活動してきた質問の答えは、直ちに明らかな使用簡易検索
がメジャーバージョン番号の目標-期待されること、これ1.x2.x遷移を起こす問題があったりするので、注意が決まる。
-アダム
他のヒント
あなたは単語を得ることについての良い答えを持っています。しかし、私自身の考え方を移行することは、非推奨の機能は私の筋肉のメモリ内にある場合は特に、私にとって最大の問題です。未学習は、学習よりも硬いです。
これから非互換なの取得警告はを私は実際にを変更しようとしているコマンドを使用している場合には特に、デフォルトの変化に、特に有用です。ような何かます:
$ git foo
Note: git foo currently defaults to HEAD. Starting with
version 2.0, git foo will instead default to master.
私は、RSSのためのTwitter(もし存在する)、メーリング・リスト(更新が迫っているように、少なくとも3回メール)、ホームページ(それが参照するのは簡単ですので、それは非常に対照的な作る)とブログを行くことができます、 もちろん。リリースノートには、ほとんど読んでいないので、情報の最後のポイントとしてそれを取るされます。
(私は最初の答えとしてこれを掲示ますが、表示されませんでした)
上記のすべてに加えます。
あなたは変更がある場合はここで、
非破壊コマンドの正確な構文は、破壊的なコマンドであることを変更します。
私はオプションはなくなるようであれば、ユーザーのアップグレードや試み(または恐らくスクリプトの試行)完全に無効な古いコマンドをレンダリングする代わりに、変更を行うのよりの破壊、それが終了する古いスタイルのコマンドを参照してくださいませんstderrにわかりやすいエラーメッセージを。 非破壊ある微妙な(あるいはそう微妙なない)変化を伴うコマンドに警告メッセージがでstderrを使用することも良いアイデアです。 破壊の定義はソースリポジトリに幾分複雑である
簡単な廃止法のための標準エラー出力に警告を使用すると、多くの場合は良いですが、一部の人々はそれが彼らの(ひどく書かれた)スクリプトを破る文句を言うでしょう。これらの場合にサイレント廃止放出(非推奨のすべての非侵襲的な形態)が放出は完全に除去することにより、その後に続く非機能が、本リリース(下記参照)、おそらくその後口頭(stderrの警告)が続きます。それは価値があるよりも多くの問題かもしれないので、この最後の非機能リリースには、特に行儀および非推奨の機能を最新に保つているユーザには、問題のプロジェクトに大きく依存することになります。
あなたが参照する特定の変更は、私はおそらく非機能モードで組み込み関数と1つのリリースを行っているではないでしょう、これは問題ないはず建てインの除去があるが、私はに十分プロジェクトを知らないので、確かに言うます。
のコードのための注意のではなく、スクリプトのレベルは、それが完全にインテリセンスからそれらを隠すだけでなく、それらに対してコンパイルを拒否します属性/注釈とメソッド・スタブに残すために多くの近代的な言語で可能にして説明します。これは彼らの存在(簡単な例外を除いて使用されている場合)あなたは、ランタイムMissingMethodExceptionまたは何よりも、それらを使用することはできません見つけ出すの非常に良く道になります。
ちょうど私の$ 0.02現代の開発環境(具体的には、.NET)は、特定のAPIは非推奨/廃止宣言され、将来のバージョンで削除されることを開発者に報告する手段を提供します。マイクロソフトC / C ++コンパイラは、の#pragma非推奨にあります。
これのどれもあなたの環境でサポートされていない場合は、、compatのフィードバックを提供するために、バージョニングするに依存していますます。