tl; dr - Büyük liglere adım atmanın zamanı geldi. Bir tür domuzun üzerine ruj sürmek onu daha güzel yapmaz, eğer böyle bir şeye girmedikçe ...
İnsanlar sorunu
İlk mesele işlem senkronizasyonudur. Aynı kod üzerinde aynı anda çalışan birden fazla kişiniz varsa, sorunları önlemek için yalnızca bir kurala ihtiyacınız vardır:
Rule 1: Always pull before you merge/rebase
DVCS söz konusu olduğunda, uzak bir dalda (yani ana depoda) değişiklik yapmak zordur ve yerelde değişiklik yapmak çok kolaydır. Her kişi kendi kod eklemelerini sorunsuz bir şekilde bütünün içine sokmaktan sorumludur. 2 kişi aynı anda taahhütte bulunmadıkça, tecrübe etmemelisiniz. Menşe / uzak ana sunucuya erişim taahhüdü yalnızca birkaç geliştirici ile sınırlı olmalı ve uzaktan izleme şubeleri aracılığıyla diğer geliştiricilerden değişiklikler almalıdır.
Kod sorunu
Yaptığınız değişikliklerin kodu bozmadığını nasıl anlarsınız?
Basit cevap ... Yapmadıklarını kanıtlamak için testler yazın. TDD (Test Odaklı Tasarım) düşünce okulunu göz ardı ederseniz, tüm testler kodu kırmadan değiştirmenize olanak tanıyan bir doğrulama düzeyi eklemektir.
Rule 2: Don't make assumptions, write proofs (ie tests).
Buna ek olarak, başlangıç / uzak ana öğeye geçmeden önce tüm test gamı çalıştırılmalıdır.
Taahhütlerinizi mümkün olduğunca küçük ve kısa tutun. Bu şekilde, daha sonra bir şeyi bozan bir değişikliği geri almanız gerekirse, kodu kırmayan parçaları yeniden uygulamak zorunda kalmazsınız.
Öncelikle bazı organizasyonel yeniden yapılanmalara ihtiyacınız olabilir
Yukarıdaki çözümler kolayca uygulanamıyorsa, büyük olasılıkla öncelikle geliştirme yapısında ele alınması gereken bazı sorunlar vardır.
Projenin sahibi kapıcı olmalıdır. Kesintisiz senkronizasyon sorunları varsa, muhtemelen kesin erişime sahip çok fazla kişi vardır. Linux çekirdeği gibi devasa projelerde bile, yalnızca bir avuç geliştirici başlangıç / uzak ana veri havuzuna erişim taahhüdüne sahiptir. Taahhütleri yönetmek için aslında çoklu düzeylerde depolar vardır. Hiyerarşik model, projeye dahil edilmeden önce değişiklikleri çeken ve kalitesini doğrulayan ağ geçidi denetleyicilerine sahiptir. Hiyerarşik taahhüt modeli, kaliteden ödün vermeden tek katmanlı modelden çok daha büyük ve daha etkili ölçeklenebilir.
Erişimini taahhüt alamadım devs için, kendi uzaktan izleme dalları oluşturmak için öğrenmelidir (budala ve gitorious bunun için iyidir) devs böylece yapmak kolayca indirebiliriz erişimi taahhüt ediyorum / menşe içine şubeleri entegre. Değişiklikler küçükse, yamalar da aynı şekilde çalışır.
Birleştirme / rebase yapmadan önce değişiklikleri çekme yeteneği, yerel ana dalınızda gelişmediğinizi varsayar. Bunu idare etmenin kolay yolu, kodlamaya başlamadan önce bir ilk çekme işlemi yapmak ve daha sonra bu daldaki tüm çalışmalarınızı yapmaktır. Zor yol, birleştirmeden hemen önce dallamak ve ustayı geri almaktır.
Genel olarak proje için kodlama stilini tanımlayın ve geliştiricilerin onu takip etmesini sağlayın. Katkıda bulunan geliştiriciler, temizliği en aza indirmek için projenin standartlarına / normlarına uygun kod yazmalıdır. Kodlama stili açık bir projede büyük bir ego engeli olabilir. Herhangi bir standart belirlenmezse, herkes kendi tercih ettiği tarzda kodlama yapar ve kod tabanı çok çirkinleşir.
"Efsanevi Adam Ayı" efsanesi
İster inanın ister inanmayın, daha büyük / daha başarılı açık kaynak projeleri demokrasi gibi yürütülmez. Hiyerarşi olarak işletilirler. Bir projenin 8-10 geliştiricinin ötesinde etkili bir şekilde büyüyemeyeceğini söylemek naiftir. Bu doğru olsaydı, Linux Çekirdeği gibi mega projeler olmazdı. Daha derin olan konu, herkese erişim izni vermenin etkili iletişimi ele almayı çok zorlaştırmasıdır.
Efsanevi adam ayının sorunu aslında aşılabilir. Projenizi ordu gibi yürütmeniz gerekiyor. Hiyerarşide birçok seviye vardır, çünkü bireysel insanların sadece bir avuç insanla iletişimi yönetmede gerçekten etkili olduğu yaygın bir bilgidir. Hiçbir kişi 5-7'den fazla kişinin çalışmasını yönetmekten sorumlu olmadığı sürece, sistem süresiz olarak ölçeklenebilir.
En iyi / deneyimli geliştiricileri daha fazla entegrasyon ve daha üst düzey tasarım / planlama yapmakla sınırlayabilir, ancak bu kötü bir şey değildir. Ölçeklendirmenin bir parçası, projenin uzun vadeli bir plana ihtiyacı olduğuna karar vermek için harekete geçiyor. Gelecekteki projelerde en yüksek yatırıma (zaman aynı zamanda bir kaynaktır) sahip olan insanlar, büyük kararlar almakla görevlendirilmelidir.
Artan acılardan geçen açık kaynaklı bir projeyi duymak güzel. Tebrikler ve iyi şanslar.