Bagaimana cara mengetahui apakah proyek Open Source cukup matang untuk digunakan dalam suatu produk?


15

Ada beberapa proyek open source yang ingin saya sertakan ke dalam produk di tempat kerja. Kami tidak memiliki bandwidth atau keahlian materi pelajaran untuk melakukannya sendiri. Saya menemukan ini dengan mencari di Google. Saya tidak mengetahui adanya "pemain besar" yang memanfaatkan proyek, tapi saya cukup terdorong oleh apa yang saya lihat.

Sekarang, saya sedikit khawatir tentang jumlah risiko yang saya hadapi dengan menggunakan proyek open source joe-blow. Jika saya membutuhkan 95% dari perjalanan ke sana, mungkin 5% sisanya mudah untuk ditambahkan atau diperbaiki. Mungkin itu tidak sepele.

Bagaimana orang menentukan apakah proyek open source cukup matang untuk digunakan dalam suatu produk?

Ini bukan proyek hobi, jadi stabilitas, rawatan, dll. Sangat penting.


Anda tidak pernah tahu pasti. Apakah Windows cukup matang? Uji dan coba hubungi pengembang - kontak pribadi (email?) Dapat memberi tahu banyak tentang kewarasan / kematangan proyek yang telah mereka buat.
SChepurin

3
Satu-satunya hal yang penting adalah apakah itu sesuai dengan kebutuhan Anda. Jika ya, Anda cukup menggunakannya. Jika bukan "dewasa" (definisi yang dapat diperdebatkan), Anda dapat mulai berkontribusi pada kode / diskusi / dokumen / komunitas / bug / xyz untuk membuatnya matang.
treecoder

1
Tulis satu set unit test yang sangat bagus sebelum Anda memasukkan pustaka baru ke dalam produk Anda yang sebenarnya.
Jim In Texas

@ Grengeng: Bahkan tidak harus memenuhi semua persyaratan selama tidak ada alternatif yang lebih baik.
Jan Hudec

Jawaban:


17

Kriteria yang saya gunakan, asalkan proyek sesuai dengan persyaratan saya:

  1. Apakah ada komunitas yang aktif, dengan orang-orang dapat memberikan bantuan?
  2. Apakah lisensi sesuai dengan perkembangan saya?
  3. Apakah produk masih dalam pengembangan aktif?
  4. Apakah itu kerangka yang umum digunakan?
  5. Dapatkah saya menemukan ulasan / posting blog / etc dari produk dan bagaimana orang-orang telah terintegrasi dengannya?

4 & 5 tidak terlalu membantu proyek niche yang sepertinya milik Anda.

Satu hal yang paling penting adalah apakah memenuhi persyaratan Anda? Jika Anda merasa itu terjadi, hal selanjutnya yang harus dilakukan adalah membuat memanfaatkan untuk menguji proyek dan melihat apakah Anda dapat melakukan apa yang Anda inginkan. Ini akan memberi Anda perasaan untuk API-nya (jika itu perpustakaan) dan cara kerjanya.

Pada akhirnya, jika ada sesuatu yang bersifat open source yang melakukan 90% dari apa yang Anda lakukan, bercabang, tambahkan fungsionalitas ekstra dan kembalikan ke komunitas. Saya pernah melakukan ini pada proyek komersial.


6
Jangan pernah lupa bahwa 95% selesai berarti hanya ada 95% yang tersisa untuk dilakukan ....
mattnz

6
  1. Untuk framework, saya biasanya hanya pergi dengan framework besar dan matang dengan banyak modul yang sudah ditulis sebelumnya dan komunitas besar. Secara umum, memilih satu kerangka kerja dari yang lain tidak akan benar-benar mengurangi jumlah pekerjaan yang Anda perlu habiskan untuk kode Anda sendiri, beberapa kerangka kerja dapat mendorong kode yang lebih indah, yang lain mungkin membuat operasi tertentu mudah, tetapi mereka umumnya menyimpulkan dengan sangat sedikit perbedaan dengan upaya pengembangan total. Namun kerangka kerja yang populer akan memiliki lebih banyak modul prewritten yang dapat Anda manfaatkan dan itulah cara Anda biasanya dapat menghemat lebih banyak waktu dan upaya.
  2. Untuk pustaka non framework kecil, umumnya Anda dapat membuat modifikasi sendiri jika diperlukan tanpa banyak masalah, jadi biasanya saya akan mempertimbangkan memiliki komunitas sebagai bonus tambahan. Kebanyakan perpustakaan kecil hanya dikelola oleh satu orang, tetapi masih lebih baik daripada membangun sendiri. Namun, untuk perpustakaan besar, memiliki komunitas yang matang, aktif, dan dokumentasi sangat penting karena Anda tidak mungkin dapat membuat perubahan sendiri dengan mudah.
  3. Lisensi sangat penting. Untuk pustaka satu orang, kemungkinan Anda perlu membuat modifikasi pada pustaka, oleh karena itu penting bahwa lisensi mereka memungkinkan Anda untuk melakukannya berdasarkan persyaratan yang Anda setujui.

Untuk perpustakaan kecil, Anda harus selalu berasumsi bahwa Anda harus melakukan fork dan proyek tersebut sudah ditinggalkan. Ini biasanya bukan masalah, terutama jika proyek di-host di Github atau BitBucket, karena mereka membuat forking proyek orang lain jadi sangat mudah. Untuk perpustakaan kecil, Anda selalu dapat mengambil alih sendiri pemeliharaan proyek, jika pengelola asli tidak ada atau jika mereka berencana untuk mengambil arah proyek ke tempat-tempat yang tidak ingin Anda kunjungi.

Saya kurang peduli dengan aktivitas proyek, perpustakaan dewasa yang telah mencapai rasa "kesempurnaan" mereka umumnya hanya perlu melakukan perbaikan bug, sehingga aktivitas mereka melambat. Kegiatan proyek hanya penting jika perpustakaan melibatkan target yang secara aktif berevolusi, misalnya, pembungkus untuk layanan eksternal perlu terus diperbarui saat layanan eksternal berkembang, sehingga pengembangan aktif sangat penting, tetapi perpustakaan matematika tidak perlu banyak perkembangan baru setelah memiliki semua fitur yang dibutuhkan.

Untuk perpustakaan yang lebih besar, banyak hal menjadi lebih sulit. Mengambil alih lebih banyak terlibat, untungnya perpustakaan yang lebih besar umumnya tidak bergerak secepat, karena mereka umumnya lebih matang.

Seperti @Sam katakan dalam jawabannya, saya setuju bahwa hal paling penting dalam mengevaluasi perpustakaan open source adalah seberapa cocok dengan kebutuhan Anda. Setelah masalah lisensi diselesaikan, menggunakan pustaka sumber terbuka jarang merupakan kesalahan karena Anda selalu dapat melakukan percabangan jika ada hal yang terjadi di selatan.


3

Lihat di pelacak bug proyek. Jika Anda melihat banyak tiket diajukan oleh banyak orang yang berbeda, dan tanggapan datang dari berbagai orang juga, maka itu pertanda baik. Lebih banyak tiket bug == komunitas pengguna yang lebih besar == lebih mungkin untuk siap digunakan oleh Anda.


2
Walaupun itu jelas merupakan cara untuk melihat apakah suatu proyek digunakan dalam kapasitas tertentu, Anda membutuhkan lebih banyak konteks daripada sekadar hitungan tiket bug untuk mengetahui apakah proyek tersebut cukup dapat diandalkan untuk sistem produksi. Jika, misalnya, sebagian besar tiket bug telah dibuka untuk sementara waktu dan masih belum terselesaikan, saya tidak ingin memasukkannya ke dalam sistem kritis bisnis.
Derek

Sebenarnya, saya pikir tidak apa-apa jika bahkan sebagian besar tiket telah dibuka untuk sementara waktu dan tidak diselesaikan. Ini bisa lebih merupakan indikasi ukuran dan keterlibatan basis pengguna daripada apa pun tentang perangkat lunak itu sendiri. Lebih lanjut tentang topik itu di sini: rants.org/2010/01/bugs-users-and-tech-debt .
Karl Fogel

1

Berita itu tidak baik, tetapi itu tidak berarti itu salah: Anda tidak tahu.

Jika ada implementasi analog dalam produksi, Anda akan tahu itu layak, tetapi seperti yang Anda katakan tidak ada "pemain utama" yang menggunakan proyek.

Jika Anda mengembangkan di rumah, maka Anda akan tahu, tetapi seperti yang Anda katakan, Anda tidak memiliki sumber daya.

Masuk akal ingin tahu, tapi ... Anda tidak tahu.

Saya harap jawaban ini memang membantu, karena Anda harus memiliki rencana darurat untuk menarik steker pada teknologi apa pun yang Anda andalkan tetapi tidak mengontrol ... dan mengetahui bahwa Anda tidak tahu apakah itu dapat diandalkan merupakan langkah ke arah itu.


1

Pertanyaannya harus diletakkan secara berbeda. Apa yang sebenarnya Anda tanyakan adalah menggunakan proyek open-source ini cara terbaik mengembangkan produk?

Itu tidak hanya melibatkan proyek sumber terbuka yang dipermasalahkan, tetapi juga opsi Anda yang lain. Jika satu-satunya pilihan Anda adalah menulis semuanya sendiri, daripada Anda lebih baik menggunakan proyek jika Anda dapat memahami kode itu cukup untuk dapat memodifikasinya.

Tentu saja muncul pertanyaan lain apakah proyek Anda layak atau tidak. Yaitu Anda perlu memperkirakan upaya termasuk risiko harus memperbaiki atau menyelesaikan fungsionalitas yang Anda harapkan disediakan oleh kode sumber terbuka. Jika proyek tidak banyak digunakan, Anda harus meninjau kode untuk itu.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.