Saga Fail Kunci Python 4 Tahun Tamat, Tetapi Alat Utama Pilih Untuk Tidak Menyertai

Pasukan Komuniti BigGo
Saga Fail Kunci Python 4 Tahun Tamat, Tetapi Alat Utama Pilih Untuk Tidak Menyertai

Selepas empat tahun perdebatan sengit dan dua cadangan yang gagal, komuniti pembungkusan Python akhirnya telah menyeragamkan format fail kunci. Spesifikasi pylock.toml yang baru diterima bertujuan untuk membawa konsistensi dalam pengurusan kebergantungan, tetapi perjalanan ini mendedahkan ketegangan yang lebih mendalam tentang bagaimana komuniti sumber terbuka berkembang dan sama ada pendekatan berasaskan konsensus dapat mengejar keperluan pembangunan moden.

Jalan Panjang ke Arah Penyeragaman

Usaha untuk mendapatkan spesifikasi fail kunci Python bermula pada tahun 2019 dan merangkumi pelbagai cadangan, perbincangan yang tidak terhitung, dan lebih 1,800 siaran forum. Proses ini menyaksikan dua PEP (Python Enhancement Proposals) utama - PEP 665 dan PEP 751 - dengan yang pertama ditolak kerana terlalu ketat dengan mengecualikan pengedaran sumber, dan yang kedua menjalani tiga penulisan semula lengkap untuk menampung keperluan alat yang berbeza. Spesifikasi akhir menyokong penguncian pelbagai platform dan mengendalikan ketiga-tiga format kebergantungan: pokok sumber, pengedaran sumber (sdists), dan roda. Perjalanan kompleks ini menyerlahkan cabaran membina konsensus dalam ekosistem yang pelbagai di mana alat berbeza mempunyai pendekatan dan keperluan asas yang berbeza.

Garis Masa Fail Lock:

  • 2019: Perbincangan awal bermula (106 siaran forum)
  • 2021: PEP 665 dicadangkan, hanya menyokong wheels (359 siaran)
  • 2022: PEP 665 ditolak (106 siaran)
  • 2023: Usaha solo baharu bermula (54 siaran)
  • 2024: Draf pertama PEP 751, uv dilancarkan (974 siaran)
  • 2025: PEP 751 diterima (150+ siaran)

Kekecewaan Komuniti dengan Birokrasi

Sepanjang proses penyeragaman yang panjang, ahli komuniti menyatakan kekecewaan yang semakin meningkat dengan apa yang dilihat oleh sesetengah pihak sebagai birokrasi yang berlebihan. Seorang pengulas menangkap sentimen ini dengan sempurna:

Dengan Python / Django anda belajar untuk tidak menunggu kerana tiada apa yang akan berubah.

Kekecewaan ini berpunca daripada memerhati ekosistem lain bergerak lebih pantas sementara pendekatan berasaskan konsensus Python kadang-kadang membawa kepada tahun perbincangan tanpa penyelesaian. Perdebatan fail kunci menjadi mikrokosmos soalan lebih besar tentang model tadbir urus Python selepas pemergian Guido van Rossum sebagai BDFL (Benevolent Dictator For Life). Sesetengah ahli komuniti berpendapat bahawa ketiadaan pembuat keputusan muktamad telah memperlahankan kemajuan pada pelbagai aspek, dari penambahbaikan pembungkusan kepada sokongan async dan pembangunan REST API dalam Django.

Faktor UV: Membina Sementara Yang Lain Berdebat

Kemunculan uv pada Februari 2024 mengubah perbualan fail kunci secara asasnya. Dibina oleh Astral dalam Rust, uv menunjukkan bahawa alat Python berprestasi tinggi adalah mungkin tanpa menunggu penyeragaman. Walaupun uv mendapat manfaat daripada PEP sedia ada, pembangunnya mengambil inspirasi daripada bahasa lain seperti Cargo Rust dan mengutamakan pembinaan perisian yang berfungsi berbanding perbincangan jawatankuasa yang tidak berkesudahan. Penerimaan pantas alat itu mewujudkan tekanan untuk penyeragaman sambil serentak mengurangkan kesegeraan - pembangun kini mempunyai penyelesaian yang berfungsi, walaupun ia tidak diseragamkan merentas semua alat.

Kompromi Kebolehoperasian

Walaupun terdapat spesifikasi baharu, uv akan terus menggunakan format uv.lock sendiri untuk projek, walaupun ia menyokong pylock.toml sebagai sasaran eksport. Penerimaan separa ini mencerminkan cabaran mencipta penyelesaian satu-saiz-untuk-semua dalam ekosistem yang pelbagai. Tiga alat utama yang terlibat - uv, Poetry, dan PDM - mempunyai keperluan berbeza yang menyukarkan konsensus lengkap. PDM telah melaksanakan sokongan untuk pylock.toml, menunjukkan spesifikasi itu memenuhi keperluan sesetengah projek, sementara sokongan separa uv menunjukkan di mana spesifikasi itu tidak memadani untuk kes penggunaan yang lebih maju.

Status Sokongan Alat:

  • PDM: Sokongan penuh pylock.toml telah dilaksanakan
  • uv: Sokongan separa (sasaran eksport dan uv pip CLI sahaja)
  • pip: Beberapa bentuk sokongan tersedia
  • Poetry: Peserta utama dalam proses penyeragaman

Perdebatan Semver dan Pengurusan Kebergantungan

Di luar format fail kunci itu sendiri, perbincangan mendedahkan kebimbangan lebih mendalam tentang falsafah pengurusan kebergantungan Python. Sesetengah pengulas mempersoalkan sama ada fail kunci mewakili penyerahan pada fleksibiliti versi pakej, manakala yang lain mempertahankannya sebagai penting untuk binaan yang boleh dihasilkan semula. Perbualan itu menyentuh amalan penversian semantik (semver) dalam ekosistem Python, dengan sesetengah menyatakan bahawa banyak pakej tidak mengikuti semver dengan ketat, menjadikan resolusi kebergantungan sangat mencabar. Konteks yang lebih luas ini membantu menjelaskan mengapa fail kunci menjadi isu yang begitu kontroversi - ia mewakili peralihan asas dalam cara pembangun Python mengurus kebergantungan.

Perjalanan empat tahun ke arah spesifikasi fail kunci menunjukkan kedua-dua kekuatan dan kelemahan pendekatan berasaskan komuniti Python. Walaupun proses itu memastikan input yang luas dan pertimbangan teliti terhadap kes penggunaan yang berbeza, ia juga menunjukkan betapa sukarnya untuk mencapai konsensus dalam ekosistem yang berkembang pesat. Seperti yang dinyatakan oleh seorang pengulas, penyelesaian terbaik selalunya datang dari membina perisian yang berfungsi berbanding perbincangan tidak berkesudahan - pengajaran yang mungkin membentuk masa depan pembungkusan Python lebih daripada mana-mana spesifikasi tunggal.

Rujukan: Why it took 4 years to get a lock files specification