Bagaimana saya harus berkontribusi pada proyek GitHub (kebanyakan) yang ditinggalkan?

43

Saya baru-baru ini mencoba untuk masuk ke kolaborasi open source di GitHub dan telah mengalami situasi di mana saya ingin tahu apa cara yang disukai untuk melanjutkan.

Sekitar sebulan yang lalu, saya menemukan proyek di GitHub untuk perpustakaan yang sudah saya gunakan untuk sementara waktu dan di mana saya telah menemukan (dan memperbaiki) beberapa bug.

Sebagai perintis awal ke kolaborasi GitHub, saya menemukan repo yang tampaknya memiliki volume aktivitas terbaru, memperbaiki satu bug, menambahkan tes unit, mendorong ke GitHub, dan membuat permintaan tarik. Dalam beberapa jam, pengelola repo yang saya gali telah menerima PR dan menggabungkan beberapa PR lainnya dari orang lain yang telah menunggu juga.

Didorong oleh ini, saya memperbaiki tiga bug lagi yang saya temukan, masing-masing di cabang terpisah dari repo saya sendiri, dan mengajukan masalah dan menarik permintaan untuk masing-masing secara terpisah.

Itu hanya lebih dari sebulan yang lalu, dan permintaan tarik telah duduk di sana, tak tersentuh, sejak itu. Pengguna yang repo yang saya garpu tidak tampak sangat aktif, hanya membuat 7 kontribusi total pada GitHub dalam satu tahun terakhir, dan repo itu tidak memiliki komitmen sejak permintaan tarik pertama yang saya buat.

Jadi pertanyaan saya:

Bagaimana seseorang melanjutkan dalam situasi ini? Idealnya, saya ingin menghindari membuat fragmentasi perpustakaan dengan mematikan dan membuat sejumlah besar perubahan pada repo saya sendiri yang tidak digabungkan ke repo induk. Meskipun demikian, saya ingin terus membuat perbaikan bug dan menambahkan fitur, tetapi jika saya menggabungkan semuanya ke cabang master saya dan mendasarkan semua perbaikan baru dari cabang itu, maka jika pengelola repo yang saya garpu pernah kembali, saya menang dapat memecah semua perubahan menjadi permintaan tarikan terpisah untuk setiap perbaikan fitur / bug (saya telah membaca bahwa permintaan tarikan umumnya harus menjadi satu permintaan tarikan per fitur atau perbaikan bug).

Haruskah saya menjaga satu cabang yang sejalan dengan repo asli, mendasarkan semua cabang baru saya dari yang itu, dan kemudian menjaga semua komit digabung dalam cabang master saya? Sepertinya itu akan meninggalkan saya dengan satu ton cabang dan tugas yang semakin membebani setiap kali saya perlu menggabungkan perubahan baru ke dalam cabang master saya.

Apa cara khas seseorang mendekati situasi seperti ini? Tampaknya cukup umum bahwa suatu proyek hanya akan ditinggalkan dengan kontributor asli tidak ada untuk meninjau permintaan tarik baru. Apakah ini situasi di mana seseorang harus mengambil alih kemudi dan menjalankannya? Sepertinya itu akan membuat fragmentasi jika kontributor asli pernah kembali dan ingin mengerjakan proyek lagi.

JLRishe
sumber
4
Ketika Anda menemukan pertanyaan ini menarik, Anda mungkin juga tertarik pada proposal untuk situs stackexchange open source baru .
Philipp
Mau berbagi apa yang keluar dari percakapan email hanya untuk kita yang penasaran? :)
winkbrace
@winkbrace Sejauh ini, tidak ada. Saya belum menerima tanggapan, tetapi saya hanya mengirim e-mail dua hari yang lalu. Saya akan memberitahu Anda semua jika sesuatu berkembang.
JLRishe

Jawaban:

39

Saya belum mengalami situasi ini, tetapi itulah yang akan saya coba:

Coba hubungi pemiliknya

Mungkin mereka benar-benar kehilangan minat, tetapi bersedia untuk mentransfer proyek ke orang lain, khususnya seseorang yang sudah menunjukkan komitmen penuh perhatian.

Tetapi mungkin mereka hanya sibuk dengan hal lain (pekerjaan, liburan, sakit, proyek lain) dan tidak punya waktu untuk menangani PR Anda, tetapi rencanakan untuk melakukannya nanti.

Atau mungkin mereka benar-benar berhenti mengerjakan proyek secara permanen untuk alasan apa pun.

Tanpa bertanya, Anda tidak akan mengetahuinya.

Hubungi komunitas

Tentunya ada orang lain yang telah berkontribusi, atau setidaknya menggunakan proyek. Periksa siapa yang telah memotong proyek (bahkan jika mereka belum membuat perubahan, mereka mungkin masih tertarik melihat proyek ini berkembang); periksa siapa yang telah melaporkan masalah, atau mengomentarinya. Mungkin ada juga komunitas di luar GitHub, misalnya milis, forum, atau anggota StackOverflow.

Saya akhirnya Anda benar-benar mengambil alih proyek, Anda mungkin ingin dukungan mereka. Dan mereka perlu tahu di mana repositori master yang baru.

Terus buat permintaan tarik yang bagus

Ini menunjukkan kepada pemilik dan komunitas bahwa Anda serius tentang hal itu, dan biarkan mereka menilai kontribusi Anda.

Oefe
sumber
1
Terima kasih. Setelah sedikit pencarian, sepertinya saran ini mirip dengan panduan yang tersedia untuk situasi seperti ini dengan paket npm . Saya baru saja mengirim surel kepada pemiliknya dan akan melihat apa yang dia balas.
JLRishe
Sangat sulit untuk menemukan seseorang dengan kemampuan untuk menyetujui PRs untuk repo tertentu ketika "pemilik" repo sebenarnya adalah organisasi dengan puluhan pengguna.
cowlinator
15

Jika pemilik repo asli tidak ditemukan di mana pun dan absen dalam jumlah besar, saya akan menerbitkan repositori saya sendiri sebagai versi proyek yang berbeda.

Dengan ini, Anda mengambil alih memimpin pengembangan perpustakaan, dan jangan biarkan mati di sudut tanpa diperbarui lagi. Jika pemilik asli pernah menutup repo, dunia masih dapat menggunakan versi bercabang.

cllamach
sumber
1
Ya, cukup forkproyek dan di README.md, tinggalkan referensi dan "terima kasih" kepada pemilik asli.
Jared Burrows
Terima kasih atas jawaban Anda (+1). Anda pasti membuat beberapa poin bagus. Saya mungkin akhirnya menggunakan ini, tetapi untuk sekarang, saya akan mengikuti saran oefe dan melihat apakah saya dapat menghubungi pemilik repo melalui email.
JLRishe
Tentu saja, jangan biarkan repositori terlupakan. Banyak kode bagus harus disembunyikan di suatu tempat jauh di dalam Github karena pemilik aslinya tidak ada lagi.
cllamach
Saya berada dalam situasi yang sama dan mungkin perlu mengambil opsi ini - pemilik asli proyek belum menanggapi upaya kontak yang berulang. Apakah halal untuk menjaga nama proyek dan terus menambah nomor versi dari versi resmi terakhir? Saya khawatir jika saya mengubah nama, akan lebih sulit bagi pengguna proyek yang ada untuk menemukannya.
pericynthion
1
Saya mungkin berada dalam situasi itu juga. Tetapi proyek asli sudah terdaftar di Bower. Menjaga nama berarti harus membuat penulis asli membatalkan pendaftarannya untuk Anda, atau menghubungi pengelola Bower dan meminta mereka untuk campur tangan. Saya tidak terlalu peduli untuk melakukan yang terakhir. Mengganti nama mungkin pilihan terbaik.
Lawrence I. Siden
0

Karena kebanyakan proyek Free dan Open Source ukuran kecil hingga menengah saat ini di-host di github, gitlab atau sejenisnya, akan dimungkinkan untuk mengotomatisasi beberapa proses , menggunakan API Web mereka.

Dengan asumsi repo asli sudah ada https://github.com/someUserX/projectY/, prosesnya bisa seperti ini:

  1. ("manual") Hubungi penulis asli dengan berbagai cara, setidaknya melalui email git committer-nya dan masalah (jika diaktifkan).

    Dalam hal izin yang diterima atau tidak ada respons dalam beberapa minggu, orang dapat menjalankan skrip yang akan menggunakan API Web host untuk melakukan langkah-langkah seperti ini:

  2. buat organisasi baru (GitHub) bernama projectY, dan di dalamnya garpu repo asli ->https://github.com/projectY/projectY/

  3. tambahkan penulis asli dan semua penulis permintaan tarik (sudah digabung dan masih terbuka) sebagai administrator organisasi
  4. buat kembali semua (tarik) permintaan tarik dari repo asli di garpu baru
  5. lakukan hal yang sama dengan masalah (terbuka)
  6. memberi tahu semua admin dari repo baru
  7. buat permintaan tarik terakhir ke repo lama, tambahkan pemberitahuan "terbengkalai" / "diarsipkan" dan tautan ke repo baru di atas README
hoijui
sumber
Masalah utama yang saya lihat dengan pendekatan ini, adalah bahwa beberapa kontributor "buruk" mungkin mendapatkan akses admin, tetapi seperti yang dijelaskan oleh penginjil Perangkat Lunak Bebas Pieter Hintjens (misalnya dalam ceramah ini) , komitmen buruk dapat dengan mudah dikembalikan, dan tidak ada utas untuk sebuah proyek yang hidup, dan dapat membantu pengendara yang buruk untuk menjadi yang baik, seiring waktu.
hoijui