İlk çekirdek katkım çalındı
(ariel-miculas.github.io)- Ariel Miculas, PowerPC32'de gdbserver çok iş parçacıklı hata ayıklamasının bozulduğu sorunu izlerken Linux çekirdeğinde bir bellek bozulması hatası buldu, ancak nihai düzeltme bakımcının ayrı bir yamasıyla alındı ve kendisi yalnızca
Reported-bykredisi aldı - İpuçları, aynı belirtiyi ele alan eski bir posta dizisi ile
task_structiçindekithread_struct threadkonumunu değiştiren commit'ten geldi; bazı iş parçacıkları yanlış süreç durumunda kalıyor ve bunun sonucunda gdbserver denetimi kaybediyordu - Kök neden analizinde
pahole, ftrace ve PowerPC DABR tabanlı donanım kesme noktaları kullanıldı;ptrace_put_fpriçindeki tampon taşmasınıntask_struct.__stategibi alanların üzerine yazdığı doğrulandı - Taşma, 32 bit öğeler için olan bir indeksin 64 bitlik bir diziye uygulanmasından kaynaklandı ve kullanıcı tarafındaki gdbserver'ın yalnızca 32 öğelik
fp_state.fprdizisinin sonrasına en fazla 256 bayt yazabildiği bir durum oluştu - PowerPC bakımcısı Michael Ellerman kendi düzeltmesini uyguladı; daha sonra gönderdiği yanıtta, yalnızca
Reported-byile kredilendirmenin katkıyı düzgün yansıtmadığını ve yamayı birlikte geliştirmeleri gerektiğini söyleyerek özür diledi
PowerPC32'de bozulan gdbserver hata ayıklaması
- Yaklaşık bir buçuk yıl önce Ariel Miculas, önceki şirketinde projenin hata ayıklama işlevini engelleyen bir sorunu araştırmak için zaman istedi
- Sorun, PowerPC32 mimarisinde gdbserver'ın çok iş parçacıklı uygulamaları düzgün biçimde hata ayıklayamamasıydı
- gdbserver bağlantısı kopuyor ve hata ayıklama oturumu artık kontrol edilemiyordu
- Nedenin toolchain, gdbserver, Linux kernel ya da özel çekirdek yamalarından hangisinde olduğu net değildi
- Mevcut araştırma ve aramaların ardından, aynı belirtiyi ele alan bir posta dizisi buldu
- Bu dizi, soruna yol açan commit'i de işaret ediyordu
- Söz konusu yama,
task_structortasında bulunanthread_struct threadtanımını sona taşıyan bir değişiklikti
İş parçacığı durumundan bellek bozulmasına uzanan ipuçları
- Holger Brunck'un önceki analizine göre gdbserver, her iş parçacığı için çekirdeğe
SIGSTOPgönderip yanıt bekliyordu; ancak hatalı durumda çekirdek yalnızca bazı sinyallere yanıt veriyordu - Daha düşük seviyede, gdbserver ile etkileşimden sonra bazı iş parçacıkları yanlış süreç durumunda kalıyor ve gdbserver daha sonra denetimi kaybediyordu
- Ariel, PowerPC ile ilgili commit açıklamalarını ve
task_structçevresindeki değişiklikleri 3-4 gün boyunca okuyarak sorunun sonraki çekirdek sürümlerinde çözülüp çözülmediğini kontrol etti, ancak bir çözüm bulamadı thread_struct threadkonumunu değiştirerek yeniden üretim koşullarını doğruladı ve pahole iletask_structyerleşimini inceledi- ftrace ile hata ayıklanan sürecin iş parçacıklarının ne zaman zamanlandığını izledi
- Durmuş iş parçacıkları, diğerlerinden farklı olarak yalnızca bir kez zamanlanıyordu
- Bu gözlem, bellek bozulması olasılığına yeniden odaklanmasını sağladı
Donanım kesme noktalarıyla bulunan gerçek neden
- x86'daki debug registers gibi, PowerPC'de de DABR register kullanılarak benzer bir işlev olduğunu doğruladı
- Linux'ta donanım kesme noktalarının nasıl kullanılacağını araştırdıktan sonra, bir Stack Overflow yanıtını temel alarak bir çekirdek modülü geliştirdi
- Bu modülle
task_struct.__statealanına donanım kesme noktası koyup bu değeri kimin yazdığını izledi - Özel çekirdek modülü,
task_struct.__stateüzerine yazan konumun yığın izini gösterdi ve bunlar arasında şüpheli yolptrace_put_fpriçindeki bir tampon taşmasına ulaştı ptrace_put_fpr, POKEUSER API'sinde kullanılıyor ve taşma__stategibitask_structiçindeki kritik alanların üzerine yazıyordu__state, süreç durumunu saklar- Çekirdek, hata ayıklayıcı tarafından durdurulan süreçleri izlerken de bu alanı kullanır
256 bayta kadar taşabilen dizi yazımı
- Taşmanın nedeni, 32 bit öğeli bir diziye yazmak için tasarlanmış indeksin 64 bit öğeli bir diziye uygulanmasıydı
- FPR'yi gösteren indeks 64'tü ve 64 bit öğe temelinde erişim aralığı
64 * 8 = 512bayttı - Gerçekte
fp_state.fprdizisinde yalnızca 32 giriş vardı ve kullanılabilir bellek32 * 8 = 256bayttı - Sonuç olarak kullanıcı, yani gdbserver, dizinin sonunu aşarak en fazla 256 bayt yazabiliyordu
Upstream gönderim ve kredi anlaşmazlığı
- Ariel, süreç durumu belleğinin üzerine yazılabilen bu bellek bozulması sorununun güvenlik etkileri olabileceğini düşünerek yamayı
security@kernel.orgadresine gönderdi- Bu posta listesi özel olduğu için ilk gönderdiği yama bağlantılanamıyordu
- PowerPC bakımcısı Michael Ellerman özel olarak iletişime geçip konuyla ilgileneceğini söyledi
- Ariel iki düzeltme yaması gönderdi
- Güvenlik posta listesine gönderdiği ilk yama
- İlk gönderime ilişkin önerileri yansıtan başka bir yama sürümü
- İkinci yama, PowerPC64 üzerinde PowerPC32 davranışını öyküleyen mevcut çekirdek koduna dayanıyordu ve bu kod FPR indekslemeyi doğru biçimde ele alıyordu
- Michael Ellerman iki yamayı da kabul etmedi ve kendi düzeltmesini uyguladı
- Ariel, bu sorunu düzeltme başarısı ve ilk çekirdek katkısı için kredi alabilmek adına kendi yamasının kabul edilmesini istiyordu; geri bildirimi yansıtıp yeni sürümler göndermeye de istekliydi
- Fakat fiilen aldığı kredi yalnızca
Reported-byetiketi oldu ve Ariel, kök neden analizi, düzeltme, test, doğrulama, şirket içi geri bildirimleri yansıtma ve güncel çekirdeğe uygulama için harcadığı çabaya kıyasla bunun adil olmadığını düşündü- Linux belgelerine göre
Reported-by, hatayı bulan ve bildiren kişiye kredi veren etikettir - Bu sorun aslında 6 yıl önce zaten bildirilmişti
- Linux belgelerine göre
Güncelleme ve özür yanıtı
- Bir Hacker News kullanıcısı, Michael Ellerman'ın “Yama için teşekkürler ama bunu farklı şekilde düzeltmek istiyorum. Aşağıdaki yamayı test edip hatanın düzelip düzelmediğini doğrulayabilir misin?” dediği e-postaya dikkat çekti
- Bu e-posta, Michael Ellerman'ın Ariel'in yamasını gözden geçirmek yerine kendi uygulamasını seçtiğini ve Ariel'den bu yamayı test etmesini istediğini gösteriyordu
- Ariel, güvenlik posta listesine gönderdiği ilk yamayı bulup linuxppc-dev'e posta dizisini iletti
- Daha sonraki güncellemede, yamaların ele alınış biçimi için gönderilmiş bir özür yanıtı da yer aldı
- “Yamanı birlikte geliştirmek için daha fazla zaman harcamalıydım” ifadesi buna dahildi
Reported-byetiketinin Ariel'in katkısını yeterince yansıtmadığı da belirtildi
1 yorum
Hacker News yorumları
Tüm yamayı kabul etmeyecek olsalar bile Ariel Miculas'a katkı payı vermek daha uygun olurdu.
Bu güvenlik sorununu o bulup bir düzeltme göndermeseydi, büyük olasılıkla kimse düzeltmeyecekti.
Michael onun yamasını okuyup yalnızca stilini biraz değiştirerek kendi adıyla gönderdiyse, katkı payı vermemek etik dışı olur; kod çok kötü olsa bile bu yine de bir iş birliğiydi, böyle bir şeye maruz kalsam tekrar birlikte çalışmak istemezdim.
İkincisinde yine de
Co-Authored-Bykalıyor; ama biri benim proje kodumu commit geçmişi olmadan kendi deposuna dump edip “fork”ladıktan sonra, katkıda bulunan kişi açısından bunun epey buruk bir deneyim olduğunu fark ettim.Kod kötü olsa bile, merge edilen refactor edilmiş düzeltme o kod olmadan var olmayacaktı ve “benim sürümüm daha iyi” demek oldukça küçümseyici hissedilebilir.
Ancak bakımcının gerçek yanıtını linkleyen cevaba bakınca son cümle geçerli değil.
Ama bu durumda yazı sahibi, o yamanın ortak yazarına daha yakın.
Akademik yayıncılık açısından bakarsak, birine preprint gönderiyorsunuz; o kişi aynı konuda makale yayımlarken sizi yalnızca teşekkür bölümüne koyuyor, ortak yazar yapmıyor. Buna benziyor.
Burada yayın değil çekirdek geliştirme söz konusu, ama yazar gösterimi profesyonel özgeçmişte hâlâ önemli.
Stil ve yapı tutarlılığı hakkında geri bildirim gerekli; ama iyi bir bakımcı, emeği teslim eden ve işlerin arka planda sorunsuz akmasını sağlayan kişidir.
O zaman Ted Tso çalışmamın doğruluğundan memnun kalınca yamayı aldı; ben de ne katkı payı istedim ne de aldım.
Benim ilgim yalnızca çekirdeği iyileştirmekti, adımı bırakmakla ilgilenmiyordum.
Birkaç yıl sonra başka bir iş nedeniyle katkıcı listesine adım girdi, ama her iki durumda da umursamadım.
Reported-by: Ariel Miculasyazıyor ve doğru görünüyor.Bakımcının yaması daha iyi.
fpidx < (PT_FPSCR - PT_FPR0)kontrolünü kaybetmiyor.putfonksiyonundafpidxaralık dışına çıktığında kullanılan*data = child->thread.fp_state.fpscr;yedek atamasını kaybetmiyor.TS_FPRWIDTH1 ise özdeşliğe indirgenen gereksizFPRINDEXmakrosundan kaçınıyor.Orijinal yama commit mesajı “PPC32'de
TS_FPRWIDTH'in 1 olduğu varsayılabilir” dediği hâldeFPRNUMBER,FPRHALF,FPRINDEXiçeriyordu.Basitçe düzeltilebilir bir dizi uyumsuzluğu buldu diye hatalı bir yamayı olduğu gibi kabul etmek gerekmiyor.
Ancak bakımcının, Miculas'ın yalnızca bildirim yapmakla kalmayıp araştırarak kök nedeni bulduğunu ve neredeyse aynı basit düzeltmenin kendi sürümünü de oluşturduğunu kabul etmesi gerekirdi.
Reported-by, ilgili kişinin kapsamlı araştırma yapıp nedeni de ortaya koyduğu nüansını taşımak için isabetli değil.Yeni katkıcılar için projelerde genellikle böyle yapılır ve doğru yöntem budur.
Bu, insanları öğretme ve uyumlandırma sürecidir; işi öylece yeniden yaparsanız katkı motivasyonunu kırar ve öğrenme fırsatını da ortadan kaldırırsınız.
İkinci sürümü yazmak her zaman daha kolaydır.
Buna basit bir düzeltme demek, yazılım geliştirmede hata düzeltmeye giren iş miktarını anlamamaktır.
Burada Michael da başlangıçta yeniden üretemediğini, ancak daha sonra doğruladığını kabul etmişti.
Bu, OP'nin hata ayıklama ve düzeltme için harcadığı emeği iyi gösteriyor; o emeği elinden almak doğru değil.
Asıl metinde yamalarının kabul edilip katkı payı almak ve çekirdek katkıcısı olmak istediğini, geri bildirimi yansıtıp sonraki sürümü de göndermeye istekli olduğunu söylemişti.
Bakımcı, OP'nin kodunu checkout edip istediği değişiklikleri yaptıktan sonra ortak yazar olarak commit etmek için gereken yaklaşık 2 dakikayı harcayabilirdi.
Böylece en iyi düzeltme merge edilir ve başkasının emeği de tanınmış olurdu.
Özellikle OP katkısının tanınmasını istediğini açıkça ifade ettiği için en iyi yol buydu.
Yine de bu tür depo bakımcılarının sosyal nezaketi sık sık kaçırıyor olması şaşırtıcı değil.
PR'lar birçok nedenle çoğu zaman kabul edilmez, ama umursamam.
Kodu açıkta tutmak için PR gönderiyorum; merge edilecek kadar “iyi” hâle getirmek için zaman harcamıyorum.
Olduğu gibi sunuyorum; biri yeterince beğenirse süreci o halleder.
Bazıları olduğu gibi merge edildi, bazılarını depo sahibi biraz düzelterek merge etti.
Açık kaynak kodu şan ya da popülerlik için değil, sevdiğim için yazıyorum.
80'leri ve 90'ları özlüyorum.
Linux çekirdeği bir ödül değildir; OP’ye empati duysam da topluluğun sunduğu sürümden ziyade bakımı daha kolay bir çözümü tercih etmek doğrudur.
Bu yüzden bakımcı yetki alanı içinde hareket etmişti.
Yine de düzeltmeye katkıda bulunan kişiye emeğini belirtmek çok kolaydır.
Node.js’te sürüm notlarında emeği belirtiriz; bir PR’daki çalışmanın bir kısmını alıp değiştirdiğimizde de
Co-Authored-By:eklemeye çalışırız.Uzun süre bakımcılık yapınca emeğin belirtilmesi sizin için daha az önemli hâle gelebilir; bu yüzden yeni katkıda bulunanlar için bunun çok önemli olduğunu unutmak kolaydır.
Bu vakada olduğu gibi emeğin paylaşılması OP için önemliydi ve hak edilmişti; bu konuda daha özenli olunmaması hem OP hem de Linux’un ilgili alanı için bir kayıptır.
Topluluk emeğine dayanan bir projenin sürdürülebilir yolu bu değildir.
Linux çekirdeği kadar büyük ve saygı duyulan bir projede hem projenin en iyisini gözetebilen hem de yeni katkıda bulunanlara saygı gösterebilen insanlar olduğunu düşünürdüm.
Kimse sırf yeni katkıda bulunan biri diye en iyi olmayan bir çözümü kabul edelim demeyecektir.
Doğru yol yamayı incelemek, neyin neden sorun olduğunu açıklamak, nasıl yeniden yazılmasının iyi olacağını önermek ve gerekirse o kısmı birlikte yazarak ortak yazar olmaktır.
Ancak böylece gelecekte de ilgi duyan katkıcıların akışı oluşur.
Reported-Byetiketiyle kredi verilmiş.Çekirdek belgelerinde etiket teamüllerinden biri olarak
Suggested-bytanımlanmış.Suggested-by:etiketi, yama fikrinin o kişi tarafından önerildiğini gösterir ve o fikrin emeğinin belirtilmesini güvence altına alır.Özellikle fikir herkese açık bir forumda yayımlanmadıysa, öneren kişinin izni olmadan eklenmemesi gerektiği belirtiliyor.
Fikri bildiren kişilere dürüstçe kredi verilirse, ileride tekrar yardımcı olma olasılıklarının artacağı da yazıyor.
Bu durumda
Suggested-bydaha uygun olabilirdi.Sorunun çözümünü bulduğunu, ancak projeye aşina olmadığı için yamanın tam söz diziminin korunmadığını daha iyi ifade ederdi.
Referans: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/lin...
Birinde
ifdışındakiifdefiçinde, diğerinde ise içtekiififadesinde yer alması dışında bir fark yok; bunun teknik bir fark değil, stil farkı olduğu söyleniyor.Eğer öyleyse yazar, yalnızca yama fikrini “önermekten” çok daha fazlasını yapmış.
Sorunu debug etmiş ve tüm yamayı yazmış; küçük bir değişiklikle kabul edilmiş sayılır.
1: https://news.ycombinator.com/item?id=37672558
Güvenlik sorunlarında hız ve doğruluk biçimden daha önemlidir; çekirdek bakımcıları
Reported-byile kredi vererek doğru şekilde hareket etmiş.Suggested-bybiraz daha iyi olurdu ama OP’nin istediği bu değil; OP çok küçük bir yamaya dayanarak “çekirdek katkıcısı” etiketi istiyor gibi görünüyor.Bu başlıktaki bazı tepkilere bakınca, bazı kişilerin özellikle junior ya da orta seviye geliştiricileri yönetmemesini umuyorum.
Ekibinizde hevesli bir junior varsa ve bir soruna yardımcı olan ama kalitesi yetersiz bir PR açtıysa, “yeterince iyi değil” diye azarlayıp kodu çöpe attıktan sonra kendiniz yeniden yazmak verilebilecek en kötü tepkidir.
Morali bozar, hem onun hem kendi zamanınızı boşa harcar, hiçbir şey öğrenmesini engeller; bir dahaki sefere iyileştirme yapmasını ya da anlamlı katkıda bulunmasını zorlaştırır, yardım istemekten veya gönüllü katkı vermekten de soğutur.
Karmaşık bir kod alanına dalmış olsa bile, daha iyi etkileşim yolları vardır.
Ekipteki junior’ın bir süre kalacağı beklentisi vardır; mülakatla temel yetkinlikleri de bir ölçüde doğrulanmıştır, bu yüzden gelişme potansiyeline güvenebilirsiniz.
İnternetteki rastgele bir kişinin kalma yükümlülüğü yoktur ve bu tür “drive-by” düzeltmelerin çoğu kalıcı olmaz.
O kişinin gerçekte ne becerilere sahip olduğunu, düzeltme taleplerine nasıl tepki vereceğini de bilmezsiniz.
Yönetim açısından en sinir bozucu şeylerden biri, birinin rastgele bir kişiyi benim raporlama hattıma koyup onun performansından beni sorumlu kılmasıdır.
Şimdi internette hak sahibi tavırlar içindeki birinin birkaç gününü harcayıp düşük seviyeli bir düzeltme yaptığını ve benim de onun yöneticisiymişim gibi koçluk yapmam gerektiğini hayal edersek, bu benzetme hiç tutmuyor.
Eskiden GitHub’da proje barındırınca istenmeyen PR’lar yüzünden neden bu kadar yaygara koptuğunu merak ederdim; artık anlıyorum.
Rastgele PR’larla uğraşmak istemediğinizde “morali bozan, zamanını boşa harcatan kötü yönetici” diye suçlanmanız aşırı bir hak sahipliği duygusu.
Örnek: https://news.ycombinator.com/item?id=25940799
Profesyonel olmak, kendinizi yaptığınız işten ayırmayı ve iş arkadaşınızın sizi baltalamak için kötü niyetli bir plan içinde olmadığını öğrenmeyi de içerir.
Herkesin aylarca çalıştığı bir projenin iptal edildiği, kod incelemesinde sert yorumlar aldığı olmuştur.
Bunları kabul edip öğrenmek profesyonel olmanın bir parçasıdır.
Elbette doğrudan ve kaba insanlar da bu tavrın birçok ilişkiyi bozduğunu öğrenmelidir.
Biz sanatçı değil, profesyoneliz.
Junior bir inşaat mühendisi yapısal kusuru olan bir köprü tasarlasa ve kıdemli kişi “Üzgünüm ama bunu artık kurtarmak zor, her şeyi baştan yapmam gerekecek” dese, kıdemlinin yaptığı sorunlu olmaz.
Junior’ın gururunu korumak için güvensiz bir köprüden geçmek istemem.
Büyük açık kaynak projeleri sürdürme deneyimi pek olmayan yorumlar, bakımcıyı özellikle sert görüyormuş gibi.
Küçük bir açık kaynak projeyi sürdürünce, rastgele birinin PR’ını kabul etmenin çok iş olduğunu ve çoğu zaman kendiniz yapmaktan daha fazla zaman aldığını görürsünüz.
Kodu dikkatle incelemek, katkıda bulunan kişiyle iletişim kurup sorunları düzeltmek, beklenen kalite ve teamüllere uydurmak çok zaman alır.
İş yerindeki junior zaten mülakattan geçmiştir; burada ise rastgele bir yabancı değişiklik istiyor.
PR reddedilince üzülmek normal, ama iki tarafın bakış açısını da anlıyorum.
Bakımcının konuşmalarına bakınca özellikle kötü niyetli ya da kaba görünmüyor.
Neredeyse LKML’nin kötü başlıklarından biri gibi hissettiriyor.
O kişi kelimenin tam anlamıyla işin %95’ini yapmış, ama emeğinin tanınmasını istediği için eleştiriliyor.
Bunun neden yapıldığını hiç anlamıyorum.
İki yamayı karşılaştırınca belirgin bir fark görülüyor.
Bağlantısı verilen yazıdaki katkı
if...elseifadesinin iki dalındaki davranışı da değiştiriyor; nihai katkı ise yalnızcaifdalı içindeki yolu değiştiriyor.Bakımcının kodu değiştirmesinin bir nedeni olmalı.
Yine de gerçek düzeltme neredeyse %100 kopyalandığı için, özgün yama yazarına emeğinin karşılığını vermek uygun olurdu.
Özgün sonuçta PPC32 mimarisinde
flush_fp_to_threadde yok,elsekoşulu da yok.Nihai yama
flush_fp_to_thread(child);çağırıyor,fpidxaralık kontrolü içindeCONFIG_PPC32olup olmamasına göre işlem yapıyor, aralık dışındaysafpscratıyor.Bu yüzden iki çözüm arasında gerçek bir fark var.
Hangisinin doğru ya da daha iyi olduğunu söyleyemem, ama sonuçların farklı olduğu kesin.
Bu, C konusundaki acemiliğe işaret ediyor olabilir.
Büyük kod tabanı bakımı yarı yarıya yangın söndürmek, yarı yarıya da isim çakışmalarından kaçınmaktır.
O yama epey farklıydı; keşke gösterebilmek için bir yere kaydetseydim.
Bu, kernel katkılarının olağan bir parçası
Sorunu en kısa ve net şekilde aktarmanın yolu çoğu zaman bir patch olduğu için patch gönderilir; beklenti de onların o patch’i kullanmayacağı yönünde olmalı
Aklıma gelenlerden bile bunun bana en az üç kez [1][2][3] olduğunu hatırlıyorum
Açıkçası buna kızmayı hiç düşünmedim; çünkü asıl hedefim bug’ı düzeltmekti ve bunun gerçekleşmesine sevindim
OP’ye içten tavsiyem, bu blog yazısını silmesi olur. İleride pişman olacak
[1] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/lin...
[2] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/lin...
[3] https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/lin...
Diğer kişinin adını görünce epey şaşırdım
Açık kaynak projelerde bu sürekli oluyor ve sonuçta insanın daha fazla katkı yapma isteğini kırıyor
Geçen yıl yıllardır açık duran bir issue’yu üstlendim, PR hazırladım, test kodlarını da düzelttim; ayrıca build sorununu düzelten ayrı bir iş de yaptım
Bakımcı yalnızca build sorununu düzelten PR’ı aldı, asıl issue’yu ise düpedüz görmezden geldi
O projeye yeniden zaman ayırıp katkıda bulunma ihtimalim kesinlikle yok
PR açıyorsun, değişiklik isteyen yorumlar alıyorsun
Birkaç gün sonra vakit bulup düzeltmeye çalıştığında, düzenli katkı yapan birinin açtığı başka bir PR ile çoktan kapatılmış oluyor
O PR’a bakınca kodunun neredeyse aynısı olduğunu, sadece bir değişken adının değiştiğini ve “arkadaş” review standardıyla hemen onaylandığını görüyorsun
O kişinin profiline bakınca katkılarının neredeyse tamamının başkalarının kodunu kopyalamaktan ibaret olduğu görülüyor
Kod tabanının geri kalanına uyacak şekilde toparlamalarına yardımcı olmaya çalışıyorum; en zor kısım da bu
Çünkü çoğu geliştirici önce proje geleneklerini öğrenmek yerine, düzelttiği şeyi doğrudan içeri sokmak istiyor
Yine de kod kabaca doğruysa ve merge’den sonra benim 15 dakika kadar rötuş yapıp biraz daha test eklemem yeterli olacaksa kabul ediyorum
Bu vakada da durum buna benziyor; bakımcı böyle yapmalıydı
Katkı sahibi emeğinin karşılığını alır, bakımcı da upstream’e kabul edilecek hale gelmesi için gereken temizliği birkaç dakikada yapar ve herkes mutlu olurdu
“Benim sürümüm daha iyi” demek, gerçekten daha iyi olsun ya da olmasın, çok kibirli ve profesyonellik dışı
Issue ilk bildirildikten sonra 6 yıl boyunca düzeltemediysen, o kişinin katkısı olmasaydı senin düzeltmenin de olmayacağını kabul etmelisin
“Çözümü” gördükten sonra o düzeltmeyi almak fiilen hırsızlığa yakın
İnsanlar kodları kabul edilmeyince ya da yeniden yazılınca bunu kişisel algılıyor, ama bir projeyi yürütürken kod yazmanın işin küçük bir kısmı olduğunu kaçırıyorlar
Ben genelde bug raporlarına ve merge request’lere bakıp patch’in nasıl ele alınacağını kestirmeye çalışırım
Katkı yapmaya uygun görünmeyen projelerde pek çok bug düzeltmesinden vazgeçtim; 2003’teki Linux kernel de buna bir örnekti
Bazı projeler zaten böyle; bulaşmamak daha iyi ve çoğu zaman zaman kaybı oluyor
Artık yapay zeka devriminden sonra açık kaynak lisansları geniş çapta ihlal edildiği için, o zamandan beri açık kaynak kod göndermedim ve bundan sonra da göndermeyeceğim
Buradaki toksikliği gerçekten anlamakta zorlanıyorum
“Bunu takdir, yıldız, ödül, özgeçmiş gibi şeyler için yapmamalısın” türü sözler kulağa delice geliyor
Bunu söyleyen insanların işi var mı? Varsa tutarlı olmak için tamamen ücretsiz çalışmaları gerekir
Maaş da katkı için bir takdir biçimidir
Şahsen nihai çözüm önerilenden farklılaşmış olsa bile, asıl çözümün keşfine dayanıyorsa ortak yazar eklemek çok küçük bir şey
Yazarın bu konuda şikâyet etmek için geçerli nedeni var; birinin katkısının takdir edilmediğini hissetmesi de ne ilk ne son olacak
Patch’in kendisi daha zayıf olsa bile, debugging emeği kesinlikle öyle değildi
İstihdamda işveren ile çalışan, bir karşılık uğruna iş yapılacağı konusunda anlaşır
Haber vermeden bir şirkete girip kimsenin istemediği bir işi yapmaya başlasan, çok az kişi karşılık alma hakkın olduğunu savunur
OP’nin başına gelenlere daha doğru benzetme bu
“Kusura bakma ama benim sürümüm daha iyi. Linux kernel katkıcısı olmak istiyorsan burada düzeltebileceğin bir issue var” tarzı bir yanıt, birinin bir daha yardım etmemesini sağlamak ve başkalarının da hevesini kırmak için harika bir yöntemdir
Bakımcı,
gdbserverile çöküşü yeniden üretemediğini, ancak hatayı gösteren bir test case olduğu için bunu doğrulayıp düzeltmeyi test ettiğini söyledi ve “Patch için teşekkürler ama bunu farklı şekilde düzeltmek istedim. Aşağıdaki patch’i deneyip hatanın düzelip düzelmediğini kontrol edebilir misin?” diye yazdıhttps://lists.ozlabs.org/pipermail/linuxppc-dev/2022-June/24...
Ayrıca bahsedilmeyen başka review yorumları da vardı
Yalnızca PPC32 için olan makronun ne gibi bir faydası olduğunu bilmediği,
#ifdef’den mümkün olduğunca kaçınılması gerektiği ve Michael’ın patch’inin daha anlaşılır olduğu yönündeydihttps://lists.ozlabs.org/pipermail/linuxppc-dev/2022-June/24...
OP, karşı tarafın ağzına laf koyup buna kızıyor; özellikle metin tabanlı iletişimde bu iyi bir strateji değil
OP konuşmayı kaba geçmiş gibi göstermeye çalışıyor, ama aslında öyle değildi