← A–Z Röportajları

Bash

Bash ya da Bourne-Again Shell, 1987’de Brian Fox tarafından geliştirilmiş bir Unix kabuğudur. Wikipedia’ya göre isim, 1978’de Version 7 Unix ile dağıtılan ve Stephen Bourne tarafından yazılan daha önceki bir Unix kabuğuna (Bourne shell) yapılan bir kelime oyunudur.

1990’da, Case Western Reserve University’de Teknoloji Altyapı Hizmetleri bünyesindeki Ağ Mühendisliği ve Güvenlik Grubu’nun yöneticisi olan Chet Ramey, dilin birincil sürdürücüsü oldu. Computerworld, daha fazla bilgi edinmek için Ramey’e ulaştı.

Bash ile ilk olarak nasıl ilgilenmeye başladınız?

1989 civarında Case Western Reserve University (CWRU) için ağ hizmetleri ve sunucu desteği sağlıyordum ve bu iş için elimde bulunan kabuklardan memnun değildim. Programlama için sh kullanmak ve etkileşimli kullanım için csh/tcsh kullanmakla gerçekten ilgilenmiyordum; bu yüzden istediğim etkileşimli özelliklere (iş denetimi, satır düzenleme, komut geçmişi, dosya adı tamamlama vb.) sahip bir sh sürümü aramaya başladım.

SVR2 kabuğunun bu özelliklerin eklendiği birkaç sürümünü buldum (bu çalışmayı yapan Doug Gwyn, Ron Natalie ve Arnold Robbins’e atıf yapmak gerekir). Bunlar, Unix kaynak lisansına sahip olduğumuz için CWRU’da mevcuttu, ancak onlarla ilgili sorunlar yaşadım ve istediğim şekilde genişletemedim. Ken Almquist ASH’i yazıyordu, ancak o henüz yayımlanmamıştı; ayrıca 7. baskı kabuğunun bir klonu vardı ve bu daha sonra PDksh oldu, fakat onda da istediğim özellikler yoktu.

Brian Fox, FSF çalışanı olduğu dönemde, bir yıl önce bash ve readline’ı (o zamanlar ayrı bir kütüphane değildi) yazmaya başlamıştı. Hatırladığım kadarıyla hikâye şöyleydi: Bir gönüllü ortaya çıkıp bir Bourne Shell klonu yazmayı teklif etmişti. Bir süre sonra hiçbir şey ortaya koymayınca Richard Stallman, Brian’a bir kabuk yazmasını söyledi. Stallman bunun yalnızca birkaç ay sürmesi gerektiğini söylemişti.

Tekrar aramaya başladım ve çok erken bir bash sürümünü buldum. Nereden aldığımı hatırlamıyorum, ancak Brian’ın Ohio State’ten Paul Placeway’e bir kopya göndermesinden sonraydı – Paul uzun yıllar tcsh sürdürücüsüydü ve Brian ondan satır düzenleme ve yeniden çizim kodu konusunda yardım istemişti. O sürümü aldım, iş denetimini çalışır hâle getirdim ve başka birçok hatayı düzelttim; değişikliklerimi Brian’a gönderdim. Yeterince etkilendi ve benimle birlikte çalışmaya başladı; oradan itibaren birlikte devam ettik.

Bash’in ilk herkese açık sürümlerinde insanların bildirdiği hataların çoğunu düzelttim ve bu düzeltmeleri Brian’a geri ilettim. Aşağı yukarı eş-sürdürücüler olarak birlikte çalışmaya başladık ve Brian başka işlere geçtiğinde, yerel kullanıcılarım için bash’i desteklemem gerekiyordu; bu yüzden birkaç yerel sürüm yayımladım. Brian ve ben sonunda bu sürümleri birleştirdik ve o bash geliştirmesinden tamamen ayrıldığında sorumluluğu ben devraldım.

Dilin birincil sürdürücüsü olmadan önce Brian Fox ile birlikte çalıştınız mı?

Brian ve ben, o başka işlere geçmeden önce birkaç yıl birlikte çalıştık. bash-1.13’e kadar olan sürümler ortak çalışmanın ürünleriydi.

Brian ile çalışma ilişkiniz nasıldı?

Çalışma ilişkimiz çok iyiydi; özellikle de yüz yüze yalnızca bir kez, 1990’da tanıştığımız düşünülürse. O dönemde İnternet üzerinden gerçek zamanlı iki yönlü iletişime olanak tanıyan Unix talk ve ntalk’ı yoğun biçimde kullandık; ayrıca e-postadan ve ara sıra uzun mesafeli telefon görüşmelerinden de yararlandık. Hâlâ iletişimdeyiz.

Bash’in ortaya çıkmasını ilk etapta ne tetikledi?

Richard Stallman, o dönemde lisans kısıtları bulunan Unix sistemlerinin tam bir alternatifi olacak bir sistem geliştirmeye karar verdiğinde, sonunda tüm yaygın yardımcı araçların, özellikle de standart kabuğun karşılıklarına ihtiyaç duyacağını ve bu karşılıkların kabul edilebilir lisanslara sahip olması gerektiğini biliyordu. Birkaç başarısız denemeden sonra Brian Fox’u bunu yazması için işe aldı. Erken aşamada, kabuğu POSIX standardında tanımlandığı şekilde uygulamaya karar verdiler ve bunu bir belirtim olarak kullandılar.

Dilin çözmeyi hedeflediği belirli bir problem var mıydı?

Bash söz konusu olduğunda, çözülmesi gereken problem GNU sisteminin bir parçası olacak, POSIX standart kabuğunun özgür yazılım bir sürümünü sağlamaktı. Kabuğun özgün sürümü (Steve Bourne’un sürümü), başlangıçta Ken Thompson tarafından yazılan ve altıncı baskıya kadar olan Unix sürümlerinde bulunan kabuğun çeşitli sınırlamalarını aşmayı amaçlıyordu.

Fox dili geliştirdikten üç yıl sonra neden birincil sürdürücü olarak görevi devraldınız?

Brian başka işlere geçmek istiyordu ve ben de bunu üstlenmeye istekli, kodla deneyimli bir geliştiriciydim. Brian ve FSF, programın geleceğini bana emanet ettiler.

GNU Bash Reference Manual ve Bash Reference Manual’ın yazılmasını ne tetikledi?

Yoğun biçimde kullanılan her iyi programın iyi bir başvuru belgelendirmesine ihtiyacı vardır ve bash de istisna değildir. Belgeleri başlangıçta yerel kullanıcılarımı desteklemek için yazdım ve zamanla resmi sürümlere dâhil edildiler.

Özgün Bourne Shell ile Bourne-Again Shell arasında güçlü bir ilişki var mı?

Bunun doğrusal bir ilişki olduğunu söyleyebilirim: özgün Bourne Shell çok etkiliydi, çeşitli System V kabuk sürümleri bu mirası korudu ve POSIX komitesi de geliştirdiği standardın temelini bu sürümler üzerine kurdu. Temel dil sözdizimi ve yerleşik komutlar kesinlikle Bourne kabuğunun doğrudan mirasçılarıdır. Bash’in ek özellikleri ve işlevselliği, Bourne kabuğunun sunduklarının üzerine inşa edilmiştir. Kaynak kodu ve iç uygulama açısından ise elbette hiçbir ilişki yoktur.

Dilin adına ne ilham verdi: Bourne Shell üzerine neden bir kelime oyunu yapıldı?

FSF’nin kelime oyunlarına düşkünlüğü vardır ve sanırım bu da uygun görünmüştü. İsim, benim dâhil olmamdan önce belirlenmişti.

Dili sürdürürken zor kararlarla karşılaştınız mı?

En zor kararlar uyumlulukla ilgilidir: bash tarihinin çeşitli noktalarında var olan sh sürümleriyle ne kadar uyumlu olunacağı; değerli bulduğum Korn shell özellikleriyle ne ölçüde uyum sağlanacağı; POSIX standardından nerede ve nasıl ayrılınacağı ve yaptığım hataları düzeltmek için önceki bash sürümleriyle geriye dönük uyumluluğun ne zaman bozulacağı. Uygulanan (ve uygulanmayan) bazı özellikler çok fazla düşünce ve değerlendirme gerektirdi – nasıl uygulanacaklarından ziyade, bunun için kaynak ayırmaya değip değmeyeceği konusunda. Son 15 yıldaki bash geliştirmesinin büyük bölümü tek bir kişi tarafından yapıldı.

Hâlâ dil üzerinde çalışıyor musunuz?

Evet. Hatta bash’in bir sonraki büyük sürümü olan bash-4.0’ın bu (Kuzey) yazı içinde çıkması gerekiyor.

En son hangi proje için kullandınız?

Bu aralar bash’i çoğunlukla etkileşimli çalışmalar için kullanıyorum. Bazı küçük sistem yönetimi araçları yazıyorum, ancak artık çok fazla sistem yönetimi yapmıyorum.

Bash’te yazılmış (bildiğiniz) en heyecan verici kod parçası hangisi?

Bunu söylemek zor. Pek çok ilginç proje kabuk betikleri ya da kabuk betiklerinden oluşan setler olarak gerçekleştirilmiştir. Özellikle tamamen kabuk betikleriyle uygulanmış çeşitli bash hata ayıklayıcı sürümlerini seviyorum. Bu oldukça karmaşık bir çalışma. Tamamen kabuk betikleriyle yazılmış bütün web sunucuları ve başka şaşırtıcı derecede kapsamlı uygulamalar gördüm.

Sizce Bash Web’e nasıl kalıcı bir miras bıraktı?

Bence bash’in mirası, sağlam bir altyapı parçası olması ve her gün milyonlarca Linux, Mac OS X ve Solaris sistemini çalışır hâle getiren kabuk olmasıdır. Hatırladığım kadarıyla, Linus Torvalds’ın erken Linux çekirdeklerinde çalıştırdığı ilk birkaç programdan biriydi.

Bash’in geleceğini nerede görüyorsunuz?

Bash hem etkileşimli bir ortam hem de bir programlama dili olarak gelişmeye devam edecek. İlgilenen kullanıcıların kabuğu yeni yollarla genişletmesine olanak tanıyacak daha fazla özellik eklemek istiyorum. Programlanabilir tamamlama sistemi bu tür bir genişletmeye örnektir. Bash’in evrimi her zaman kullanıcı odaklı oldu, bu nedenle nihayetinde gelen özellik taleplerine bağlı olacaktır.

Bilgisayar programlama dillerinin gelecekte, özellikle önümüzdeki beş ila yirmi yıl içinde nereye gittiğini görüyorsunuz?

Daha fazla dinamizm görüyorum; özellikle Web üzerinde, programcıların anında giderek daha karmaşık işler yapabilmesini sağlayan bir yönelim. Donanımdaki ilerlemeler, bugün yorumlanan kodun, bash üzerinde çalışmaya başladığım dönemde mevcut olan bazı sistemlerdeki derlenmiş koddan daha hızlı çalışmasına olanak tanıyor.

Yeni yetişen programcılara herhangi bir tavsiyeniz var mı?

İlginizi çeken bir alan bulun ve mevcut bir topluluğa dâhil olun. Programlamanın hemen her alanında özgür yazılım projeleri var. Somut ayrıntılar – hangi dili kullandığınız, hangi programlama ortamını kullandığınız, çalışmanızı nerede yaptığınız – işe kattığınız tutku ve ilgi kadar önemli değildir.

Eklemek istediğiniz başka bir şey var mı?

Özgür yazılım topluluğu bugün hâlâ, hatta belki de ilk dâhil olduğum zamankinden daha da canlı. Önemli katkılar için hâlâ çok fazla alan var; tek gereken iyi bir fikre sahip ilgili bir kişi.