Drama 4 Tahun Lock File Python Berakhir, Namun Alat Utama Memilih Keluar

Tim Komunitas BigGo
Drama 4 Tahun Lock File Python Berakhir, Namun Alat Utama Memilih Keluar

Setelah empat tahun perdebatan intens dan dua proposal yang gagal, komunitas packaging Python akhirnya telah menstandarisasi format lock file. Spesifikasi pylock.toml yang baru diterima bertujuan untuk membawa konsistensi dalam manajemen dependensi, namun perjalanannya mengungkap ketegangan yang lebih dalam tentang bagaimana komunitas open-source berevolusi dan apakah pendekatan berbasis konsensus dapat mengikuti kebutuhan pengembangan modern.

Jalan Panjang Menuju Standardisasi

Pencarian spesifikasi lock file Python dimulai pada tahun 2019 dan mencakup berbagai proposal, diskusi tak terhitung, dan lebih dari 1.800 posting forum. Proses ini menyaksikan dua PEP (Python Enhancement Proposals) utama - PEP 665 dan PEP 751 - dengan yang pertama ditolak karena terlalu restriktif dengan mengecualikan source distributions, dan yang terakhir mengalami tiga kali penulisan ulang lengkap untuk mengakomodasi kebutuhan alat yang berbeda. Spesifikasi akhir mendukung penguncian multi-platform dan menangani ketiga format dependensi: source trees, source distributions (sdists), dan wheels. Perjalanan kompleks ini menyoroti tantangan membangun konsensus dalam ekosistem yang beragam di mana alat-alat berbeda memiliki pendekatan dan persyaratan yang fundamentalnya berbeda.

Linimasa Lock File:

  • 2019: Diskusi awal dimulai (106 postingan forum)
  • 2021: PEP 665 diusulkan, hanya mendukung wheels (359 postingan)
  • 2022: PEP 665 ditolak (106 postingan)
  • 2023: Upaya solo baru dimulai (54 postingan)
  • 2024: Draft pertama PEP 751, uv diluncurkan (974 postingan)
  • 2025: PEP 751 diterima (150+ postingan)

Frustrasi Komunitas dengan Birokrasi

Sepanjang proses standardisasi yang panjang, anggota komunitas mengungkapkan frustrasi yang semakin besar dengan apa yang oleh sebagian orang dianggap sebagai birokrasi yang berlebihan. Seorang komentator menangkap sentimen ini dengan sempurna:

Dengan Python / Django Anda belajar untuk tidak menunggu karena tidak ada yang akan berubah.

Frustrasi ini berasal dari menyaksikan ekosistem lain bergerak lebih cepat sementara pendekatan berbasis konsensus Python kadang-kadang menyebabkan bertahun-tahun diskusi tanpa resolusi. Debat lock file menjadi mikrokosmos dari pertanyaan yang lebih besar tentang model tata kelola Python pasca-kepergian Guido van Rossum sebagai BDFL (Benevolent Dictator For Life). Beberapa anggota komunitas berargumen bahwa kurangnya pengambil keputusan akhir telah memperlambat kemajuan di berbagai front, mulai dari perbaikan packaging hingga dukungan async dan pengembangan REST API di Django.

Faktor UV: Membangun Sementara yang Lain Berdebat

Kemunculan uv pada Februari 2024 secara fundamental mengubah percakapan tentang lock file. Dibangun oleh Astral dalam Rust, uv menunjukkan bahwa alat Python berkinerja tinggi memungkinkan tanpa menunggu standardisasi. Meskipun uv mendapat manfaat dari PEP yang sudah ada, pengembangnya mengambil inspirasi dari bahasa lain seperti Cargo milik Rust dan memprioritaskan pembuatan perangkat lunak yang berfungsi daripada diskusi komite yang tak berujung. Adopsi cepat alat ini menciptakan tekanan untuk standardisasi sementara secara simultan mengurangi urgensi - para pengembang sekarang memiliki solusi yang berfungsi, bahkan jika itu tidak distandardisasi di semua alat.

Kompromi Interoperabilitas

Terlepas dari spesifikasi baru, uv akan terus menggunakan format uv.lock-nya sendiri untuk proyek, meskipun mendukung pylock.toml sebagai target ekspor. Adopsi parsial ini mencerminkan tantangan menciptakan solusi satu-untuk-semua dalam ekosistem yang beragam. Tiga alat utama yang terlibat - uv, Poetry, dan PDM - memiliki kebutuhan berbeda yang membuat konsensus lengkap menjadi sulit. PDM telah mengimplementasikan dukungan untuk pylock.toml, menunjukkan bahwa spesifikasi tersebut memenuhi persyaratan beberapa proyek, sementara dukungan parsial uv menunjukkan di mana spesifikasi tersebut kurang memadai untuk kasus penggunaan yang lebih maju.

Status Dukungan Tool:

  • PDM: Dukungan penuh pylock.toml telah diimplementasikan
  • uv: Dukungan parsial (hanya target export dan uv pip CLI)
  • pip: Tersedia beberapa bentuk dukungan
  • Poetry: Peserta utama dalam proses standardisasi

Debat Semver dan Manajemen Dependensi

Di luar format lock file itu sendiri, diskusi mengungkapkan kekhawatiran yang lebih dalam tentang filosofi manajemen dependensi Python. Beberapa komentator mempertanyakan apakah lock file mewakili penyerahan pada fleksibilitas versi paket, sementara yang lain membelanya sebagai hal yang penting untuk build yang dapat direproduksi. Percakapan tersebut menyentuh praktik semantic versioning (semver) di ekosistem Python, dengan beberapa mencatat bahwa banyak paket tidak mengikuti semver secara ketat, membuat resolusi dependensi menjadi sangat menantang. Konteks yang lebih luas ini membantu menjelaskan mengapa lock file menjadi isu yang begitu kontroversial - mereka mewakili pergeseran fundamental dalam cara pengembang Python mengelola dependensi.

Perjalanan empat tahun menuju spesifikasi lock file menunjukkan baik kekuatan maupun kelemahan pendekatan berbasis komunitas Python. Sementara proses tersebut memastikan masukan yang luas dan pertimbangan yang cermat terhadap berbagai kasus penggunaan, hal itu juga menunjukkan betapa sulitnya mencapai konsensus dalam ekosistem yang berkembang pesat. Seperti yang dicatat oleh seorang komentator, solusi terbaik seringkali datang dari membangun perangkat lunak yang berfungsi daripada diskusi tanpa akhir - sebuah pelajaran yang mungkin lebih membentuk masa depan packaging Python daripada spesifikasi tunggal mana pun.

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