Bagaimana cara melanjutkan ketika bug di perpustakaan sumber terbuka diduga?

8

Kami menggunakan beberapa pustaka sumber terbuka di proyek kami. Kadang-kadang ada beberapa masalah yang ditemukan pada beberapa di antaranya (kemungkinan besar bug perpustakaan, tetapi mungkin juga penggunaan yang salah dari pihak kami, terutama ketika terkadang dokumentasi tidak sepenuhnya 100% lengkap). Karena pustaka sering sangat kompleks, men-debug mereka untuk menunjukkan dengan tepat sumber masalahnya terkadang cukup sulit. Bisakah Anda membantu saya merangkum opsi-opsi lain apa yang ada dan bagaimana cara melanjutkannya?

Saya baru-baru ini mengalami beberapa masalah aneh ketika menggunakan TCMalloc (pengalokasi memori yang dapat diskalakan Google) pada Windows, jadi saya akan sangat menyambut jawaban yang akan berlaku untuk perpustakaan khusus ini, tetapi jawaban yang lebih umum juga bagus.

1) Minta bantuan pengelola / pemilik proyek. Bagaimana ini bisa dilakukan?

2) Pekerjakan seseorang untuk mengidentifikasi dan memperbaiki masalah tersebut. Bagaimana cara melakukannya? Bagaimana saya dapat menemukan seseorang dengan keahlian yang cukup di beberapa perpustakaan tertentu?

... ada opsi lain?

Suma
sumber
1
Saya akan sangat merekomendasikan opsi (1), semua situs proyek open source memiliki tempat untuk pengajuan cacat atau mencoba untuk menghubungi pengembang melalui milis mereka. Anda harus bisa mendapatkan jawabannya lebih cepat mengingat jika proyek tersebut masih hidup.
1
@NinjaCoder: menggunakan proyek mati dengan dokumentasi yang buruk mungkin merupakan keputusan yang buruk, aktivitas pada proyek harus dipertimbangkan ketika memilihnya.
Matthieu M.
@Matthieu - Saya sepenuhnya setuju dengan Anda.
Tanyakan proyek, bukan orang-orang tertentu di proyek. Yaitu, membuat komentar forum atau setara. Anda tidak benar-benar perlu khawatir tentang debug kode (kecuali jika Anda ingin mengembangkan pada), Anda hanya perlu menyediakan sarana bagi para devs untuk mereproduksi bug. Pengembang mendapatkan pembaruan email reguler yang berisi posting dari halaman pengembang. Lakukan pekerjaan yang baik untuk membuat profil masalah dan para pengembang akan menemukan Anda. Juga, jangan mengharapkan perbaikan segera karena kemungkinan besar akan disertakan dalam rilis berikutnya.
Evan Plaice

Jawaban:

15

Saya biasanya mencoba yang berikut ini, dengan urutan:

1) Periksa milis atau forum untuk melihat apakah bug saya baru, sudah ada di pelacak, atau diperbaiki dalam versi yang lebih baru / SVN / apa pun

2) Jika bug tidak diketahui, tanyakan tentang hal itu di milis. Ini adalah ketika Anda diberi tahu itu adalah fitur, bukan bug, dan / atau RTFM;)

3) Jika bug itu memang bug dan itu baru, Anda bisa menunggu sampai seseorang memperbaikinya (Anda dapat membantu dengan memberikan info tambahan, pengujian atau debugging) atau memperbaikinya sendiri dan mengirimkan tambalan

Jika Anda perlu bug diperbaiki segera, taruhan terbaik Anda adalah melakukan langkah 2 dan 3 bersama-sama (laporkan bug dan usulkan tambalan). Kalau tidak, bug Anda mungkin diperbaiki atau tidak pada waktu yang tepat, tergantung pada apakah orang lain merasa layak untuk diperbaiki. Saya kira Anda dapat "menyuap" pengembang atau anggota komunitas lainnya untuk memperbaiki bug Anda, meskipun saya tidak pernah mencobanya.

ggambett
sumber
+1 untuk memeriksa milis. Saya lupa menyebutkan itu.
Matt Ellen
Juga, pada langkah # 2 sebuah test case pendek dapat sangat membantu. (Pendekatan ini berlaku untuk perpustakaan / komponen / ... / sumber non-terbuka: semakin mudah Anda melihat bug, semakin mudah untuk memperbaikinya.)
Richard
@ Matt: Terima kasih. Agar adil, tidak setiap proyek memiliki milis atau forum aktif di belakangnya. Untungnya, proyek yang paling saya retas (yang tidak terlalu banyak) adalah SDL dan Ogre, yang memang memiliki komunitas yang sangat aktif.
ggambett
5
Anda lupa ... Jika Anda ingin orang lain melihat bug, sajikan kondisi yang diperlukan untuk mereproduksi bug secara akurat. Pengguna yang berpadu dan mengatakan 'kode Anda rusak' akan diabaikan sedangkan, pengguna yang bertanggung jawab yang memberikan profil baik tentang apa yang memicu bug biasanya akan menerima bantuan paling cepat (selama ada pengelola aktif). Memperbaiki bug yang memengaruhi pengguna secara langsung biasanya akan menjadi prioritas utama. Hanya saja, jangan diskon bahwa waktu devs berharga (dan mereka mungkin sudah dikonsumsi dengan pengembangan mereka sendiri di proyek).
Evan Plaice
5

Hal terbaik tentang OSS adalah Anda memiliki kode sumber!

Jadi, Anda bisa memperbaikinya sendiri, atau mempekerjakan seseorang untuk melakukannya.

Yang penting adalah memberikan kembali kepada komunitas dan memeriksa perbaikan Anda!

ozz
sumber
4

Cara paling masuk akal yang saya temukan, ketika Anda memiliki masalah dengan perpustakaan dan Anda tidak memiliki keterampilan untuk menemukan masalah sendiri, adalah menghubungi pengelola. Mereka tahu kode dan akan berterima kasih untuk mencari tahu tentang bug, jika itu masalahnya, atau akan mengarahkan Anda ke arah bagaimana menggunakan perpustakaan dengan benar.

Misalnya, saya punya masalah yang tidak bisa saya selesaikan ketika saya sedang mengembangkan situs yang menggunakan SVG Web . Saya tidak memiliki keterampilan scripting tindakan, jadi saya memulai utas bertanya tentang masalah ini dan saya diminta untuk mencatat bug dengan kasus uji minimal, jadi saya melakukannya. Ternyata masalahnya ada di browser, jadi saya harus sedikit men-tweak kode saya.

Jika Anda cukup pintar untuk memperbaikinya sendiri, jangan lupa untuk memberikan kembali apa yang Anda pelajari.

Matt Ellen
sumber
2

Jika Anda memiliki ide bagus untuk mereproduksi bug, maka menulis unit test yang mengekspos bug akan menjadi titik awal yang baik. (Seringkali, proyek open source sudah memiliki ruang uji besar).

Tes unit gagal adalah cara yang baik untuk mengkomunikasikan "bug" ke pengelola proyek. Jika itu bukan bug tetapi hanya Anda yang menggunakannya secara salah, maka pengelola akan menunjukkan bahwa ini adalah desain, dan paling sering dengan alasan mengapa.

Pete
sumber
1
Sayangnya satu-satunya repro yang saya miliki sejauh ini membutuhkan beberapa GB data, aplikasi kita, dan beberapa jam untuk berjalan. Saya akan mencoba untuk mengurangi ini entah bagaimana sebagai langkah pertama saya, karena saya mengerti repro akan sangat penting bagi kedua pengelola atau siapa pun eksternal yang mungkin melihat masalah ini.
Suma
1

Tulis test case yang bersih, kemudian kirimkan ke milis.

IME lebih sering daripada tidak Anda menemukan kesalahan dalam kode Anda sendiri saat menulis test case.

kotoran merah
sumber
1

Hanya karena belum disebutkan, berikan " Cara Mengajukan Pertanyaan dengan Cara Cerdas ". Ini memiliki banyak saran yang sangat berharga tentang cara mendekati mengajukan pertanyaan dan meminta bantuan dari komunitas pembangunan. Banyak dari itu bermuara pada: memahami cara kerja komunitas dan pastikan Anda bermain sesuai aturan. Jika Anda sopan, tanyakan pertanyaan cerdas dengan memberikan semua perincian yang diperlukan (dan resep reproduksi jika itu kemungkinan bug), Anda kemungkinan akan mendapatkan respons yang masuk akal.

Glenn McAllister
sumber