コンピュータの機種群は、ある機種で動作する特定のソフトウェアが、その機種群の他のすべての機種でも動作する場合に互換性があると言われます。コンピュータの機種群は、性能、信頼性、その他の特性において異なる場合があります。これらの違いは、ソフトウェアの実行結果に影響を与える可能性があります。
ソフトウェアの互換性とは、特定のソフトウェアがx86やARMなどの特定のCPU命令セット上で動作する互換性を指します。 [ 1 ]ソフトウェアの互換性とは、ソフトウェアが特定のオペレーティングシステム上で動作する能力を指す場合もあります。コンパイルされたソフトウェアが複数の異なるCPUアーキテクチャと互換性を持つことは非常にまれです。通常、アプリケーションはさまざまなCPUアーキテクチャとオペレーティングシステム向けにコンパイルされ、さまざまなシステムとの互換性を確保します。
一方、インタプリタ型ソフトウェアは、対応するCPUアーキテクチャやオペレーティングシステムがあれば、通常は様々なアーキテクチャやオペレーティングシステム上で実行できます。ソフトウェアの互換性の問題は、新しいバージョンのオペレーティングシステム向けにリリースされたソフトウェアが、古いバージョンのオペレーティングシステムと互換性がない場合に頻繁に発生します。これは、ソフトウェアが依存する機能の一部が古いバージョンのオペレーティングシステムでは利用できないためです。
ハードウェアの互換性とは、コンピュータのハードウェアコンポーネントと特定のCPU アーキテクチャ、バス、マザーボード、周辺機器、またはオペレーティングシステムとの互換性を指します。[ 1 ]互換性のあるハードウェアは、必ずしも公称の最高性能で動作するとは限りませんが、それでもレガシー コンポーネントと連携して動作することができます。例として、RAMチップがあり、一部のチップは定格よりも低い (または場合によっては高い)クロック レートで動作することができます。[ 2 ]デバイス ドライバまたはカーネル ドライバが利用できない場合、あるオペレーティングシステム用に設計されたハードウェアは、別のオペレーティングシステムでは動作しない可能性があります。たとえば、Android は iOS を搭載した電話では実行できません。[ 3 ]
FOSSは、プロプライエタリなハードウェアや特定のソフトウェアと互換性がない場合があります。これは多くの場合、メーカーがFOSSを妨害していることが原因です。例えば、FOSS運動のメンバーがハードウェア用のドライバを作成するために必要なインターフェースやその他の仕様を公開しないなどです。これは、メーカーが顧客に自社のプロプライエタリなソフトウェアのみを実行させたい場合や、パートナーシップから利益を得る可能性があるためです。[ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ]