"一度書き、どこでも実行する"と考えても、それは永遠の下位互換性と全く同じことではありません。実際には、フレームワークの将来のバージョンでいくつかのことを変えることを期待する必要があります。時にはこれは保証された動作(最悪の種類の変更)であったものを削除することになりますが、ライブラリの将来のバージョンでは実装の詳細に頼っていないことが判明するまで、保証される。ごくまれに、あなたの古いコードは、最新バージョンの斬新なバグを明らかにするでしょう。
理想的な世界では、保証された動作のみに依存するコードを作成し、保証は削除されないため、有効なコードは永久に機能します。それに対して、あなたのプログラムが完全に正しいことを証明するのは難しいですし、言語/フレームワーク/ライブラリの開発者は、完璧な互換性を保ちながら、彼らが望む改善を加えることができるかどうかを判断します。
引数に勝つ互換性のために、元のAPIは、激しく変化することなく生き残るために十分な強度と安定性を備えていなければなりません。そうでない場合、互換性のない変更が行われるか、そうでなければ、APIは完全に放棄されます。どちらの方法でも、あなたのプログラムは、あなたが古いバージョンをどこかに置いて実行しない限り、それ以上実行されません。
あなたは、このトリックを行う方法を尋ねます - あなたが後で思いつくすべての拡張を可能にするためには、本当に良い、やや幸運なインターフェースデザインが必要です。そうでなければ、確かな約束事とビジネスケース非営利目的の動機)をサポートしています。たとえば、Python 3はPython 2と互換性がありませんが、Python 2はまだ更新プログラムでサポートされているため、古いPythonコードは引き続き実行されます。 C99はC89のいくつかの機能だけを削除し、それ以外の場合はC89コンパイラはまだ積極的に管理されています。ブラウザは、古いバージョンの1つと1つと、HTMLの非標準的な特徴をサポートしています。私はJSFとリッチフェイスがそれらとどのように比較されているのか、あるいはクライアントからの「古い」(または奇妙な)HTML/CSS/Javascriptの動作に対応するページをどれだけ出力するのか分かりません。
これは、少なくともしばらくは起こることがあります。しかし、IE6の機能は、Web上で放置しても安全なブラウザでは利用できなくなっています(IE6をサンドボックス化されたVMや気にしないマシンで実行できると思います)。あなたが最初に頼ったもの独占的なブラウザ拡張が将来のバージョンでは石のように落ちると予測されたでしょうか?おそらく、しかし、IE6のアプリライターは、当時の適切な標準を使用したいと思っていたものを達成できたでしょうか?常にではない。 IE6に関わっていない人でも、あなたのアプリが同じような罠に陥った場合、あなたは不運になります。
コミュニティWikiのチェックボックスには何が起こりますか? – stacker
それはなくなっています:http://meta.stackexchange.com/questions/67039/what-can-we-do-to-make-community-wiki-better/67192#67192 –
JavaScriptのエラーの例を挙げてください何か?つまり、アプリケーションの機能に影響を及ぼしますか、それとも迷惑なのですか? – Jeremy