- 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.
- 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.
- 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.