Açık kaynak projeleri, tasarımları veya mimarileri hakkında dokümantasyon olmadan nasıl başarılı olabilir?


11

Ünlü açık kaynaklı projeleri inceleyerek programlama becerilerimi geliştirmek istiyorum, ancak kaynak kodlarına atlayarak kaybolmanın kolay olduğunu düşünüyorum.

Bu yüzden önce kodlarının organizasyonu hakkında genel bir fikir edinmek için tasarımları veya mimarileri (UML diyagramları gibi) hakkındaki belgelerini okumaya karar verdim. Ancak, sürpriz olarak, Hibernate, Spring, ASP.NET MVC, Rails, vb. Gibi büyük açık kaynaklı projeler için herhangi bir mimari belge bulamıyorum.

Bu yüzden merak etmeye başladım: Yeni gelen geliştiricilerin okuyacak mimari / tasarım belgeleri yoksa veya proje yöneticisi kaynak kodunu yeni açtı ancak belgelerini kapattıysa, açık kaynaklı bir proje nasıl başarılı olabilir?


3
"çoğu"? Bunu somut istatistiklerle destekleyebilir misiniz? Kaç tane okudun? Kaç tane var? Kaç tanesinin uygun belgeleri yoktu? Rakamlarınız yoksa, lütfen "en" gibi kelimeleri kaldırın ve gerçekte bulduklarınıza göre gerçek bilgilerle değiştirin. Ayrıca, lütfen kendinize atıfta bulunurken "I" harfini büyük olarak kullanın.
S.Lott

@ S.Lott Sübjektif "çoğu" için özür dilerim. Yazılım endüstrisinde yeni doğuyorum. Üniversite projesinde duyduğum belgeleri (UML Diyagramı, Akış Şeması, Kısa Tasarım Belgesi, Detaled Tasarım Belgesi, vb.) Hem proje web sitesinde hem de kod deposunda ancak şanssız olarak aramaya çalışıyorum, sadece bazı kullanım kılavuzu dokümanlarını bulmak için. Bana kendi desgin / archiecture belgelerini aramanın bazı ortak yollarını öğretir misiniz?
TomCaps

1
Lütfen "Çok" seçeneğini kaldırın. Bu çoğu kadar yanlış. lütfen görmek istediğiniz belirli belgelere sahip olmayan açık kaynaklı projeleri özel olarak listelemek için soruyu güncelleyin . Lütfen kesin ve spesifik olun. Lütfen öznel ve belirsiz olmayın.
S.Lott

ASP.NET MVC UML diyagramları içermemesinin nedeni, Visual Studio onları kaynak kodundan oluşturabilirsiniz çünkü şüpheli.
user16764

5
"Girişimcilik" in iyi bir şey olduğu yanlış varsayımı altında faaliyet gösteriyorsunuz. Üniversitede tasarım hakkında öğrendiklerin hepsi yalan: UML'nin kesinlikle bir değeri yok. Bir proje oluştururken, tek yapmanız gereken ne yapması gerektiğine dair genel bir fikir ve ilk seferinde yanlış yaparsanız projeyi atmak için istekli olmaktır. Mevcut bir proje için, sadece ana başlığı gözden geçirmek proje yerleşimi hakkında iyi bir fikir edinmek için yeterlidir.
o11c

Yanıtlar:


10

Yeni gelen geliştiricinin okuyacak mimari / tasarım belgesi yoksa neden açık kaynaklı bir proje başarılı olabilir?

Her zaman ne yaptığınızı bildiğiniz ve ne göreceğinizi (ve görmeyi beklediğiniz) makul bir şekilde kavradığınız varsayımı varsayılır.

Örneğin, Symfony çerçevesinin PHP koduna bakarsanız, bağımlılık enjeksiyonu, olaylar, model / görünüm / denetleyici deseni vb. Hakkında bilgi sahibi olmanız beklenir.

Aynı şekilde, linux çekirdeğinin C koduna dalarsanız, varsayım, modülerlik, sinyaller, süreçler, iş parçacıkları ve neyin olmadığı konusunda gerçekçi bir şekilde yetkin olacağınızdır. Ayrıca, tüm gün onaltılık bir yemek yemeniz ve dev bir kürekle çekirdek döküntülerini kazmanız bekleniyor.

Koruyucular, mimariyi belgeleme zahmetinden geçmeyecekler, çünkü bu aslında bir şey. Bazen, kaynak ağacın içinde neyin yattığını gösteren bir taslak bulacaksınız. Daha tipik olarak, kaynak ağacın düzenlenme biçimi işleri açıklayıcı hale getirir.

Kısacası, bakıcıların kodlarına göz attığınız zaman bilmenizi bekleyecek becerilerden herhangi birine sahip değilseniz, muhtemelen ödeme derecenizin üzerinde olan şeyleri araştırıyorsunuzdur. Önce kavramları tanıyın - MVC modeli nedir? Bağımlılık enjeksiyonu nedir? Vb Sonra dalış.


1
Posta listelerine bakarsanız, Linux çekirdeği, birisinin bir sorunu olduğunda veya bir şeyi değiştirmek istediğinde mimari hakkında geniş bir tartışmaya sahiptir. Çekirdek kaynak ağacının kendisinde olmasa da, bu konuda yazılmış birkaç belge de var.
edA-qa mort-ora-y

17

En başarılı açık kaynak projeleri başarılı oldu, çünkü her şeyden önce, program etkileyiciydi veya o sırada başka bir programın yapamayacağı bir şey yaptı. Bu, kaynağın iyi belgelenmiş olduğu anlamına gelmez, çünkü projeye başlamak için başlayan programcılar kodu gerekmeyecek kadar iyi bilirler. Açık kaynaklı projelerin iyi belgelenmesi gerekmeyen talihsiz bir gerçektir. Ya iyi bir program ya da vasat bir program olmalı ama programcıların bu programa ilgisini ifade edebilecekleri iyi belgelenmelidir.


Şirketimde, geliştiricilerin bir projeye herhangi bir kod yazmadan onaylanmadan önce bir Ayrıntılı Tasarım Belgesi sağlamaları gerekir. Bu prosedür açık kaynak projesi için anormal mi?
TomCaps

5
@TomCaps Ben birkaç FOSS projelerinin kapsamlı belgeler var ve bu yüzden oldukça basit olduğunu en büyük nedeni düşünüyorum: senin o ihtiyacı çözmek için küçük bir program yazma eğer sen sahip, büyük olasılıkla geliştirici beri de, sana belgelere ihtiyacım yok bu budur kimseye faydalı olmayacağı garanti edilmeyen dokümanları yazmak yerine zamanınızı programın geliştirilmesi için harcamak isteyeceksiniz (ya proje asla geliştirici dışında hiç kimse tarafından kullanılmazsa?). En iyi uygulama değil, ancak birçok FOSS projesi geliştirici süresinde kısadır.
Jeff Welling

5
@TomCaps: Bu prosedür tanıdığım çoğu şirket için anormal ...
Treb

1
Açık kaynaklı projelerin çoğu şirket değildir. Yapmam için bana ödenen bir proje olduğunda, bir süre ve bütçe ile ne olacağını düşünüyorsunuz. Eğer bir ihtiyaç ya da eğlence için bir ihtiyacı doldurmak için kodlayan bir grup insan varsa ve hiçbir bütçe ya da müşteri bu tür şeyler yok.
Elin

1
@TomCaps - Açık Kaynak yazılım yazan herkes istediklerini tam olarak yapabilir. Bazı projeler (örneğin Apache ailesi) kod yapan herkes için kurallara ve yönergelere sahiptir ve bazen bu, doumentation standartları vb. İçerir. kişisel deneyimlerim) genellikle alt-optimal. Programın ne yapması gerektiği konusunda ayrıntılı bir açıklama, geliştiriciyi uygulamayı optimize etmek ve çözüme yaratıcı stratejiler uygulamak için serbest bırakır.
James Anderson

12

Açık kaynak geliştiricileri genellikle yetenekli oldukları ve uzmanlık alanlarında proje seçtikleri için, kafataslarında zaten "dokümantasyon" vardır. Az abartı ile, ancak bunlardan herhangi birine sahip değilseniz kapsamlı dokümantasyona ihtiyaç duyulur: o)

Dürüst olmak gerekirse, bilinmeyen kod temeli ile karşılaştığımda gerçekten "belgeleri" okumadım. Hızlı bir giriş, belki birkaç kavramsal eskiz ve doğrudan kod içine! Deneme yapın, küçük değişiklikleri deneyin. İyi tasarlanmış kod için mükemmel çalışır. Korkunç bir karmaşa ile karşılaşırsam, onları öğrenmenin en iyi yolu, netliği arttırmak için yavaş yavaş yeniden düzenleme yapmaktır (ideal olarak birim test yardımı ile).

Bunun bir başka nedeni de bu projelerin organik tasarım kökenleri olabilir. Mimarlık, daha sonra, geliştiricilerin zihninde belirtilen "belgelenmiş" varlıktan ziyade gelişmiş bir vizyondur.


8

Bu tür belgelerin sıklıkla bulunmamasının nedeni oldukça basittir: Programcılar dokümantasyon yazmak yerine programlamaktan hoşlanırlar. Özellikle geliştiricilerin serbest / boş zamanlarında sıklıkla katkıda bulunduğu açık kaynak projeleri ile.

Temel olarak, dokümantasyon yazmak eğlenceli değildir. Ve eğer bunun için ödeme almazlarsa, kim boş zamanlarını eğlenceli olmayan bir şey yaparak geçirmek ister?


Bazı büyük açık kaynak projeleri (GCC, Linux çekirdeği, Firefox, Qt, ....) katkıda bulunanların çoğunun (veya önemli bir kısmının) projede çalışmak için (tam zamanlı veya yarı zamanlı) ödeme yapması gerekir. Bu yüzden özgür yazılım için ödeme yapıldığında bile, çok fazla belge
yazmıyorlar
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.