OpenD, fork bahasa D yang menyambut kontribusi Anda
(dpldocs.info)- Seiring menumpuknya keluhan bahwa kontribusi melalui kepemimpinan D yang ada telah lama terhambat, sebagian kontributor berpindah ke fork bahasa D bernama OpenD
- Persoalannya bukan apakah D bersifat closed source, melainkan bahwa bahkan setelah rilis GPL dan gdc, cara pengembangan dan pengambilan keputusan belum cukup terbuka bagi komunitas
- Kasus Ares/Tango yang kemudian berujung menjadi druntime, menurunnya aktivitas Phobos, PR yang terbengkalai, serta kurangnya tindak lanjut setelah “D gripes and wishes” dikemukakan sebagai dasar fork ini
- Setelah beralih ke OpenD, PR, laporan bug, dukungan pengguna, rapat DLF, dan partisipasi DConf Online untuk upstream D dihentikan; dpldocs.info tetap dipertahankan selama biayanya tertutup
- Library dan aplikasi D yang sudah ada tanpa kontrak dukungan berbayar tidak mendapat jaminan kompatibilitas upstream D, dan jalur dukungan jangka panjang berpindah ke partisipasi dalam OpenD
Alasan pindah ke OpenD
- OpenD adalah fork dari bahasa D, yang berawal dari kesadaran masalah bahwa proses berkontribusi ke upstream melalui kepemimpinan D yang ada sudah sejak lama sangat membuat frustrasi
- Pernyataan berulang bahwa D adalah bahasa closed source tidak akurat
- Bagian compiler yang khusus untuk D dirilis dengan GPL pada 2002
- gdc, compiler penuh berbasis GPL, dirilis pada 2004
- Namun, metodologi pengembangan D tidak cukup terbuka, dan kritik terus muncul bahwa masukan bermakna dari komunitas dalam pengambilan keputusan sangat sedikit
- Fitur dan konsep inti D, serta banyak bagian kode D yang ada saat ini, berasal dari masukan dan kerja komunitas, tetapi jika hanya melihat kasus yang diterima, orang bisa terjebak dalam survivorship bias
Bottleneck kontribusi lama dan kasus Ares/Tango
- Dalam sejarah D ada banyak patch yang diterima, tetapi juga banyak patch yang dibiarkan terbengkalai dalam waktu lama
- Kode yang kini dikenal sebagai druntime berawal dari fork yang muncul karena Walter tidak menerima kontribusi komunitas
- Pada 2004, para developer yang mencoba bekerja sama dengan upstream mem-fork D agar kontribusi mereka tidak hilang
- Fork ini awalnya disebut Ares, lalu bergabung dengan upaya komunitas lain dan menjadi Tango
- Tango menyebut dirinya “The Developer's Library for D” dan berfungsi sebagai ruang tempat para developer benar-benar disambut untuk berkontribusi
- Ekosistem Tango memiliki banyak elemen yang tidak ada di ekosistem Phobos
- Setelah fork tersebut dipertahankan selama 4 tahun dan menjadi populer, upstream mulai berdamai, dan alur itu berlanjut menjadi druntime saat ini
- Pandangan yang mendasarinya adalah bahwa tanpa fork Ares/Tango, D tidak akan mendapatkan posisi berarti di pasar, dan fork tersebut menyelamatkan D dari krisis
Partisipasi yang menurun setelah masa keemasan
- Periode ketika para developer inti Tango kembali dan orang-orang seperti Andrei Alexandrescu bergabung digambarkan sebagai masa ketika pengembangan D relatif terbuka, sebuah masa keemasan dengan aktivitas meningkat sekitar 2013
- Ditekankan pula bahwa hampir semua pengguna komersial D secara langsung bergantung pada kode yang berasal dari fork Ares
- Namun, kebiasaan lama tidak hilang, dan banyak kontributor masa keemasan tidak bertahan di komunitas
- Sebagian secara eksplisit pergi karena proses yang rusak di mana pekerjaan mereka tidak dihargai
- Sebagian lain mengurangi aktivitas karena urusan pribadi, dan tidak cukup banyak kontributor baru yang bertahan
- Aktivitas pengembangan Phobos menurun tajam pada pertengahan 2018, lalu setelah itu sempat ada dua peningkatan kecil aktivitas
- Penambahan formatting floating-point yang bisa CTFE oleh berni44
- Kasus diterimanya modul sumtype dari Paul Backus sebagai
std.sumtype
- Pada 2020, berni44 mengatakan akan meninggalkan komunitas setelah menunggu review PR hampir 3 bulan; setahun kemudian ia kembali dan memicu peningkatan aktivitas pengembangan Phobos baru-baru ini, tetapi beberapa bulan kemudian pergi lagi
- Di dmd sendiri, jumlah kontribusi pribadi Walter secara umum relatif konstan, tetapi karena kontribusi orang lain menurun, porsinya berubah dari sekitar 1/6 pada masa keemasan menjadi sekitar 1/3 saat ini
Pengumpulan keluhan yang berulang dan kurangnya eksekusi
- Sekitar Natal 2022, Mike Parker meminta orang-orang mengirim daftar “D gripes and wishes”
- Banyak orang mengira tidak akan ada hasilnya, tetapi respons yang masuk banyak
- Sekitar 6 bulan kemudian, pada 18 Mei 2023, dokumen publik yang mengumpulkan respons tersebut dipublikasikan
- Hasil yang kemudian terkonfirmasi secara publik hanya sebatas penetapan target berikut
- Menstabilkan bahasa, compiler, dan standard library
- Memperbaiki ekosistem, termasuk dukungan tooling dan library pihak ketiga
- Memperkuat komunitas, termasuk merapikan website, memperbarui dokumentasi dan tutorial lama, serta mendesain ulang website
- Permintaannya adalah “jangan menulis secara umum, tulislah secara spesifik,” tetapi jawaban terhadap banyak keluhan spesifik hanya berhenti pada bullet target kategori besar
- Karena Vision Document 2016H1 juga memiliki target serupa seperti memperluas partisipasi, tooling, stabilitas bahasa dan perbaikan spesifikasi, serta penambahan library, posisinya adalah bahwa yang dibutuhkan bukan penetapan target, melainkan eksekusi
Hal yang berubah dengan transisi ke OpenD
- Upaya berkontribusi ke upstream D dihentikan, dan perpindahan dilakukan ke OpenD, sebuah fork yang mencakup seluruh compiler
- Hosting dokumentasi dpldocs.info saat ini biayanya nyaris tertutup oleh Patreon, dan selama biayanya tetap tertutup, layanan akan terus berjalan termasuk dukungan paket dub
- Tidak akan menerima update upstream D
- Fitur yang ada diperkirakan mungkin akan tetap bekerja dengan baik
- Bagian dukungan khusus upstream D di blog dihentikan
- Statistik tidak lagi disertakan
- Namanya berubah menjadi “This Week in ARSD”, dan mungkin nantinya berubah menjadi “This Week in OpenD”
- PR dan laporan bug untuk upstream D segera dihentikan
- Hal-hal yang bermanfaat bagi dirinya tidak akan dikirim ke upstream, melainkan digabungkan ke OpenD
- Dukungan untuk pengguna D juga dihentikan
- Dulu ia membantu pengguna D dari berbagai tingkat keahlian selama beberapa jam setiap minggu, tetapi sekarang tidak menjamin jawaban untuk pertanyaan upstream D
- Jika menjawab, kemungkinan besar ia akan menyarankan untuk mencoba OpenD
- Ia tidak akan menghadiri rapat DLF kecuali perubahan tata kelola disetujui sebagai prasyarat
- Jika diundang ke livestream DConf Online, ia akan menolak
- Untuk library D, janji kompatibilitas antara versi internal dan update compiler eksternal hanya dipertahankan bagi pihak yang memiliki kontrak dukungan berbayar
- Untuk pengguna lain, kompatibilitas upstream D langsung dicabut
- Kode disediakan apa adanya tanpa jaminan tersurat maupun tersirat apa pun
- Jika bergabung dengan fork OpenD, dukungan untuk library tersebut akan berlanjut
- Aplikasi D juga, seperti library, tidak memiliki janji kompatibilitas upstream D, dan karena awalnya dirancang untuk penggunaan pribadi, jaminan kompatibilitasnya lebih longgar
Sikap yang tersisa
- Ia menyatakan telah menghabiskan banyak waktu untuk D selama 16 tahun terakhir, dan sebagian besar karier pemrogramannya berkat D serta Digital Mars C++ sebelumnya
- Walter Bright dan rekan-rekannya memberi dampak besar pada hidupnya, dan Walter dinilai sebagai kontributor yang luar biasa untuk proyek bahasa pemrograman
- Meski begitu, kini ia meninggalkan D milik Walter Bright dan memilih jalur terpisah bernama OpenD
- Agar berhasil, OpenD masih harus melakukan banyak hal dan kemungkinan gagalnya juga sangat tinggi, tetapi kini ia memandang tanggung jawab kegagalan hanya berada pada pihak OpenD sendiri
1 komentar
Komentar Hacker News
Setidaknya Walter, dan mungkin juga sebagian pimpinan D lainnya, aktif di sini, jadi besar kemungkinan mereka akan melihat komentar-komentar ini
Saya harap kita ingat bahwa mereka juga manusia, benar-benar peduli pada D, dan berdasarkan pengalaman saya pada dasarnya orang-orang baik yang berusaha melakukan yang terbaik
Saya tidak tahu mengapa kali ini akan berbeda, dan rasanya seperti pengulangan Tango bagian 2
Bedanya, sekarang kapal itu sudah lama sekali berlayar
Jika proyek ini bisa berjalan lebih baik di bawah kepemimpinan lain, kemungkinan itu perlu dipertimbangkan
Secara pribadi saya sangat berharap D bisa hidup kembali, dan sampai sekarang ini adalah bahasa favorit saya
Ini bukan untuk menyerang Walter atau siapa pun; mereka hanya orang-orang yang mencoba menyelamatkan sesuatu yang mereka sukai
Sayangnya, hal seperti ini pada akhirnya memang tak terhindarkan. Selama bertahun-tahun sudah terlalu banyak pembicaraan tentang fork D
Ketika buku Andrei Alexandrescu terbit pada 2010, hampir semua hal bagus di D masuk ke C#, Java, dan C++
Implementasinya mungkin tidak sebersih D, tetapi jika bisa digunakan dalam suatu bentuk di dalam ekosistem tooling dan library yang lebih baik, perbedaan itu tidak terlalu penting
Terlalu banyak waktu hilang untuk mengejar fitur emas yang bisa menarik orang, dan fitur-fitur itu pun tidak berhasil distabilkan
Andrei juga tampaknya belakangan lebih sibuk dengan C++ dan CUDA daripada D
Ditambah lagi dalam 10 tahun terakhir ada renaisans bahasa pemrograman yang dikompilasi secara native, sehingga persaingan makin ketat
Karena itu ini makin disayangkan. Di komunitasnya sendiri ada banyak orang hebat yang enak diajak berdiskusi
Saya memakai Python setiap hari, dan ada banyak hal dari D yang saya rindukan
Belum lagi soal performa
Saat melihat-lihat D sebagai orang luar, saya melihat hal serupa
Ketika Rust masih baru, konsep lifetime diajukan ke komunitas D, tetapi Walter menganggapnya tidak perlu
Beberapa tahun kemudian Walter membawa proposal lifetime miliknya sendiri yang cukup berbeda dari Rust, sehingga proposal itu juga kurang tervalidasi dibanding proposal komunitas sebelumnya
Sekarang saya sudah kehilangan minat pada D, jadi saya tidak tahu seberapa matang fitur lifetime baru itu, tetapi saya akan terkejut kalau itu sama bergunanya dengan Rust
Fitur apa pun punya trade-off dengan interaksinya dengan fitur bahasa lain, beban kognitif, penurunan kecepatan kompilasi, kompleksitas desain standard library, rusaknya kompatibilitas mundur, dan sebagainya
Saya rasa tidak masuk akal mengharapkan perombakan besar hanya untuk mendukung satu fitur yang disukai dari bahasa lain
Grup riset saya meninggalkan D dan pindah ke Rust beberapa tahun lalu karena kurangnya respons dan arah pengembangan bahasa yang kurang baik
Saya berharap Adam dan yang lain berhasil dengan OpenD, tetapi semoga mereka memanfaatkan kesempatan ini untuk memilih nama yang lebih unik dan mudah diingat
Model tata kelola baru tidak dimulai dengan mendeklarasikan daftar fitur baru atau memutuskan menghapus sebagian fitur, melainkan dimulai dengan kuorum pihak-pihak berkepentingan yang membahas tata kelola
Itu bukan perubahan model, melainkan sekadar pergantian rezim
Keluhan yang sah bisa saja ada, dan cara D bergantung pada Walter sebagai penjaga gerbang mungkin terasa terlalu ketat bagi sebagian orang
Namun cara fork ini dimulai bukan pertanda baik untuk jangka panjang
Agar fork berhasil, ia harus mendapat dukungan luas, dan pada akhirnya perlu membawa hampir mayoritas komunitas D, bukan hanya segelintir kontributor produktif
Jika tidak, fork itu juga akan gagal, dan perhatian terhadap proyek asli makin terpecah sehingga peluang bertahan yang tersisa pun bisa hilang
Selain itu, dibutuhkan kemampuan dan kemauan untuk mendukungnya selama puluhan tahun
Sepertinya ada pembaruan yang diposting: https://dpldocs.info/this-week-in-d/Blog.Posted_2024_01_08.h... dan tampaknya mendapat cukup banyak perhatian
Secara pribadi, saya rasa akan lebih lucu kalau namanya Died
Bisa ada slogan keren seperti “It never Died”, menunjukkan bahwa ini fork, dan kalau nanti diperlukan juga memberi ruang untuk membawa bahasa ini ke arah baru
OpenD memberi kesan kompatibilitas penuh
Tentu saja saya tidak punya kepentingan langsung dalam hal ini, dan saya berharap ini berjalan baik
Ada thread besar tentang topik ini di forum D: https://forum.dlang.org/thread/beykokfitddfdsjyqjjy@forum.dl...
Tulisan asli terutama berisi keluhan tentang konflik antarpersona, sedangkan tautan ini berisi lebih banyak diskusi teknis
Dari isi tersebut, orang-orang yang melakukan fork tampaknya pada dasarnya menginginkan bahasa lain, dan untuk itu mereka tampaknya bersedia menerima berbagai perubahan yang merusak kompatibilitas
Secara pribadi, saya bingung ceruk pasar apa yang ingin disasar D jika berfokus penuh pada garbage collector
Sebelumnya pun bukan berarti ada ceruk yang jelas. Pada dasarnya ia adalah “C++ yang 10% lebih baik”, dan sulit dijual karena tidak ada fitur pembunuh yang benar-benar membedakannya
Kebanyakan orang kemungkinan akan tetap di C++ karena dukungan yang sudah ada, codebase, dan basis industri; memakai Rust untuk proyek baru; atau memakai Zig jika menginginkan kesederhanaan
Terutama setelah C++20, bisa dibilang “C++ yang 10% lebih baik” itu sudah ada
Saya juga tidak tahu apakah berfokus pada garbage collector akan banyak membantu
Kalau begitu, ia akan bersaing dengan C# dan Java, dua bahasa yang sejak awal dimaksudkan sebagai penerus C++ yang memiliki garbage collection, aman, dan ringkas; pada titik ini saya tidak begitu melihat bagaimana ia bisa bersaing dengan mereka
Terutama C#, selain fitur low-level dan unsafe yang cukup bagus seperti raw pointer, kontrol tipe referensi/tipe nilai, serta kontrol layout memori, juga terus mengadopsi sistem tipe dan refleksi yang lumayan untuk bahasa tua yang mengutamakan OOP, plus fitur-fitur dari rumpun ML
Jujur saja, visi D selalu terasa membingungkan
Saya pernah membaca dokumentasi fitur bahasa tertentu seperti BetterC, mode safe, dan lifetime, tetapi secara sintaksis sulit dibaca, dan meski detail penjelasannya banyak, secara umum tidak dijelaskan dengan baik
Saya tidak benar-benar merasakan adanya visi desain atau tujuan bahasa yang konsisten
Penulis memang menyinggung masalah ini, tetapi visi mereka juga tidak terlihat jauh lebih jelas
Memiliki beberapa target teknis jangka menengah yang konkret memang bagus, tetapi tidak jelas untuk apa target-target itu ada
Saya adalah programmer Rust, jadi sudah jelas apa yang akan saya pakai untuk proyek pribadi baru; tetapi kalau harus memilih yang lain, saya lebih suka memakai OCaml, C++, bahkan C#
Pertama, D adalah pengganti C++, tetapi bukan C++, dan banyak pengembang C++ frustrasi oleh perbedaan itu
Kedua, D bisa melakukan jauh lebih banyak daripada sekadar menjadi pengganti C++
Ia bisa dipakai untuk scripting, bahasa pemrograman serbaguna, dan khususnya interoperabilitas C seperti ImportC dan BetterC
Salah satu tujuan fork ini adalah berhenti mencari-cari alasan soal garbage collector
Standard library masih memiliki reference counting, unique pointer, dan sebagainya
Jika seseorang ingin mengontribusikan fungsi yang menghindari garbage collector, menurut saya itu akan diterima
Namun dalam fork ini, kemungkinan besar sulit melihat Adam berusaha terlalu keras menghindari garbage collector saat menambahkan fungsi baru ke standard library
Ia percaya ketakutan terhadap garbage collector terlalu dibesar-besarkan
Selama 10 tahun terakhir, ada banyak hal yang bisa dipelajari seputar governance bahasa pemrograman
Jika melihat bahasa-bahasa yang sedang naik dan berubah, mereka juga mengalami benturan besar atau kesalahan terkait governance
Sekarang, menurut saya hal utama yang perlu diperhatikan saat melihat bahasa pemrograman adalah governance
Kita perlu melihat bagaimana mereka mengatakan cara operasinya, bagaimana praktiknya, seperti apa hasilnya sejauh ini, dan kira-kira akan seperti apa ke depannya
Evolusi bahasa pemrograman hampir seperti manajemen kompleksitas, sekaligus harus menyeimbangkan kebutuhan berbagai pemangku kepentingan
Hampir semua konflik governance muncul ketika satu kelompok pemangku kepentingan mempersoalkan kebutuhan yang esensial bagi kelompok lain, dan tidak selalu mungkin memuaskan kedua belah pihak
asyncdi Rust dikenal sebagai salah satu contoh, dan menjelaskan desain yang memang bekerja tetapi secara keseluruhan tidak memuaskanGo adalah pengecualian yang jarang, karena tim inti tidak punya alasan untuk menghormati semua pemangku kepentingan dan memiliki sumber daya serta kemauan yang cukup untuk itu, tetapi tetap saja ada beberapa konflik
Model penulisan standar pada 1960–80-an jauh lebih baik, dan juga membatasi pertarungan politik dalam periode yang singkat
Saya tidak begitu tahu apa sisi negatif dari adanya beberapa implementasi compiler
Secara pribadi, menurut saya itu alasan utama mengapa C tersebar begitu luas
Compiler dapat mengeksplorasi arah yang berbeda-beda, dan ekstensi bahasa yang terbukti bernilai akhirnya diadopsi juga oleh implementasi lain, bahkan kadang masuk ke standar tanpa terlalu banyak dirusak dalam proses konsensus komite
Setidaknya saya kira ada 2, yaitu implementasi dari gcc dan dari pihak dlang