Poul-Henning Kamp ve David O’Brien tarafından yazılmıştır.
FreeBSD nin bazıparçalarıFreeBSD dışında devam etmektedir. Tarihsel nedenlerden bunu contributed software (dağıtımlar) olarak adlandırıyoruz. Örnek olarak: sendmail,gcc ve path.
Son iki senedir bu türlü yazılımlarda kullanmak üzere çeşitli yöntemler geliştirildi.Her bir yöntemin avantajlarıve eksik yanları vardı. Kesin olarak bir üstünlük sağlayan olmadı.
Bu durumda bu yöntemlerden bir tanesi tartışma sonucunda "resmi" olarak belirlendi ve ilerideki üretimlerin bu şekilde olmasına karar verildi. Ek olarak kesin bir şekilde bize fikir veriyor ki şu anda geçerli olan dağıtımlar bu modele yaklaşacaktır. Bunun bir eski metoda göre önemli avantajıherkesin elinde olan resmi kaynak kodlarıile farkının hemen anlaşılabilmesidir.Buda ana geliştiricilerin değişiklikleri gerektiğinde rahatça geri alabilmesini sağlayacaktır.
İnsanlar en sonunda yaptıklarıişi tamalayacaklardır.Eğer bu model belli paketler için uygun değil ise bu paketler ancak core takımının ve diğer geliştiricilerin ortak kararıile "istisna" olarak ele alınabilecektir.Paketlerin gelişmesi kararlar için anahtar mesele olacaktır.
NOT :RCS dosya formatının dizayn sınırlamalarıyüzünden, ana dallarda CVS kullanımı, üzerindeki küçük , önemsiz yada kozmetik değişikliklerin CVS ağacına gönderilmemesi önerilir. Çünkü bu küçük ve gereksiz değişiklikler CVS ağacında şişmeye yol açacaktır.
Tclgömülü programlama dili burada modelin nasıl çalıştığınıgöstermek için kullanılacak.
src/contrib/tcl bu paketin dağıtımcıları tarafından sunulmuşkodlarıiçerir. Bütün parçalar FreeBSD için uygulanabilir değildir , silinebilir. Bu durumda Tcl nin macwincompat altdizinleri kurulumdan kaldırılabilir.
src/contrib/libctl bmake sitilidir.Öyle ki kütüphane ve dökümantasyon oluşturmak için standart bsd.lib.mk makefile dosyasınıkullananır.
src/usr.bin/tclsh bmake sitili standart bsd.prog.mk kurallarıile tclsh programınıüreten ve kuran man-page ayarlamasıgerçekleştiren makefile dosyaları içerir.
src/tools/tools/tcl_bmake tcl programı güncellemenmesi gerektiğinde buna yardımcıolacak bir kaç çift kod içerir. Bu kurulan yazılımın bir parçasıdeğildir.
Burada önemli olan şey src/contrib/tcl dizini şu kurallara göre oluşturulur : Kaynak kodlarının FreeBSD'ye özel değiştirilmişhalde yayınlandığıvarsayılır.Eğer tam olarak nasıl devam edeceğinizi bilmiyorsanız çalışır her halde diyerek büyük bir hataya sebebiyet vermeyin. CVS yüklemesi (import) kazalarınıaffetmez ve büyük hataları geri almak için çok çaba gerektirir.
Önceden de söylediğimiz gibi CVS sistemini dizayn limitleri dağıtım yöneticisi tarafından sağlanan "resmi" yamaların ojinal kaynak olarak kabul edilmesini ve sistemdeki ana dallara tekrar yüklenmesini zorunlu kılıyor. Resmi yamalar hiç bir zaman kontrol edilmişve kabul görmüşFreeBSD verisyonu üzerine konulmamalıdır.Çünkü bu ana dalların tutarlılığına zarar verir ve ileride karışıklık olacağından yeni versiyonların çıkmasında zorluk teşkil eder.
Paketler farklımimariyi ilgilendiren kodlar içerebildiği için FreeBSD ile alakasıolmayan kısımlarınıdiskten yer kazanmak maksadıile silebilirsiniz . Kopyalama haklarınıiçeren ve sürüm notlarını barındıran dosyaların silinmemesi gerekmektedir.
Eğer daha kolayınıza gelecek ise , bmake makefile dosyalarını 'dist tree' araçlarınıkullanarak otomatik olarak elde edebilirsiniz.Bunlardan bazılarıyeni versiyona yükseltmek için kolaylaştırıcıözellikler içerirr.Eğer bu tamamsa , bu gerekli araçlarısrc/toolsdizininde port olarak bulabilirsiniz ve ilerideki geliştiriciller için kullanılabilir durumdadır.
src/contrib/tcl dizininde FREEBSD-upgrade adlıdosya eklenmiş olmasılazım ve bu dosyanın içeriği aşağıdaki şekilde olması gerekir.
Hangi dosyalar bırakıldı.
Resmi dağıtım hangi kanallarla alındı
Yeni yamalar nereden gönderilecek
Genel olarak FreeBSD özelleştirmesi üzerindeki değişikler hakkında özet
YalnızFREEBSD-upgradedosyasına dağıtımın kaynak kodlarınıkoymayın.Tercihen kaynak kodlarınıza cvs addFREEBSD-upgrage;cvs ile bu dosyayı eklemelisiniz.src/contrib/cpioiçin örnek bir yazı tarzı:
$FreeBSD: src/contrib/groff/FREEBSD-upgrade,v 1.5.12.1 2005/11/15 22:06:18 ru Exp $ This directory contains virgin copies of the original distribution files on a "vendor" branch. Do not, under any circumstances, attempt to upgrade the files in this directory via patches and a cvs commit. To upgrade to a newer version of groff, when it is available: 1. Unpack the new version into an empty directory. [Do not make ANY changes to the files.] 2. Use the command: cvs import -m 'Virgin import of FSF groff v<version>' \ src/contrib/groff FSF v<version> For example, to do the import of version 1.19.2, I typed: cvs import -m 'Virgin import of FSF groff v1.19.2' \ src/contrib/groff FSF v1_19_2 3. Follow the instructions printed out in step 2 to resolve any conflicts between local FreeBSD changes and the newer version. Do not, under any circumstances, deviate from this procedure. To make local changes to groff, simply patch and commit to the main branch (aka HEAD). Never make local changes on the FSF branch. All local changes should be submitted to Werner Lemberg <wl@gnu.org> or Ted Harding <ted.harding@nessie.mcc.ac.uk> for inclusion in the next vendor release. ru@FreeBSD.org - 20 October 2005