POSIX Nedir? Richard Stallman Açıklıyor

Bu konuyu okuyanlar

Türkçesever

Profesör
Katılım
12 Eylül 2016
Mesajlar
1,570
Reaksiyon puanı
2,969
Puanları
113
Bilgisayar özgürlüğü öncüsü işletim sistemi uyumluluğu için standartların arkasında ne olduğunu keşfedin.

POSIX nedir ve neden önemlidir? Teknik yazımda büyük olasılıkla gördüğünüz bir terimdir ancak çoğu kez teknobaşlangıçlar denizinde ve X'le sonuçlanan bir jargon denizinde kaybolur. Terimin kökeni ve arkasındaki kavram hakkında daha fazla bilgi edinmek için Dr. Richard Stallman (hacker çevrelerinde RMS olarak daha iyi bilinir) e-posta ile gönderdim.

Richard Stallman; "açık" ve "kapalı" yazılımları sınıflandırmanın yanlış olduğunu söylüyor. Stallman, programları özgürlüğe saygı duyan ("free" veya "libre") ve özgürlüğünü bozan ("özgür olmayan" veya "sahipli") sınıflandırır. Açık kaynak söylem tipik olarak ahlaki bir zorunluluk olarak değil, pratik avantajlar uğruna bazı uygulamaları teşvik eder.

Stallman'ın 1984'te başlattığı özgür yazılım hareketi, avantajların tehlikede olduğunu söylüyor. Bilgisayar kullanıcıları bilgisayarlarının kontrolünü hak ediyor, bu nedenle kullanıcıların kontrolünü reddeden programlar reddedilecek ve ortadan kaldırılacak bir adaletsizliktir. Kullanıcıların kontrole sahip olmaları için program onlara dört temel özgürlüğü vermelidir:
  • Herhangi bir amaç için programı istediğiniz gibi çalıştırma özgürlüğü (özgürlük 0).
  • Programın nasıl çalıştığını anlama ve çalışma şeklini değiştirme özgürlüğü, böylece istediğiniz şekilde bilgisayar kullanırsınız (özgürlük 1). Kaynak koduna erişim bunun için bir ön koşuldur.
  • Başkalarına yardım edebilmeniz için kopyaları yeniden dağıtma özgürlüğü (özgürlük 2).
  • Değiştirilmiş sürümlerin kopyalarını başkalarına dağıtma özgürlüğü (özgürlük 3). Bunu yaparak tüm topluluğa değişikliklerinden faydalanma şansı verebilirsin. Kaynak koduna erişim bunun için bir ön koşuldur.
POSIX Hakkında

Seth:
POSIX standardı; IEEE tarafından yayımlanan ve "taşınabilir bir işletim sistemi" tanımlayan bir belgedir. Geliştiriciler bu açıklamaya uygun programlar yazdıkları sürece POSIX uyumlu bir program hazırlamışlardır. Teknoloji endüstrisinde kısaca buna "specification" ya da "spec" diyoruz. Bu teknoloji jargonuna gelince çoğunlukla anlaşılabilir bir durumdur ancak işletim sistemini “taşınabilir” yapan şey nedir?

RMS: Herhangi bir sistemden ziyade taşınabilir olması gereken arayüzün (sistemler arasında) olduğunu düşünüyorum. Aslında içinde farklı olan çeşitli sistemler POSIX arayüzü özelliklerinin bazı kısımlarını destekler.

Seth: Eğer iki sistem POSIX uyumlu programlar içeriyorsa birbirleri hakkında nasıl konuşacaklarını bilmelerini sağlayarak birbirleriyle ilgili varsayımlarda bulunabilirler.

"POSIX" ismini kullananın sen olduğunu okudum. Terimi nasıl buldunuz ve IEEE tarafından nasıl kabul edildi?

RMS: IEEE bu spesifikasyonu geliştirmeyi bitirmişti ancak kısa bir adı yoktu. Başlık, "taşınabilir işletim sistemi arayüzü" gibi bir şey söyledi ancak tam kelimeleri hatırlamıyorum. Komite “IEEEIX”i özlü isim olarak koydu. Bunun iyi bir seçim olduğunu düşünmedim. Bunu telaffuz etmek çok çirkin - bir dehşet çığlığı gibi geliyor, "Ayeee!" - yani insanların yerine "Unix" demesini beklerdim.

GNU’s Not Unix'ten beri Unix’in yerine geçmesi amaçlandığından ben insanların GNU’ya “Unix sistemi” demelerini istemedim. Bu nedenle insanların gerçekten kullanabilecekleri kısa bir isim önerdim. Belli bir ilham kaynağım olmadığında belirsiz bir yol seçtim: “portable operating system” ilk harflerini aldım ve “ix” ekledim. IEEE bunu hevesle kabul etti.

Seth: Seth: POSIX kısaltmasındaki "operating system" sadece GNU gibi Unix ve Unix benzeri sistemlere mi işaret ediyor yoksa tüm işletim sistemlerini kapsamayı mı amaçlı?

RMS: Özette "operating system" terimi; POSIX özelliklerine hiç yakın olmayan, hiç Unix gibi olmayan sistemleri kapsar. Ancak bu özellik Unix'e çok benzeyen sistemler içindir; sadece bu tür sistemler POSIX özelliklerine uyacaktır.

Seth: Mevcut POSIX standartlarını gözden geçirme veya güncelleme konusunda yer alıyor musunuz?

RMS: Şimdi değil.

Seth: GNU Autotools toolchain'i uygulamaların taşınmasını kolaylaştırmak için, en azından inşa etme ve kurulum zamanı geldiğinde, çok şey yapar. Autotools, taşınabilir bir altyapı oluşturmanın önemli bir parçası mı?

RMS: Evet, POSIX'ı takip eden sistemler arasında bile çok az fark var. Autotools, bir programın bu farklılıklara uyum sağlamasını kolaylaştırır. Bu arada herhangi biri Autotools'un geliştirilmesine yardımcı olmak isterse lütfen bana e-posta gönder.

Seth: İnsanların GNU’nun yeni bir Unix’in sahipli teknolojiden kurtarılmasının mümkün olduğunu fark etmelerine başlamasına başladığında özgür yazılımların birlikte nasıl çalışabileceği konusunda açıklık olmalıydı.

RMS: Boşluk veya belirsizlik olduğunu sanmıyorum. BSD'nin arayüzlerini takip edecektim.

Seth: Bazı GNU uygulamaları POSIX uyumludur, diğerleri ise POSIX spesifikasyonunda olmayan veya spesifikasyonun gerektirdiği özellikleri olmayan GNU'ya özgü özelliklere sahiptir. POSIX'ın GNU uygulamalarına uyumu ne kadar önemlidir?

RMS: Bir standardın takip edilmesi, kullanıcılara hizmet ettiği ölçüde önemlidir. Bir standardı bir otorite olarak değil, takip etmesi yararlı olabilecek bir rehber olarak ele alıyoruz. Dolayısıyla bunlara "uymak" yerine aşağıdaki standartlardan bahsederiz. GNU Coding Standards'ta Non-GNU Standards bölümüne bakınız.

Çoğu konuda kullanıcılara en iyi hizmeti veren birçok konuda standartlara uymaya çalışıyoruz. Ancak ara sıra istisnalar da var.

Örneğin; POSIX bazı yardımcı programların 512 bayt birimindeki disk alanını ölçtüğünü belirtir. Komiteden bunu 1K olarak değiştirmesini istedim ancak bürokratik bir kuralın 512 seçimini zorladığını söyleyerek reddetti. Kullanıcıların bu karardan memnun kalacağını iddia etme girişimi hatırlamıyorum.

GNU’nun ikinci önceliği, kullanıcıların özgürlüğünün ardından kullanıcıların rahatlığı olduğundan GNU programlarını varsayılan olarak 1K'lik bloklar hâlinde disk alanını ölçtük.

Ancak bu sapmanın GNU’yu “uyumsuz” yaptığını iddia edebilecek rakiplerin potansiyel saldırılarına karşı savunmak için gülünç uç noktalara POSIX ve ISO C'yi izleyen isteğe bağlı modları uyguladık. POSIX için ortam değişkenini POSIXLY_CORRECT olarak ayarlamak, POSIX liste disk alanı tarafından 512 bayt cinsinden belirtilen programları yapar. Birisi POSIXLY_CORRECT veya GCC karşılığı --pedantic'in bir kullanıcı için gerçek bir fayda sağlayan fiilî kullanımı hakkında bir durum varsa lütfen bana bildirin.

Seth: POSIX uyumlu özgür yazılım projelerinin diğer Unix benzeri sistemlere aktarılması daha mı kolay?

RMS: Sanırım ama 1980'lerde zamanımı GNU dışındaki sistemlere aktarmak için harcamamaya karar verdim. Özgür olmayan herhangi bir yazılımı kullanmayı gereksiz hâle getirmek için GNU sistemini ilerletmeye odaklandım ve GNU programlarının bu sistemlerde çalıştırılmasını isteyenlere GNU benzeri olmayan sistemlere taşınmasını bıraktım.

Seth: POSIX, yazılım özgürlüğü için önemli mi?

RMS: Temel seviyede fark etmez. Bununla birlikte POSIX ve ISO C tarafından standardizasyon kesinlikle GNU sisteminin taşınmasını kolaylaştırdı ve bu da kullanıcıları özgür olmayan yazılımlardan kurtarma hedefine doğru daha hızlı ilerlememize yardımcı oldu. Bu 1990'ların başında Linux'un özgür bir yazılım hâline getirildiği ve ardından GNU'daki çekirdek şeklindeki boşluğu doldurduğu zaman başarıldı.

POSIX Tarafından Benimsenen GNU Yenilikleri

Ayrıca Stallman’a GNU’ya özgü herhangi bir yenilik veya konvansiyonun daha sonra POSIX standardı olarak kabul edilip edilmediğini sordum. Belirli örnekleri hatırlayamadı ama benim adıma birkaç geliştiriciyi e-postayla gönderdi.

Geliştiriciler Giacomo Catenazzi, James Youngman, Eric Blake, Arnold Robbins ve Joshua Judson Rosen önceki POSIX yinelemelerinin hatıraları ile devam etmekte olanların hepsine cevap verdiler. POSIX "yaşam" standartıdır, bu nedenle sürekli olarak endüstri profesyonelleri tarafından güncellenmekte ve gözden geçirilmektedir ve GNU projelerinde çalışan birçok geliştirici, GNU özelliklerinin dâhil edilmesini önermektedir.

Tarihsel ilginin uğruna işte "POSIX"a girmiş bazı popüler GNU özellikleri.

Make

Bazı GNU Make özellikleri POSIX'ın make tanımına uyarlanmıştır. İlgili spesifikasyon, mevcut uygulamalardan ödünç alınan özellikler için ayrıntılı bir atıf sağlar.

Diff ve patch

Hem diff hem de patch komutları; bu araçların GNU versiyonlarından doğrudan eklenen -u ve -U seçeneklerini aldı.

C Kütüphanesi

GNU C kütüphanesinin birçok özelliği, glibc, POSIX’ta kabul edilmiştir. Lineage'yi bazen izlemek zordur ancak James Youngman şunları yazdı:

GCC'nin öncülüğünü yaptığı bir dizi ISO C'nin olduğundan eminim. Örneğin; _Noreturn C11’de yeni ancak GCC-1.35 bu özelliğe sahipti (biri fonksiyon bildiriminde volatile değiştiriciyi kullandı). Ayrıca -bundan emin olmasam da- GCC-1.35, modern C'nin uyumlu dizilerine çok benzeyen Değişken Uzunluklu Dizileri destekliyordu.

Giacomo Catenazzi, Open Group'un strftime makalesini şöyle nitelendiriyor: "Bu, GNU libc'nin strftime()'sinin bazı versiyonlarındaki bir özelliğe dayanır."

Eric Blake; getline() ve çeşitli *_l() yerel temelli fonksiyonların GNU tarafından kesinlikle öncülük ettiğini belirtti.

Joshua Judson Rosen, tamamen farklı bir işletim sistemi için kullanılan koddan garip bir şekilde tanıdık GNU benzeri davranışa tanık olduktan sonra getline fonksiyonlarının benimsenmesinden etkilendiğini açıkça hatırladığını söyleyerek buna ekliyor.

“Bekle… bu GNU'ya özgü… değil mi? Oh — artık değil, görünüşte.”

Rosen beni getline kılavuzuna yönlendirdi:

Hem getline() hem de getdelim() aslen GNU uzantılarıydı. POSIX.1-2008'de standardize edilmiştir.
  • ppoll
  • pthread_cond_clockwait et al.
  • posix_spawn_file_actions_addchdir
  • getlocalename_1
  • reallocarray
Kullanıcı Alanı Uzantıları

POSIX; yalnızca geliştiricilere yönelik fonksiyonları ve özellikleri tanımlamaz. Kullanıcı alanı için de standart davranışı tanımlar.

ls

-A
seçeneği dışlamak için kullanılır. (geçerli konumu temsil eder) ve... (bir dizine geri dönme fırsatını temsil eder) bir ls komutunun sonuçlarından notasyon. Bu POSIX 2008 için kabul edildi.

find

find
komutu; geçici for döngüleri için ve paralel işlemeye açılan bir ağ geçidi olarak yararlı bir araçtır.

Birkaç kolaylık; -path ve -perm seçenekleri de dâhil olmak üzere GNU'dan POSIX'a doğru yol aldı.

-path seçeneği; bir dosya sistemi yolu düzeniyle eşleşen arama sonuçlarını filtrelemenize olanak sağlar ve GNU’nun 1996’dan bu yana find versiyonunda mevcuttu (findutil’in Git deposundaki en eski kayıt). James Youngman; HP-UX'in de bu seçeneğin çok erken olduğunu, bunun bir GNU veya HP-UX inovasyonunun (veya her ikisinin) belirsiz olduğunu da belirtti.

-perm seçeneği, arama sonuçlarını dosya iznine göre filtrelemenize izin verir. Bu GNU’nun 1996’da bulunma versiyonundaydı ve daha sonra POSIX standardı olan “IEEE Std 1003.1, 2004 Edition”a geldi.

findutils paketinin bir parçası olan xargs komutunda xargs'ı etkileşimli bir moda koyma (kullanıcıdan devam edilip edilmemesi isteneceği) 1996'ya kadar bir -p seçeneğine sahipti ve IEEE Std 1003.1, 2004 Edition'da POSIX'a ulaştı.

Awk

GNU awk'ın (/usr/bin dizininizdeki gawk komutu, muhtemelen sembolik bağ awk adresinin hedefi) bakımcısı Arnold Robbins; gawk ve mawk'ın (başka bir GPL awk uygulaması) RS'nin 1'den büyük bir uzunluğa sahip olması durumunda RS'nin düzenli bir ifadeye izin verdiğini söylüyor.

Genişletilmiş düzenli ifadelerde NUL'lardan kaynaklanan tanımsız davranış, GNU gawk programının ikili verileri işlemesi için gelecekteki uzantılara izin verir.

Çok karakterli RS değerleri kullanmanın belirtilmemiş davranışı, kayıt ayırıcılar için kullanılan genişletilmiş normal ifadelere dayalı gelecekteki olası uzantılara izin vermektir. Tarihsel uygulamalar string'in ilk karakterini alır ve diğerlerini görmezden gelir.

Bu önemli bir gelişmedir çünkü RS notasyonu kayıtlar arasında bir ayırıcı tanımlar. Bir virgül veya noktalı virgül veya çizgi veya herhangi bir karakter olabilir ancak karakter dizisiyse gawk veya mawk'ta çalışmadığınız sürece yalnızca ilk karakter kullanılır. Her IP adresindeki her noktada ayrıştırılmış sonuçları geri almak için bir üç noktadan (arka arkaya üç nokta) ayrılmış kayıtlarla bir IP adresleri belgesinin ayrıştırıldığını hayal edin.

Mawk ilk önce bu özelliği destekledi ancak birkaç yıl boyunca bakımsız kaldı ve torunu taşımak için gawk bıraktı. (Mawk o zamandan beri yeni bir bakıcı kazanmıştır, bu yüzden bu özelliği ortak beklentiye itmek için tartışmalı bir şekilde kredi paylaşılabilir.)

POSIX Spesifikasyonu

Genel olarak Giacomo Catenzzi "... Çünkü GNU yardımcı programları çok kullanılmış, pek çok seçenek ve davranış birbiriyle uyumluydu. Kabuktaki her değişiklikte Bash karşılaştırma olarak (birinci sınıf citizen olarak) kullanılır." diye belirtiyor. Bir şey POSIX spesifikasyonuna alındığında GNU veya başka bir etkiden bahsetme zorunluluğu yoktur ve GNU'nun yalnızca bir tanesi olduğu POSIX'a etkilerin birçok kaynaktan geldiği kabul edilebilir.

POSIX'ın önemi fikir birliğidir. Yüzlerce nadir geliştirici tarafından paylaşılacak ortak özelliklere yönelik olarak birlikte çalışan bir grup teknoloji; yazılım bağımsızlığına, geliştiriciye ve kullanıcı özgürlüğüne doğru büyük harekete güç vermektedir.

Referanslar

This work, "POSIX Nedir? Richard Stallman Açıklıyor", is a derivative of "What is POSIX? Richard Stallman explains" by Opensource.com, used under CC BY-SA. "POSIX Nedir? Richard Stallman Açıklıyor" is licensed under CC BY-SA by Türkçesever.
 
Üst