Gönderen Konu: Bir Özgür Yazılım Projesine Yama ile NASIL Katkıda Bulunursunuz?  (Okunma sayısı 562 defa)

0 Üye ve 1 Ziyaretçi konuyu incelemekte.

Çevrimdışı fortran

  • Forum Gurusu
  • *****
  • İleti: 1.671
  • Bir insanı sevmekle başlar her şey...
    • get GNU
Çeviren: Mehtap Tamtürk
<mehtap (at) comu.edu.tr>
Yazan: V. Alex Brennen
<vab (at) cryptnet.net>

Bu belgenin, Bir Özgür Yazılım Projesine Yama ile NASIL Katkıda Bulunursunuz çevirisinin 1.0 sürümününtelif hakkı © 2009 Mehtap Tamtürk'e, özgün İngilizce sürümünün telif hakkı © 2001 V. Alex Brennen'e aittir. Bu belgeyi, Free Software Foundation tarafından yayınlanmış bulunan GNU Genel Kamu Lisansının 3 ya da daha sonraki sürümünün koşullarına bağlı kalarak kopyalayabilir, dağıtabilir ve/veya değiştirebilirsiniz. Bu Lisansın bir kopyasını http://www.gnu.org/licenses/gpl.html adresinde bulabilirsiniz.

Belgenin ingilizce orjinaline buradan ulaşabilirsiniz.

Giriş

    Özgür yazılımın en harika farklılığı işbirliğine ve çok fazla uzmanlığa izin vermesidir. Özgür yazılım projelerine katkıda bulunan muazzam sayıda birey katılımcıların belirli teknolojilere odaklanmasına ve bu teknolojilerde ihtisas yapmasına olanak sağlar - bu teoridir, gerçekleştirimdir ve yöndür. Bu belge yama sistemlerinin çok özet bir açıklamasıdır; programcılar tarafından kullanılan sistem, özgür yazılım projelerinde işbirliğine izin verir. Yama sistemi, toplumdaki birçok uzmanın bir arada çalışmasını mümkün kılmak için geliştirilen bir teknolojidir. Bu teknoloji, halkın geliştirme gayretlerinde güçlü bir rol oynar ve bu nedenle geliştirme projelerinde temel düzeyde anlaşılabilirlik, katılım için önemlidir.

    Yama sistemleri, yama olarak adlandırılan özel biçimli metin dosya dağıtımları ile çalışır. Yama, kaynak kodun değiştirilmiş biçimi ile asıl kaynak kod arasındaki farklılıkları tanımlayan bir metin dosyasıdır. Bir yama, kaynak kodun aslının kopyası ile değiştirilmiş biçimini karşılaştırmaya başvurmayı (veya değiştirmeyi) mümkün kılan bir şekilde var olur. Yamalar, iki farklı GNU yardımcı program kümesi tarafından oluşturulur ve uygulanır. diff yardımcı programı, bir yama dosyası oluşturmakta kullanılır. GNU patch yama dosyalarının uygulanmasında kullanılır. Yama dosyaları, asıl kaynak kodun diğer kopyalarına dağıtılabilen ve uygulanabilen diff yardımcı programı tarafından oluşturulmuştur. Bu yüzden, kaynak kodun tümünün kopyasını çevirme ihtiyacı ve değişiklikleri bulmak ve anlamak için kodun tamamını tarama ihtiyacı azalır. Bu iki yardımcı program, yama sisteminde birlikte çalışır ve yazılım geliştirmede işbirliğinin karmaşıklığını önemli derecede azaltır.

    Açıkça olmasına rağmen; birleştirilen koddaki karmaşıklığın çoğunluğu, tasarım kararlarının doğasında yatar. Yama, bu karmaşıklığı yok edemez. Geliştirici, mümkün olduğunca bu karmaşıklığı azaltmaya çalışmalıdır. Bakımcının karşılaşacağı zorlukları azaltacak anlaşılabilir ve uygulanabilir paketler için aşağıdaki adımları uygulayın:

       1. Eğer değişiklikler önemliyse, değişikliği yapmadan önce bakımcı ile görüşün.
       2. Yamasını sunacağınız programın kodlama tarzına uyun.
       3. Bir tasarıda, kod değişikliklerinde veya bunlarla ilişkili küçük gruplarda yamanızın sade ve hedefli olmasını sağlayın.
       4. Yamanızın sunumu, detaylı bir yama tanımlamasını ve neden onu düşündüğünüzün açıklamasını içermelidir.
       5. Kodunuz yorum satırları ve ayrıca yorum satırı olarak adınız ve e-posta adresinizi içermelidir.

Nasıl Yaparsınız

    Diyelim ki, eğitici bir GPL’d programı indirdik ve değiştirmeyi istediğimiz ve değişiklikleri bakımcıya göndereceğimiz kaynağa karar verdik. Biz, hello world programını örnek olarak kullanacağız. Bu programın 1.0 versiyonu üzerinde çalışacağız. gzip ile sıkıştırılmış tar şeklindeki helloworld-1.0.tar.gz dosyasını indirip onu açtığımız taktirde helloworld-1.0/ adlı dizini ve onun içinde helloworld.c adlı kaynak dosyasını bulacağız. Bu dosyanın içeriği şu şekildedir:

    Asıl (helloworld-1.0/helloworld.c):

Kod: [Seç]
#include <stdio.h> 

int main(void)
{     
prinf("Hello World!\n");     
return(0);
}
İlk adım olarak değiştireceğimiz kaynak kodu kopyalıyoruz:
Kod: [Seç]
cp -R helloworld-1.0/ helloworld-1.0.new/Daha sonra, helloworld-1.0.new dizinindeki helloworld.c kopyasını değiştireceksiniz.

Düzenlenmiş (helloworld-1.0.new/helloworld.c):
Kod: [Seç]
#include <stdio.h> 

int main(void)
{     
printf("Hello World and little green visitors!\n")     
return(0);
}
Daha sonraki adım (yazılımdaki değişiklikleri test ettikten sonra) yama dosyası oluşturmak için diff kullanmaktır. Böylelikle değişiklikler dağıtılabilir. Yama dosyasını oluştururken, diff komutunu ‘urN’ bayrakları ile çağırırız. diff man sayfasına göre, bu bayrakların anlamı aşağıdaki gibidir:

-u
    Birleşik çıktı formatını kullanma

-r
    Dizinleri karşılaştırırken, bulunan her altdizini özyinelemeli olarak karşılaştırır.

-N veya --new-file
    Dizin karşılaştırmasında, eğer bir dosya yalnızca bir dizinde bulunuyorsa, diğer dizinlerde var ama boş gibi davran.

Gördüğünüz gibi bu bayrakların kullanımıyla, dizin çiftlerinin altındaki tüm dosyaların özyinelemeli karşılaştırılmasına diff komutuyla imkan verilecektir. Varsayalım herhangi yeni dosya, gerekli eklemeler yapıldığında ve tek bir yama dosyası üretildiğinde hesaba katılmalıdır. Örneğimiz için çalıştırmak isteyeceğimiz komut şu şekildedir:
Kod: [Seç]
diff -urN helloworld-1.0/ helloworld-1.0.new/ > helloworld.patchBu komut, aşağıdaki içeriğe sahip bir yama dosyası üretecektir:
Kod: [Seç]
diff -urN helloworld-1.0/helloworld.c helloworld-1.0.new/helloworld.c
--- helloworld-1.0/helloworld.c Sat Feb 19 13:11:35 2000
+++ helloworld-1.0.new/helloworld.c     Sat Feb 19 13:11:12 2000
@@ -2,6 +2,6 @@   

int main(void) 
 {
-       prinf("Hello World!\n");
+       prinf("Hello World and little green visitors!\n");
return(0); 
 }
Yamanın şekli belirgindir. Detay isterseniz, yama yardımcı programı kaynak koduna başvurabilirsiniz.

Daha sonra yama; paketlenerek bakımcıya e-mail ile gönderilebilir, Linux Kernel Mailing List gibi bir mail listesine yollanabilir ya da başkalarının onu indirebilmesi için web veya ftp sitesine gönderilebilir.

Yama daha sonra indirilebilir ve aşağıdaki komut ile kodun asıl sürümüne uygulanabilir:
Kod: [Seç]
patch -p0 < helloworld.patchBurada 'p0' bayrağı ile patch komutuna helloworld-1.0/ dizininin sistemimizde, yamanın oluşturulduğu sistemdeki yamanın oluşturulduğu dizin ile aynı yerde oluğunu söylüyoruz. Veya daha basit ifade edersek, helloworld-1.0/ dizini, yama ile birlikte bizim şu anda çalışan dizinimizdedir. patch komutunun man sayfasında p bayrağı ve hangi yol konumunda çalıştığı ile ilgili ek bilgiler vardır.

Hepsi bu kadar. Şimdi birkaç GPL lisanslı yazılımı indirip, bazı yazılım hatalarını düzeltin, yamalar oluşturun ve bunları bakımcılara gönderin.

Bağlantılar

    CryptNET

    GNU Project

    Free Software Foundation

    Open Source Development With CVS By Karl Fogel

    Havoc Pennington's Guide To Working on Free Software


Kaynak: comu.edu.tr