web-dev-qa-db-ja.com

「サポート終了」を使用しないように人々を説得するPython 3.Xバージョン

環境

私の会社では、メジャーなPythonパッケージがPython 2.で記述されています。現在、これをPython 3(私たちはそれを維持することを気にしませんPython 2互換)。

私はジュニアデベロッパーで、同僚はコンピューターサイエンスのバックグラウンドをあまり持っていない高齢者です。

問題

計画プロセス中に、サポートしたい最小限のバージョンPython=バージョンの質問に答える必要がありました。選択された答えは、いくつかの内部的な理由により、Python 3.4でした。 。ただし、Python 3.4は5か月でサポートが終了します(おそらく、このパッケージがPython 3に移植される前であっても)

Python組織がサポートしていないバージョンPythonバージョンをサポートするという考えはもう好きではありませんが、それに対する具体的な議論を見つけることはできません。 「ただ気分が悪い」以外。

私が考えた議論は:

  • Pythonサポートするバージョンは少なくなります。3.5から始める場合、1つ少ないバージョン、3.6 2つ少ないバージョンなどをサポートする必要があります。
  • 新しい言語機能を使用できます

最初のバージョンについては、CIでサポートされている最小バージョンのみをテストし、このパッケージの開発者はローカルの開発環境として最新のものを使用すると述べています。テストの点では安全ではありませんが、Python 3.Xバージョン間の違いは、特にこのパッケージの機能を考えると、それほど多くのものを壊していないことを認めなければなりません。

2番目の引数について、人々はPython 3.5以降の新機能を実際には認識しておらず、「Python 2、私は新機能を追加する意味がわかりません。」また、このパッケージのコンテキストでは、本当に素晴らしいと宣伝できる新機能はありません(たとえば、asyncものなど)。 。

ご質問

  • Python 3.Xバージョンを使用した結果はどうなりますか?Python 2 vs Python 3、しかし古いPython 3.Xリリースと新しいリリースに固有の何かを実際に見つけることができません。
  • ソフトウェアを最新の状態に保つことについて意識を高めるための戦略は何ですか?古いツールを使用するのが普通ではないように人々の考え方を変える方法は?
4
filaton

ソフトウェア開発のライフサイクルは開発以上のものであり、ソフトウェアの保守と廃止、または交換も含まれます。したがって、「X年後にはどうなのか」と尋ねることは、一般的に賢明な質問です。

サポートされているPythonバージョンを使用する大きな理由は、特にネットワーク接続ソフトウェアのセキュリティです。最新のPython=バージョンを使用すると、より長いサポートが得られます同じ理由で、(うまくいけば)Windows用の新しいシステムを設計しないでくださいXP or Android 4 or Ubuntu 16.04。Pythonの場合、EOLの日付は公式のCPython開発にのみ適用されます。これは、自分でコンパイルするか、公式のバイナリをダウンロードする場合に重要です。オペレーティングシステムに付属しているPythonを使用する場合、オペレーティングシステムのベンダーによって、サポート期間が異なる場合があります。

たとえば、ソフトウェアが個人データを処理し、GDPRの対象である場合( Art。32 を参照)、サポートされているソフトウェアバージョンの実行など、最新のセキュリティ慣行に従うことが法的に義務付けられる場合があることに注意してください。

開発の観点から、複数のPythonバージョンをサポートすることは簡単です(特にPython 3.4+のみの場合))。新しいバージョンへのアップグレードは、いくつかの小さなものを超えて簡単です修正(例Python 3.7がasyncを新しいキーワードに変更)。

  • 新しいバージョンの最大の要因は、開発をより快適にする重要な言語機能(非同期、型注釈、f文字列、順序付けされたディクショナリ、インライン割り当て)と標準ライブラリの改善です。
  • 古いバージョンを削除するためのプッシュファクターは、より広いライブラリエコシステムです。多くのライブラリは、EOLされたPythonバージョンをサポートするための労力を無駄にしたくありません。アップグレードしない場合は、フォークする必要があります。それらのライブラリーとバグ修正を自分でバックポートするのは大変な作業です。

したがって、古いバージョンのPython=を問題なく使用できますが、外部制約がある場合を除いて、そうする理由はありません。たとえば、「ソフトウェアはこれで実行する必要があります。サーバー、およびこのサーバーにはPython 3.4のみがインストールされています。別のPythonバージョンをインストールすることはできません。)これらの制約を削除する方が簡単な場合があります(OSアップデートのロビー活動など) 、またはコンテナを介してデプロイ)、ただし、非同期コードとPython 3.4のコンテキストでは、互換性のあるPythonコードを記述するだけで、通常、抵抗が最も少ないパスになります。 。

1
amon