Apa tanggung jawab moral untuk merilis perangkat lunak open source terlalu cepat? Misalnya, produk hampir lengkap yang belum sepenuhnya diuji.
Apa harapan programmer? Tunggu sampai sepenuhnya diuji, atau lepaskan ke open source dan kemudian lanjutkan pengembangan, pengujian, dan peningkatan lebih lanjut?
Kekhawatirannya adalah bahwa perangkat lunak bersumber terbuka dan berpotensi menyebabkan masalah bagi konsumen.
Apakah ini ketakutan yang tidak berdasar?
open-source
Thomas Stringer
sumber
sumber
Jawaban:
Saya percaya sebaliknya bahwa Anda harus merilis perangkat lunak open source sesegera mungkin. Tidak ada "terlalu cepat" untuk itu (tetapi harus dikompilasi).
Atau setidaknya menerbitkan kode sumber sangat awal dan terus menerus (misalnya dengan sering mendorong pada github ), tanpa membuat rilis resmi .
Namun, sangat penting untuk menandainya sebagai tahap alfa atau beta, dan jika mungkin untuk mengatakan (misalnya dalam file
README
atauTODO
, dan di beberapa blog, dll ...) apa yang hilang, tidak diuji, atau dalam kondisi buruk. Anda juga harus menggunakan nomor versi untuk menyampaikan informasi tersebut.Dengan perangkat lunak gratis , yang terbaik yang harus terjadi adalah seseorang melirik kode sumber dan mengusulkan Anda perbaikan kecil. Inilah sebabnya mengapa Anda membuat perangkat lunak Anda gratis!
Oleh karena itu, Anda perlu membuat pekerjaan harian Anda terlihat pada perangkat lunak gratis Anda! Kontributor eksternal akan kesal jika tambalan mereka tidak berfungsi, atau merupakan duplikat, kode sumber perangkat lunak Anda saat ini.
Apa yang harus Anda takuti adalah tidak ada yang tertarik dengan perangkat lunak Anda (dan berkontribusi padanya). Menarik minat pihak luar ke perangkat lunak gratis (khususnya, menarik kontributor eksternal) adalah perjalanan yang panjang.
sumber
TL; DR:
Lepaskan Dini. Lepaskan Sering.
Anekdot pribadi:
Saya sangat senang dengan proyek yang sedang saya kerjakan. Suka, sangat bersemangat. Aku tidak bisa tidur nyenyak di malam hari. Jadi, saya mendorong co-dev saya untuk merilis v1.0 lebih cepat dari yang dia inginkan.
Itu sungguh mengerikan. Tidak ada yang berhasil seperti yang seharusnya. Ada bug di setiap belokan, tetapi kami mencatatnya dan memperbaikinya. Kami bahkan memiliki beberapa pengadopsi awal yang mengirimkan bug yang mungkin tidak kami temukan. Satu atau dua minggu kemudian kami merilis rilis baru yang membahas banyak masalah dan kemudian kembali untuk membangun fitur baru.
Melepaskan lebih awal adalah hal terbaik yang bisa kami lakukan. Itu menempatkan produk kami di depan pengguna nyata. Melakukan bug yang terbuka ini, kami mungkin atau mungkin tidak menemukan dan membuat proyek kami lebih baik. Ini juga membuat para pengadopsi awal tahu bahwa kami serius tentang proyek ini. Akan ada lebih banyak rilis dan pengembangan aktif.
Itu bisa dengan mudah pergi sebaliknya juga. Kami bisa mengabaikan laporan bug itu. Atau kita bisa tidak bereaksi dengan cepat. Itu mungkin cerita yang berbeda jika kami butuh 3 bulan untuk merilis v1.1, bukan beberapa minggu.
sumber
Ini sama dengan perangkat lunak sumber tertutup. Komunikasi itu penting.
Beri tahu pengguna tentang keadaan perangkat lunak itu dan mengapa tersedia untuk diunduh.
Perangkat lunak akan selalu menyebabkan masalah pelanggan, tidak peduli apakah itu sepenuhnya diuji atau tidak. Sebagian besar pelanggan menerima kenyataan itu, dan beberapa pelanggan tidak pernah melakukannya. Tetapi jika perangkat lunak akan menyebabkan lebih banyak masalah daripada yang bisa diharapkan, ada kewajiban moral untuk memberi tahu pelanggan tentang risiko yang mereka ambil. Informasi harus dalam bentuk singkat (label "Alpha / Beta / EarlyAccess") *, dan secara rinci: Daftar masalah yang diketahui, solusi, dan pertimbangan khusus, misalnya jika kemungkinan data dapat rusak.
* Ketahuilah bahwa pengguna telah dilatih oleh beberapa perusahaan perangkat lunak besar untuk menganggap "Beta" sebagai keadaan di mana perangkat lunaknya agak padat, sehingga memberi tahu pengguna bahwa perangkat lunaknya "Beta" sering kali bukan informasi yang memadai.
sumber
Tidak ada tanggung jawab moral sama sekali. Tidak ada yang dipaksa untuk menggunakan perangkat lunak setengah matang Anda.
Satu-satunya hal yang perlu diperhatikan adalah kredibilitas Anda.
sumber
Pengalaman saya adalah bahwa ada keseimbangan yang harus dicapai.
Saat ini, saya sedang bekerja (dalam arti menjawab pertanyaan dan memberikan saran pengembangan, tanpa melihat kode apa pun) dengan pengembang yang membuat proyek FOSS yang sangat menarik yang menggunakan kode yang saya tulis. Rilis publik telah berulang kali tertunda oleh realisasi perubahan desain yang akan membuat proyek jauh lebih baik dalam jangka panjang, tetapi yang membutuhkan penulisan ulang kode yang signifikan yang sudah ditulis dan itu sudah "berfungsi". Pandangan saya adalah, seandainya rilis yang berfungsi tetapi tidak sempurna dibuat segera setelah ada sesuatu yang berfungsi untuk ditampilkan, ide-ide untuk perubahan (dan tambalan yang sebenarnya) bisa saja berasal dari komunitas yang lebih luas yang tertarik pada proyek ini dan mempercepatnya daripada memiliki masalah muncul perlahan, satu per satu, sebagai pengembang memikirkan mereka dan meminta umpan balik desain dari saya dan anggota komunitas lain yang tertarik. Jadi dari sudut pandang ini, saya sangat mendukung "rilis awal, rilis sering".
Di sisi lain, rilis berkualitas rendah dapat membuat proyek baru terlihat buruk bahkan sebelum proyek dimulai. Beberapa perangkap yang pernah saya lihat meliputi:
Untuk poin terakhir, saya memikirkan hal-hal seperti:
Jenis-jenis masalah ini mengarah pada gambar "vaporware" yang mungkin sulit untuk diguncang kecuali Anda sangat terbuka tentang kurangnya kode kerja untuk memulai.
Akhirnya, buat nomor versi Anda masuk akal. Jangan panggil proyek Anda "1.0" sampai proyek melakukan apa yang diharapkan pengguna tanpa crash. Saya selalu beruntung dengan menggunakan nomor versi di sekitar "0,5" untuk rilis publik awal dan pergi dari sana, tetapi saya juga melihat hal-hal seperti "0,1" atau "0,10" yang masuk akal.
sumber
Ada satu kasus ketika merilis perangkat lunak bebas dapat memiliki konsekuensi negatif. Beberapa spesifikasi dilisensikan kepada publik dengan syarat bahwa semua implementasi yang didistribusikan kepada publik harus memenuhi spesifikasi sepenuhnya ketika pertama kali diterbitkan. Penerbit secara hukum melarang Anda mendistribusikan implementasi spesifikasi yang sedang dikerjakan. Tanpa lisensi khusus yang dinegosiasikan dari penerbit spec, Anda harus membaginya dengan siapa pun hingga lulus semua tes. Ini memaksa "model katedral" (sebagaimana Eric S. Raymond menyebutnya) pada implementasi spesifikasi.
Salah satu spesifikasi di bawah lisensi tersebut adalah Spesifikasi Bahasa Jawa . Pembatasan ini berlaku untuk pengembang mesin virtual yang kompatibel dengan JVM, tetapi untungnya tidak untuk pengembang aplikasi yang berjalan di JVM.
Artikel " 4 Pergeseran Detail Tentang Microsoft 'Open Source' .NET " oleh Liu Qihao & Ciaran O'Riordan menyebutkan kemungkinan menafsirkan Microsoft Patent Promise untuk .NET Library dan Komponen Runtime untuk mengecualikan implementasi CLR yang tidak lengkap dengan cara yang sama. . Tetapi sekali lagi, ini tidak berlaku untuk aplikasi yang berjalan di CLR.
sumber