Strategi Tata Kelola Dalam Bahasa Pemrograman – Bahasa Pemrograman Umum (GPL), seperti Java, PHP, C++,… terus berkembang untuk beradaptasi dengan lanskap teknologi yang terus berubah. Evolusi berakar pada aspek teknis tetapi pada akhirnya diputuskan oleh sekelompok orang yang mengatur bahasa dan bekerja sama untuk memecahkan, memilih dan menyetujui ekstensi dan modifikasi bahasa baru. Seperti di komunitas mana pun, aturan tata kelola digunakan untuk mengelola komunitas, membantu memprioritaskan tugas mereka, dan mengambil keputusan.
Strategi Tata Kelola Dalam Bahasa Pemrograman
pythonsprints – Biasanya, aturan ini menentukan mekanisme pengambilan keputusan yang digunakan dalam proyek, sehingga berkontribusi pada keberlanjutan jangka panjangnya dengan mengklarifikasi bagaimana pengembang bahasa inti (kontributor eksternal dan bahkan pengguna akhir bahasa) dapat bekerja sama. Terlepas dari pentingnya mereka, topik inti ini sebagian besar telah diabaikan dalam studi GPL.
Baca Juga : Apa itu JavaScript? Sekilas Bahasa Scripting Paling Populer di Web
Dalam posting ini, kami menyajikan makalah kami “ Analisis dan Pemodelan Tata Kelola dalam Bahasa Pemrograman Umum ” yang diterima di Konferensi Internasional ACM SIGPLAN tentang Rekayasa Bahasa Perangkat Lunak (SLE’19) di mana kami mempelajari delapan GPL terkenal dan menganalisis bagaimana mereka mengatur mereka evolusi. Kami percaya penelitian ini membantu untuk mengklarifikasi perbedaan pendekatan yang digunakan GPL dalam hal ini. Model tata kelola ini, digambarkan sebagai model fitur, kemudian dapat digunakan kembali dan dicampur oleh pengembang bahasa baru untuk menentukan tata kelola mereka sendiri.
1. Perkenalan
Evolusi Bahasa Pemrograman Umum (GPL) adalah kegiatan yang sangat teknis yang mungkin melibatkan perbaikan pada sintaks bahasa, parsing, kesesuaian dan kinerja, antara lain. Mirip dengan proyek perangkat lunak (sumber terbuka), evolusi ini sangat bergantung pada pekerjaan komunitas pengembang dan pengguna akhir bahasa yang bersedia berkontribusi pada evolusinya, terkadang secara sukarela (kontributor juga dapat dibayar oleh perusahaan yang mensponsori proyek atau, untuk beberapa bahasa, digunakan oleh perusahaan yang mendorong bahasa tersebut maju).
Sementara beberapa karya berfokus pada tantangan teknis evolusi bahasa, sedikit perhatian diberikan pada masalah pemahaman yang lebih baik tentang bagaimana komunitas mengatur dirinya sendiri untuk mengembangkan bahasa. Idealnya, organisasi masyarakat harus transparan dan dijelaskan secara eksplisit dalam seperangkat aturan tata kelola, di mana setiap aturan menjelaskan secara parsial bagaimana berkontribusi pada aspek tertentu dari evolusi bahasa dan bagaimana keputusan untuk menerima/menolak kontribusi tersebut dibuat. Aturan tata kelola bisa sesederhana menyatakan proyek mengikuti model BDFL (yaitu, model kediktatoran) atau cukup rumit untuk memodelkan proses yang lebih demokratis dan partisipatif.
Sejauh ini, sedikit yang diketahui tentang praktik tata kelola di GPL saat ini. Bahkan jika tidak ada solusi yang cocok untuk semua, memiliki perspektif yang luas dari model tata keloladi tempat (dan bagaimana model ini berhubungan dengan karakteristik lain dari bahasa) dapat menjelaskan masalah kompleks evolusi bahasa dari perspektif baru dan segar.
Kami yakin ini juga akan membantu pengembang bahasa baru untuk membuat keputusan yang tepat saat membuat atau mengembangkan bahasa. Makalah ini, di mana kami menganalisis model tata kelola dari delapan GPL terkenal dan membangun model fitur yang mencirikan mereka dan memfasilitasi konfigurasi aturan tata kelola untuk bahasa baru, adalah langkah pertama ke arah ini. Kami fokus pada GPL, yang biasanya memiliki audiens yang lebih besar dan memfasilitasi analisis, tetapi pekerjaan kami juga dapat membantu saat mengembangkan Domain-Specific Languages ??(DSL).
2. Pemilihan Bahasa
Untuk melakukan studi awal kami, kami memilih delapan GPL terkenal yang mewakili beragam model tata kelola dalam pengembangan bahasa . Karena semua bahasa yang dipilih terkenal, kami hanya mengomentari aspek tata kelola atau evolusi yang paling relevan yang kami perhitungkan untuk memasukkan bahasa dalam penelitian kami.
C++ – Bahasa ini dibuat pada tahun 1985 oleh Bjarne Stroustrup sebagai perpanjangan dari C. Bahasa ini telah dimasukkan dalam studi sebagai contoh bahasa yang distandarisasi oleh Organisasi Internasional untuk Standardisasi (ISO; pada tahun 1998).
Go – Google merancang Go pada tahun 2009 terutama untuk menangani mesin multicore dan jaringan. Kami memasukkan Go dalam penelitian kami sebagai contoh bahasa yang digerakkan oleh perusahaan.
Java Bahasa ini dibuat pada tahun 1995 oleh Oracle Corporation, dengan James Gosling salah satu desainer utama. Bahasa bergantung pada mekanisme pengambilan keputusan di mana tingkat keanggotaan memainkan peran penting, yang kami anggap menarik untuk penelitian kami.
Kotlin – Bahasa ini dibuat oleh JetBrains pada tahun 2011 dan diadopsi oleh Google untuk mendukung pengembangan aplikasi Android. Untuk Go, kami memilih bahasa ini sebagai contoh bahasa yang digerakkan oleh perusahaan. Namun, berbeda dengan Go, perusahaan di balik Kotlin memiliki model bisnis yang terkait langsung dengan bidang GPL.
PHP – Bahasa ini dibuat pada tahun 1995 oleh Rasmus Lerdorf dan kemudian dikembangkan oleh PHP Group. Proses pembangunan bergantung pada model tata kelola partisipatif yang menurut kami menarik untuk dipertimbangkan dalam penelitian kami.
Python – Guido van Rossum menciptakan bahasa ini pada tahun 1990 dan mengatur proses pengembangan hingga 2018. Yayasan Perangkat Lunak Python saat ini bertanggung jawab atas pengembangannya. Kami memilih bahasa ini karena evolusi model tata kelolanya dalam beberapa tahun terakhir, yang dimulai dengan model BDFL klasik.
R – Bahasa ini dibuat oleh beberapa pengembang pada tahun 1993. Kami memilih bahasa ini karena terutama dirancang untuk statistik dan analisis data, bidang yang berbeda dari bahasa lain yang dipertimbangkan dalam penelitian kami.
Scala – Bahasa ini dirancang oleh Martin Odersky di cole Polytechnique Fédérale de Lausanne pada tahun 2004. Kami memilih bahasa ini sebagai contoh bahasa dengan asal-usul yang jelas di dunia akademis dan pemimpin yang terlihat.
3. Analisis Tata Kelola di GPL
GPL yang dipilih dianalisis menurut empat dimensi, yaitu: transparansi, keanggotaan, perubahan bahasa (dengan dua subdimensi utama: perubahan struktural dan peningkatan bahasa) dan proses pengambilan keputusan untuk memajukan bahasa. Selanjutnya kami menggambarkan setiap dimensi dan menyajikan hasil yang diperoleh dalam penelitian kami. Tabel 1 menunjukkan dimensi dan merangkum hasilnya.
Transparansi – Dimensi ini mengkaji keberadaan dan isi sumber informasi yang berguna untuk memahami proses pengembangan GPL. Kami menganalisis apakah (1) bahasa dikembangkan di bawah lisensi tertentu (Lisensi kolom), (2) ada dokumen kode etik (kolom CoC) dan (3) ada siklus rilis yang jelas dan publik (kolom RC).
Yang cukup menarik, hasil kami mengungkapkan bahwa hanya setengah dari bahasa yang dianalisis yang transparan dan memberikan informasi semacam ini. Tidak memiliki deskripsi yang jelas tentang kode etik atau siklus rilis menetapkan hambatan masuk untuk kontributor masa depan pada tingkat yang lebih tinggi.
Keanggotaan – Dimensi ini mempelajari tingkat keanggotaan dalam komunitas GPL dan apakah kontributor harus menjadi anggota (dan, jika demikian, anggota seperti apa dan bagaimana mereka dapat naik dari satu tingkat keanggotaan ke tingkat yang lebih tinggi) sebelum dapat mendorong pengembangan.
Hanya tiga bahasa yang dianalisis yang menggunakan organisasi keanggotaan dalam proses evolusinya, semuanya dengan kekhususan:
- Menjadi bahasa standar, komunitas pengembangan di belakang C++ didefinisikan dengan jelas sesuai dengan peraturan ISO, sehingga setiap pengembang yang tertarik untuk berpartisipasi harus menghubungi komite ISO nasional dan membayar biaya yang sesuai.
- Menurut Java Community Process (JCP), Java mendefinisikan tingkat keanggotaan yang berbeda, mulai dari tingkat keanggotaan gratis hingga yang berbayar. Setiap level anggota dapat menyarankan peningkatan evolusi tetapi hanya anggota yang membayar yang memiliki pendapat dalam keputusan tersebut.
- Python mendefinisikan dua peran anggota utama: (1) pengembang inti, yang harus menunjukkan pengetahuan dalam bahasa dan dapat berpartisipasi dalam peningkatan bahasa utama dan (2) anggota dewan, yang terutama berpartisipasi dalam keputusan yang melibatkan perubahan struktural. Sementara yang pertama diakses berdasarkan manfaat, yang terakhir dilakukan melalui pemilihan.
Perubahan Bahasa Dimensi ini menganalisis bagaimana perubahan bahasa ditangani dalam proses evolusi. Kami mengidentifikasi dua jenis perubahan utama: (1) perubahan struktural, yang melibatkan modifikasi sintaks/semantik bahasa; dan (2) perbaikan, yang umumnya memperbaiki bug atau meningkatkan kinerja versi bahasa saat ini (yaitu, implementasi referensi saat ini, jika ada). Untuk setiap jenis kami menarik untuk dipelajari: (1) siapa yang dapat mengajukan permintaan perubahan; (2) apa yang diusulkan, yaitu artefak yang mewakili permintaan perubahan (misalnya, dokumen atau masalah); (3) bagaimana permintaan perubahan diterima/ditolak (yaitu, mekanisme pengambilan keputusan); (4) metode yang digunakan untuk mengkoordinasikan permintaan perubahan; dan (5) alat yang digunakan untuk mengimplementasikan permintaan perubahan.
Hasilnya mengungkapkan bahwa perubahan struktural umumnya ditangani melalui permintaan “formal” (misalnya, JSR, PEP atau SIP) dan diterima melalui mekanisme pemungutan suara. Kontributor diinstruksikan tentang apa yang harus mereka berikan, langkah-langkah yang akan diikuti permintaan untuk penerimaannya dan siapa yang akan bertanggung jawab untuk membuat keputusan akhir.
Namun demikian, cara perubahan ini dikoordinasikan atau diimplementasikan bervariasi di antara GPL yang dievaluasi. Misalnya, dalam perubahan struktural Python dijelaskan oleh Python Enhancement Proposals (PEPs) yang secara jelas mengidentifikasi penulis, jenis dan statusnya, antara lain. Dalam Python PEP juga digunakan untuk menyediakan dokumentasi tentang perpustakaan atau praktik yang baik. PEP dipilih dan akhirnya diterima oleh dewan pengarah.
Mengenai penanganan peningkatan bahasa, semua bahasa bergantung pada penggunaan masalah atau permintaan tarik untuk melacak perubahan. Namun, hanya sedikit dari mereka yang menentukan bagaimana masalah tersebut dan permintaan tarik akan diperlakukan (dan akhirnya diterima). Di Java, Python, dan Scala kami mengamati penggunaan semacam proses peninjauan di mana pengembang inti bertanggung jawab untuk meninjau masalah atau menarik permintaan dan menerima/menolaknya. Juga, beberapa bahasa memerlukan penandatanganan Perjanjian Lisensi Kontributor (CLA) (atau yang serupa) untuk dapat berpartisipasi dalam proses.
Model Pengambilan Keputusan – Dimensi ini mengklasifikasikan mekanisme pengambilan keputusan yang digunakan dalam proyek, yang dapat berupa: (1) diktator, ketika keputusan dibuat oleh seseorang (biasanya pengembang utama); (2) panitia, ketika ada sekelompok pengembang terpilih yang memutuskan secara musyawarah; (3) perusahaan, ketika keputusan dibuat oleh perusahaan; dan (4) komunitas, ketika kelompok pengembang dapat berbicara dalam proses pengembangan.
Sebagian besar GPL yang dianalisis bergantung pada komite atau komunitas. Kami menemukan kasus seperti Python, yang mengikuti model kediktatoran sampai Guido van Rossum menyerah; atau Scala, di mana Martin Odersky memiliki hak veto. Di sisi lain, Go dan Kotlin didorong oleh perusahaan dan sebagian besar keputusan yang mereka buat tidak dipublikasikan.
4. Memodelkan Tata Kelola dalam GPL
Kami menggunakan pemodelan fitur untuk mewakili model tata kelola GPL. Model fitur diusulkan untuk mewakili produk yang valid dari Lini Produk Perangkat Lunak, di mana produk diwakili oleh konfigurasi fitur tertentu dalam model. Dalam proposal kami, model fitur memungkinkan konfigurasi model tata kelola untuk bahasa.
Gambar 1 menunjukkan model fitur tata kelola yang kami usulkan, yang mencakup lima fitur yang mencakup dimensi utama yang dijelaskan dalam Bagian 3. Untuk menyederhanakan model, fitur yang mewakili dimensi perubahan bahasa (yaitu, Perubahan dan Peningkatan Struktural) menggunakan kembali fitur Perubahan.
Setelah komunitas GPL mendefinisikan model tata kelola khusus mereka, model tersebut dapat digunakan dalam berbagai skenario. Pertama-tama, untuk tujuan transparansi dan dokumentasi. Model tata kelola dengan jelas mendefinisikan siapa, apa, dan bagaimana memutuskan tentang masalah bahasa. Dalam pengertian ini, model dapat dianggap sebagai semacam kontrak publik untuk komunitas GPL.
Tetapi model tata kelola juga dapat digunakan, misalnya, untuk mengukur alat kolaborasi dan pengembangan yang digunakan oleh komunitas GPL (misalnya, Jira o Bugzilla) dan bahkan untuk memantau mereka untuk menegakkan model tata kelola (misalnya, masalah dipilih untuk diterima) bila memungkinkan.