“Katkıda” klasöründe neler var?


42

Genellikle açık kaynaklı yazılım projeleri “katkı” olarak adlandırılan bir klasöre sahiptir. Örneğin, Django'da bir tane var . Bu ne için?


Araştırmanızı paylaşmak herkese yardımcı olur . Bize ne denediğinizi ve neden ihtiyaçlarınızı karşılamadığını söyleyin. Bu, kendinize yardım etmek için zaman harcadığınızı, bariz cevapları tekrar etmemizi önlediğini ve hepsinden daha belirgin ve alakalı bir cevap almanıza yardımcı olduğunu gösteriyor. Ayrıca Nasıl
Sorulur

11
Soru oldukça açıktı, IMO. - " ContribProjelerde görmeye devam ettiğim bu klasör nedir ?" - "Neden ya da neden bir projede olmasın?" - "Bilmem gereken bazı standart kurallar var mı?"
BrainSlugs83

Yanıtlar:


17

It has been yazılım için olan contrib projesine uted, ancak aslında çekirdek geliştiricileri tarafından tutulan olabilir. "Katkı" veya "Katkı" olarak adlandırmak, uzun süredir kurulmuş bir kongredir, ancak ad için özel bir şey yoktur ve genellikle yalnızca oldukça büyük projeler tarafından kullanılır.


2
Bu doğru cevap.
Blrfl

Ayrıca katkıda bulunanların zaman zaman katkı yapmamaya başladığını da fark ettim. Sanırım bunun anlamı, daha aktif destek ve gelişme için proje ana hattına dahil edilmiş olmasıdır.
fostandy

1
@fostandy: evet, bu doğru.
Bryan Oakley

15

Akla gelen popüler açık kaynaklı projelere baktığımda, herhangi bir “katkı” klasöründen bahsetmiyorum:

"Katkı" klasörü olan tek kişi Django. Django için bu klasörün rolü belgelerde zaten açıklanmıştır :

Django, Python'un “pilleri dahil” felsefesini takip etmeyi amaçlar. Sık karşılaşılan Web geliştirme sorunlarını çözen çeşitli isteğe bağlı araçlarla birlikte gelir.

Bu kod django/contribDjango dağıtımında bulunur. Bu belge, bu paketlerin sahip olduğu bağımlılıklar ile birlikte, katkıda bulunan paketlerin bir özetini vermektedir.

Django Kitabının 16. Bölümü , bu dizinin rolünün ve içindekiler listesinin daha ayrıntılı bir açıklamasını içerir.

Başka bir örnek Solr . İle gitstats, yazarlar hakkında istatistikleri alabilirsiniz.

Robert Muir         22.09%
Michael McCandless  13.60%
Mark Robert Miller   9.73%
Uwe Schindler        8.17%
Yonik Seeley         5.56%
Steven Rowe          5.55%

Sonra contribçalıştırarak sadece dizini seçebiliriz :

git filter-branch --subdirectory-filter solr/contrib --prune-empty

ve istatistikleri bir kez daha elde et:

Robert Muir         19.62%
Steven Rowe          8.87%
Mark Robert Miller   8.33%
Uwe Schindler        8.06%
James Dyer           7.80%

Bu yüzden en iyi yazarlar pratik olarak aynıdır, yani bunlar yabancıların katkıları değildir. contribKlasör içindeki dizinlere baktığımızda, bir kez daha, bunların Django'da olduğu gibi “çeşitli ekstra, isteğe bağlı araçlar” olduğu anlaşılıyor. Örneğin, Solr'ın çalışması için Veri İçe Aktarma İsteği İşleyicisine ihtiyacınız yoktur, ancak veritabanından veya XML'den veri almak istiyorsanız, contribklasörde olması çok güzel . Harita azaltma için aynı, mutlaka gerekmeyebilir, ancak yaptığınız durumlar vardır.

Bu eklentiler veya eklentiler mi? Bu terimi kullanmam. Eklentiler ve eklentiler, ana uygulama ile belirli bir entegrasyona sahiptir. Örneğin, bir eklentinin bağımsız çalışması beklenmez, ancak ana uygulamada barındırılır. Öte yandan, contribmuhtemelen bağımsız çalışabilen araçlar içerir.


2
Aslında tam olarak bir "katkı" nın ne olduğunu merak ediyordum. Solr o zaman, Grunt de. Bu, eklenti / eklenti / için başka bir terim mi?
Martyn,

@ user3265472: Solr'u içerecek cevabımı düzenledim. Grunt gelince, sen neden bahsediyorsun bu bir ? Bir katkı dizini olduğunu sanmıyorum.
Arseni Mourzenko

Yeh bu, özür dilerim sorumu klasörden kaçırdım. Kendime "katkı" terimini anlamak için bağlanıyordum. Grunt'un (Grunt-katkıda-uglify, Grunt-contrib-jshint, vb.) Adlı çeşitli eklentileri / kütüphaneleri (?) Vardır. Verdiğiniz açıklama bana daha iyi bir fikir verir, teşekkürler.
Martyn

2
Debian'daki bazı paketler 'katkı' olarak adlandırılan bir paket sınıfına girer. Bu, Debian Politika Kılavuzunun bu konuda söyleyeceği şeydir. "Diğer arşiv alanlarındaki paketler (ücretsiz, katkıda bulunmayan), Debian dağıtımının bir parçası olarak kabul edilmez. hata izleme sistemimiz ve mail listelerimiz. "
Kevin Wheeler,

3
Yıllarca baktığım çok sayıda OSS projesi, Contribşu an Akka.NET'te bir başkasına bakıyor! - Neden böyle bir klasöre sahip olduklarını veya bu isimlendirme sözleşmesinin sözleşmesinin ne olduğu hakkında hiçbir fikrim yok. - Şimdiye kadar belirtilenlerin hiçbiri, "katkı" kullandığımı gördüğüm tüm yollara uymuyor gibi görünüyor. - Her projenin içinde tamamen farklı şeyler var gibi gözüküyor (Akka.Net, kod tabanlarının dörtte birini koyuyor gibi görünüyor: Akka. Toplama, Günlüğe kaydetme, DI, Kalıcılık, Test Kitleri, vs.
BrainSlugs83

6

Projeye ute katkıda bulunan kütüphaneler veya bileşenler içindir , ancak sahip olunmaz veya projenin bir parçası değildir. Kullandığım üçüncü taraf kütüphanelerini koymak için her zaman ortak veya paylaşılan bir konum olarak kullandım.

Örneğin, şunlara sahip olabilirsiniz:

  • / Katkı / Log4net-xxx
  • /Contrib/SSH.NET-xxx
  • / BackendService
  • / DesktopUI
  • / GenUtils
  • / SMCore
  • / Web Arayüzü

Ardından, göreceli yolları kullanarak proje bileşenlerinin her birinde bunlara referans verin, bu nedenle oluşturmadan önce herhangi bir kurulum veya yapılandırma gerekmez. Yerel olarak nerede kontrol edildiğinin önemi yok, doğrudan depodan inşa edilecek.


Bu görüşü paylaşmıyorum. Tarif ettiğin şey için, vendorya da isimlerini kullanmayı tercih ederim thirdparty.
moi

2

Git, bu sözleşmeyi kullanan açık kaynaklı yazılımlara harika bir örnektir:

https://github.com/git/git/tree/master/contrib

İşte o README.md dosyasından ilgili bir alıntı:

Katkıda Bulunan Yazılım

Her ne kadar bu parçalar resmi git kaynak ağacının bir parçası olarak mevcut olsa da, biraz farklı statüdedirler. Amaç, kullanıcılara daha kolay bir erişim sağlamak ve daha hızlı bir şekilde geliştirilebilmeleri için daha geniş bir pozlama sağlamak için burada gezici etrafında ilginç araçları tutmak, belki de deneysel araçları kullanmaktır.

Bunlara kendime bu kadar dokunmayı beklemiyorum. Günlük operasyonum söz konusu olduğunda, bu alt dizinler kendi birincil yazarlarına aittir. Bu bileşenlerin kullanıcılarının ve katkıda bulunan / alt ağaç sahiplerinin "sahiplerinin" çözecek teknik / tasarım sorunları olup olmadıklarına yardım etmeye istekliyim, ancak işleri düzeltmek ve / veya geliştirmek için girişimin alt ağaç sahiplerinin tarafında olması gerekiyor.

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.