Bagaimana cara mulai memperbaiki bug pada perangkat lunak sumber terbuka?

8

Saya seorang siswa dengan pengetahuan yang baik dalam pemrograman C dan suka berkontribusi proyek open source yang dikembangkan dalam C. Saya mencari SourceForge dan memilih 7-Zip karena yang banyak digunakan dan dikembangkan menggunakan C.

Saya berpikir untuk mulai dengan memperbaiki bug (yang disarankan oleh banyak orang di situs web mereka) dan melewati beberapa bug tetapi tidak dapat memahami bagaimana meresponsnya dan bagaimana mulai memperbaikinya. Saya tidak mengerti apa-apa.

Bisakah Anda jelaskan bagaimana cara mendekati ini? Saya bahkan telah menelusuri beberapa file dalam kode sumber yang saya unduh tetapi tidak mengerti apa-apa.

suryak
sumber
2
Anda harus menulis ke pengelola 7-zip dan memintanya ...
Federico klez Culloca
+1: Anda telah menjadikan diri Anda tantangan yang luar biasa. Di luar sekolah, banyak pemrograman melibatkan bekerja dalam kode yang ditulis orang lain untuk menambah fitur atau memperbaiki bug. Anda juga dapat belajar banyak dengan melihat bagaimana programmer lain melakukan sesuatu.
Bob Murphy
@suryak: Dalam kode sumber 7-Zip, hanya algoritma kompresi inti yang ditulis dalam C. Segala sesuatu yang lain ditulis dalam C ++.
rwong

Jawaban:

9

Berikut ini satu saran:
Permintaan Fitur: gunakan "pindahkan" daripada "salin" dari folder temp - ID: 1615140

Bisakah Anda mengubah perilaku 7-zip untuk menggunakan "pindah" daripada "salin" ketika 7-zip membuka ritsleting file. Masalahnya adalah dengan sistem HDD tunggal dan file besar, ini akan mempercepat banyak hal. WinRAR melakukannya sekarang.

Dan saya akan menjelaskan mengapa saya memilih bug ini sebagai contoh.

Sebelum Anda memutuskan untuk memilih proyek ini ...

  • Apakah Anda merasa nyaman dengan kode sumber proyek ini?
    • Bisakah Anda memahami kedua kode C (terutama algoritma kompresi inti)?
    • Dan juga kode C ++ (sebagian besar "aplikasi", GUI dan baris perintah, dan juga semua interaksi dengan sistem operasi)?
    • Dan juga gaya pengkodean (khas untuk pemrograman Win32; tidak menggunakan MFC / ATL)?
  • Apakah Anda akan menginvestasikan waktu dan upaya Anda ke dalam Sistem Operasi ini?

Langkah pertama: dapatkah Anda mereproduksi bug?

  • Untuk memilih bug untuk dikerjakan, seseorang harus dapat mereproduksi masalah pada lingkungan komputer yang sama.
    • Bug ini akan mengharuskan Anda untuk menguji pada komputer yang (1) tempfolder tersebut memiliki ruang kosong rendah (1-2 GB), (2) tujuan ekstraksi berada pada drive yang sama dengan tempfolder.
  • Berapa banyak waktu yang dibutuhkan untuk "mengatur" lingkungan untuk mereproduksinya?
    • Pilih bug yang mudah direproduksi dan mudah diperbaiki.
  • Apakah bug itu benar-benar bug?
    • Selalu berusaha mereproduksi sendiri. Jangan hanya mengandalkan kata-kata orang lain.
    • Sebagai seorang insinyur / programmer perangkat lunak, lihat apakah Anda dapat menjelaskan perilaku bug dalam pengertian Anda. Terkadang pengguna memiliki harapan yang tidak realistis tentang cara kerja perangkat lunak / sistem perangkat keras dan membuat permintaan fitur yang tidak mungkin.
  • Bagaimana saya mengkonfirmasi pemahaman saya? Bagaimana saya tahu kalau itu menyalin atau memindahkan file?
    • Anda akan memerlukan alat diagnostik, seperti Process Monitor . Anda juga dapat mengubah pengaturan mesin uji untuk menguji berbagai skenario.

Langkah kedua: Dapatkah Anda menemukan kode yang bertanggung jawab atas perilaku ini?

  • Pemahaman menyeluruh yang kasar tentang proyek tersebut diperlukan, menurut jawaban Larry Coleman .
  • Cara terbaik adalah jika Anda memiliki Visual Studio (lingkungan pengembangan terintegrasi dan debugger) sehingga Anda dapat mengatur breakpoints dan memahami aliran program.

Langkah ketiga: Buat modifikasi dan lihat bagaimana itu memengaruhi perilaku program.

Langkah keempat: Sampaikan perubahan Anda kepada rekan kerja / pengembang sebaya dan dapatkan umpan balik.

rwong
sumber
3

Memperbaiki bug mungkin bukan hal yang paling mudah. Lebih mudah daripada menambahkan fitur baru tentunya. Tetapi yang lebih mudah adalah memperbarui dokumentasi atau menguji rilis baru. Kedua hal ini akan membuat Anda menjadi lebih terbiasa dengan kode sehingga Anda bisa cukup tahu untuk memperbaiki bug. Ini juga memberi pembelajaran tentang kode tujuan yang membantu orang lain.

Jeanne Boyarsky
sumber
3

Menurut pendapat saya, hal yang sangat penting bahwa banyak orang yang memiliki ambisi untuk berkontribusi pada open source yang diabaikan orang, adalah komunikasi dengan pengembang lain pada proyek open source.

Jika Anda ingin berkontribusi pada proyek sumber terbuka, hal pertama yang harus Anda lakukan adalah mengikuti apa yang terjadi di proyek. Jika ada milis, forum, Grup Google atau cara lain di mana pengembang berkomunikasi, bergabunglah di sana. Cari tahu kontribusi apa yang paling dibutuhkan. Ajukan pertanyaan tentang cara kerja perangkat lunak, dll.

Jika Anda hanya mengunduh kode sumbernya, cobalah memahaminya sendiri maka akan menghabiskan banyak waktu. Jika Anda memperbaiki sesuatu atau menambahkan fitur baru dan kemudian tiba-tiba menyajikannya, kecil kemungkinannya akan diterima.

Jadi, bicarakan dengan pengembang lain, cari tahu apa bug prioritas tertinggi atau fitur yang hilang, dll.

Jesper
sumber
2

Saya bahkan telah menelusuri beberapa file dalam kode sumber yang saya unduh tetapi tidak mengerti apa-apa.

Ini adalah bug pertama yang harus Anda perbaiki. Anda perlu memahami basis kode sebelum Anda mulai memperbaiki bug. Kalau tidak, bagaimana Anda akan tahu jika perbaikan Anda akan merusak hal lain?

Ada beberapa metode untuk mengenal kode dalam proyek yang Anda ikuti. Metode favorit saya adalah membaca semua kode satu kali, lalu kembali dan melihat bagian yang lebih detail.

Larry Coleman
sumber