7 puan yazan baeba 3 시간 전 | 4 yorum | WhatsApp'ta paylaş

SQLite’ın yaratıcısının açıkladığı 26 yıllık başarı sırrı; ihtiyaç duyduğu araçları bizzat geliştirmesi, dış katkıları en aza indirmesi ve titiz testlerle kod kalitesini koruması.
Bu da, karmaşık açık kaynak ekosisteminde sıkça gözden kaçan “özgürlük”ün özünü gösteriyor.


İçindekiler

  1. SQLite’ın yaratıcısı Richard Hipp’in 26 yıllık kod yolculuğu


1. SQLite’ın yaratıcısı Richard Hipp’in 26 yıllık kod yolculuğu

SQLite’ın yaratıcısı Richard Hipp, 26 yıllık kod geliştirme yolculuğu boyunca şu felsefeyi hayata geçirdi:

  • İhtiyaç duyduğu araçları kendisi geliştirir.
  • Dışarıdan kod katkılarını en aza indirir.
  • Titiz testlerle kod kalitesini korur.
  • Dış bağımlılıkları azaltarak geliştirme özgürlüğünü güvence altına alır.

1.1. SQLite’ın doğuşu: savaş gemisinde başlayan problem çözümü

Savaş gemisi projesinde başlayan SQLite

  • SQLite, USS Oscar Austin ile ilgili bir sözleşme işinden doğdu.
  • O dönemde Richard Hipp, General Dynamics’in yüklenicisi olarak Bath Iron Works’ün DDG-79 gemi inşa projesinde görev alıyordu.
  • Geminin hasar kontrol bilgi sistemi geliştirme sürecinde sorunlar yaşandı.
  • Başka bir şirket milyonlarca dolar harcamıştı ama ortaya düzgün çalışan bir sonuç çıkaramamıştı.

Mevcut veritabanı sistemlerinin sınırları

  • Richard Hipp, hasar kontrol sistemindeki sorunu çözmek için hızlı, sezgisel kurallara dayalı bir yazılım geliştirdi.
  • Ancak veri saklama için kullanılan Informix veritabanı motoru durdurulduğunda yazılımın da çalışmaması gibi bir sorun vardı.
  • Sistem yöneticisi veritabanı motorunu kapatmış olsa bile yazılım çalışmaya devam etmeliydi.
  • Bu nedenle, ayrı bir veritabanı süreci olmadan uygulamanın diskteki veriyi doğrudan okuyabildiği bir yaklaşım üzerinde düşünmeye başladı.
  • O dönemde bu gereksinimi karşılayan bir SQL veritabanı motoru bulmak zordu; bu yüzden bunu kendisi geliştirmek zorunda kaldı.

Kendi kendine başlayan ilişkisel veritabanı araştırması

  • O yıllarda internet araması bugünkü kadar yaygın değildi.
  • Richard Hipp, yerel üniversite kütüphanesinde ilgili kaynakları bulup ilişkisel veritabanı teknolojilerini inceledi.
  • O dönemde MIT, Harvard, Berkeley gibi kurumlarda ilişkisel veritabanı araştırmaları oldukça aktifti.
  • Ancak coğrafi kısıtlar nedeniyle en güncel araştırma bilgilerine kolayca erişemiyordu.
  • Sonunda ihtiyaç duyduğu veritabanı teknolojisini kendisi araştırıp uyguladı.

1.2. SQLite’ın büyümesi ve ticari başarısı

Gelir amacı olmadan başlayan proje

  • SQLite baştan itibaren gelir elde etmek amacıyla geliştirilen bir yazılım değildi.
  • İlk sürüm ücretsiz yazılım olarak yayımlandı.
  • Geliştirildiği sırada bunun üzerinden iş kurma ya da gelir elde etme planı yoktu.

Motorola ile ilk ticari sözleşme

  • SQLite yayımlandıktan birkaç yıl sonra cep telefonu üreticisi Motorola kendileriyle iletişime geçti.
  • Motorola, SQLite’ı kendi cep telefonlarında kullanmak istiyordu.
  • Bu sayede SQLite’ın ilk ticari sözleşmesi imzalandı.
  • Sözleşme, kullanım miktarına bağlı lisans modeliyle değil sabit ücret modeliyle yapıldı.

AOL ile iş birliği

  • Daha sonra America Online (AOL) da CD-ROM paketlerine SQLite eklemek için bir sözleşme yaptı.
  • Bu anlaşma da sabit ücret esasına dayanıyordu.
  • Richard Hipp, o dönemde sözleşme tutarının SQLite’ın değerine kıyasla görece düşük olduğunu değerlendirdi.

Symbian OS’nin SQLite tercihi

  • Nokia gibi üreticilerin telefonlarında kullanılan Symbian OS, veritabanı motorunu seçmek için kör testler gerçekleştirdi.
  • Toplam 10 veritabanı motoru değerlendirmeye alındı.
  • Testlerin sonunda SQLite seçildi.
  • Bu süreçte SQLite’ın tek bir kilit geliştiriciye fazlasıyla bağımlı olduğu sorunu gündeme geldi.
  • Sözde bus factor’ı artırmak için bir konsorsiyum kurmaları önerildi.

Bus factor
Bir projenin kilit çalışanlarından birkaçının aniden işi sürdüremez hale gelmesi durumunda projenin ayakta kalıp kalamayacağını gösteren ölçüttür.
Bus factor’ın 1 olması, tek bir çekirdek geliştiricinin ayrılması halinde projeyi sürdürmenin zorlaşabileceği anlamına gelir.

Konsorsiyumun kurulması ve tam zamanlı geliştirme

  • Mozilla’dan Mitchell Baker, konsorsiyum kurulması konusunda tavsiye verdi.
  • Bunun üzerine SQLite Consortium kuruldu.
  • Konsorsiyumun kurulmasının ardından Richard Hipp, SQLite geliştirmesini tam zamanlı olarak yürütmeye başladı.
  • Birkaç çalışan işe alarak küçük ama sürdürülebilir bir geliştirme organizasyonu işletmeye başladı.

2050’ye kadar uzun vadeli destek planı

  • 2010’da Airbus, A350 uçak projesinin aviyonik ekipmanlarında SQLite kullanmak istedi.
  • Airbus, SQLite’ın uzun vadede korunup desteklenip desteklenemeyeceğini sordu.
  • Uçak gövdesinin yaklaşık 40 yıllık ömrü dikkate alınarak uzun süreli destek sözü verildi.
  • Bu söz, hukuki bir yükümlülükten çok SQLite projesinin benimsediği uzun vadeli hedefe yakındı.
  • Richard Hipp bugün SQLite için kişisel destek bitiş hedefini 2050 olarak belirlemiş durumda.
  • Bu hedef, verinin beklenen ömründen daha uzun süre kodu koruma anlayışıyla, yani bir bakıma “önce veri, koda ise 50 yıl daha” yaklaşımıyla belirlendi.

1.3. Lisans, açık kaynak felsefesi ve kendi araçlarını geliştirme

“Dua” lisansının doğuşu

  • SQLite sürüm 1, GDBM kütüphanesine bağımlıydı.
  • GDBM GPL lisansı kullandığı için SQLite da kaçınılmaz olarak GPL’den etkileniyordu.
  • Daha sonra aralık sorgularını desteklemek için B-tree tabanlı kendi depolama arka ucunu geliştirdi.
  • Dış kütüphane bağımlılığı ortadan kalkınca lisansı özgürce seçebilir hale geldi.

Public Domain seçimi

  • O dönemde yaygın olarak bilinen lisanslar MIT ve Berkeley lisanslarıydı.
  • Richard Hipp, karmaşık hukuki maddeler içeren bir lisans kullanmak yerine SQLite’ı Public Domain olarak yayımladı.
  • Daha sonra Public Domain kavramının her ülkede aynı şekilde tanınmadığını öğrendi.
  • Buna rağmen SQLite’ın yayımlanma politikası sonuçta açık kaynak lisanslarına benzer biçimde kabul görüyor.

“Dua metni” ifadesi

SQLite kaynak kodunun başlık bölümünde, sıradan hukuki ifadeler yerine bir kutsama ya da duaya yakın bir metin yer aldı.

May you do good and not evil.
May you find forgiveness for yourself and forgive others.
May you share freely, never taking more than you give.

SQLite dünyanın en yaygın kullanılan yazılım kütüphanelerinden biri haline geldikçe, bu ifade de onun kendine özgü lisans felsefesinin simgesi oldu.

Dış katkıları en aza indiren geliştirme biçimi

  • SQLite, tipik bir açık kaynak projesi gibi pull request’leri aktif biçimde kabul etmez.
  • Dış katkıları en aza indirir ve çekirdek geliştirme ekibinin kodu bizzat yazıp yönettiği modeli sürdürür.
  • Richard Hipp, pull request’leri **“bedava yavru köpek”**e benzetir.
  • Bir yavru köpeği ücretsiz alsanız bile sonrasında bakım ve sorumluluk gerektirdiği gibi, dışarıdan kod almak da şu uzun vadeli yükleri beraberinde getirir:
    • kod bakımı
    • test
    • dokümantasyon
    • hata düzeltmeleri
    • diğer platformlarla uyumluluğun yönetimi
    • uzun vadeli teknik sorumluluk
  • Dış katkıları sınırlayan bu yaklaşım, SQLite’ın 26 yıldan uzun süre boyunca tutarlı kaliteyi ve yönü koruyabilmesinin nedenlerinden biri oldu.

Kendi araçlarını geliştirme örnekleri

Fossil
  • Fossil, SQLite projesini yönetmek için geliştirilmiş kendi sürüm kontrol sistemidir.
  • Git ile benzer dönemde geliştirildi.
  • Yalnızca kaynak kod yönetimi değil, şu işlevleri de bütünleşik olarak sunar:
    • sürüm kontrolü
    • issue takibi
    • wiki
    • forum
    • web arayüzü
  • Fossil’in kendisi de SQLite üzerine inşa edildi.
  • Bu yüzden Fossil, SQLite için fiili bir beta test platformu görevi de görür.
  • Fossil’i geliştirip işletme sürecinde, uygulama geliştiricisinin bakış açısından SQLite’ın sorunlarını fark edip iyileştirebildiler.
  • Richard Hipp’e göre Git, Linux çekirdeği gibi büyük ölçekli dağıtık projelere uygunken; SQLite gibi küçük ölçekli projeler için Fossil daha uygundur.
Lemon
  • Lemon, SQLite’ın SQL parser’ını üretmek için geliştirilmiş bir araçtır.
  • Yacc ya da Bison kullanmak yerine bunu kendisi yaptı.
  • Kendi aracı olduğu için parser üretim yöntemini SQLite’ın ihtiyaçlarına göre özgürce iyileştirebildi.

Kendi araçları ve özgürlük felsefesi

  • Richard Hipp için kendi araçlarını geliştirmek yalnızca teknik bir tercih değildir.
  • İhtiyaç duyduğu aracı bizzat yapmak, kendine özen göstermenin bir biçimidir.
  • Dış bağımlılıkları azaltınca başka projelerin ya da şirketlerin kararlarından daha az etkilenirsiniz.
  • Ona göre bu bağımsızlık, geliştiricinin özgürlüğünü genişletir.
  • Yine de SQLite’ın dünyanın sayısız sisteminde kritik bir bağımlılık olarak kullanılmasının yarattığı yükü ve kaygıyı da taşıyor.

1.4. Titiz testler ve yapay zeka çağında yazılım geliştirme

SQLite başarısının anahtarı olan testler

  • SQLite’ın uzun süre kararlılığını koruyabilmesinin temel nedenlerinden biri son derece titiz testlerdir.
  • SQLite geliştirme ekibi yalnızca bir özelliğin çalışıp çalışmadığını kontrol etmekle kalmaz; farklı istisna durumlarını ve platformları da doğrular.
  • Hatta test kodunun miktarı, gerçek ürün kodundan çok daha fazla olacak kadar testlere önem verilir.

DO-178B standardının uygulanması

  • SQLite geliştirme ekibi, uçak yazılımı geliştirme standardı olan DO-178B yaklaşımını testlerine uyguladı.
  • Bu sayede test kapsamını sistematik biçimde yükseltti.
  • Android geliştirmesinin ilk aşamalarında DO-178B düzeyinde test kapsamına ulaştıktan sonra hata raporlarının neredeyse ortadan kaybolduğunu deneyimledi.
  • Bu deneyim, titiz testlerin gerçek yazılım kararlılığını doğrudan artırdığını gösterdi.

Fuzzing ile yeni hataların bulunması

  • Daha sonra profile-guided fuzzing tekniği ortaya çıktı.
  • Fuzzing, rastgele ya da dönüştürülmüş verileri programa vererek beklenmeyen hataları bulma yöntemidir.
  • Mevcut DO-178C düzeyindeki testlerle bile ortaya çıkarılması zor yeni hata türleri fuzzing sayesinde bulundu.
  • Bu da yüksek test kapsamının tek başına tüm hataları bulmaya yetmediğini gösterir.

Yapay zekanın bulduğu hatalar

  • Son dönemde yapay zekayı kullanarak hata arayan ya da hata raporu yazan örnekler de ortaya çıkıyor.
  • SQLite projesine de yapay zeka tarafından üretilmiş olabileceğinden şüphe edilen hata raporları ulaşmıştı.
  • Yapay zeka, mevcut test ve fuzzing yöntemlerini tamamlayan yeni bir yazılım doğrulama aracı olma potansiyeline sahip.

Richard Hipp’in yapay zeka değerlendirmesi

  • Richard Hipp, yapay zeka hakkındaki düşüncelerinin her gün değişebileceğini söylüyor.
  • Şu an için yapay zekayı çok yararlı bir araç olarak kullanıyor.
  • ChatGPT’ye SQLite kodu hakkında soru sorduğunda yapay zekanın ona şu şekilde yanıt verdiği bir deneyimini anlattı:

“Elbette siz de biliyorsunuzdur ama…”

  • Kendi yazdığı kod hakkında yapay zekanın sanki kendisinden daha iyi biliyormuş gibi konuşmasının biraz ürkütücü geldiğini söyledi.
  • Yapay zeka, bilgi aramak ve fikir edinmek için faydalıdır.
  • Ancak her zaman doğru değildir ve çok ikna edici bir üslupla yanlış bilgi verebilir.
  • Yapay zeka tarafından üretilen kodlar, belirli bir işletim sisteminde çalışıp başka birinde çalışmama gibi uyumluluk sorunları da yaratabiliyordu.
  • Bu yüzden yapay zekanın ürettikleri de insanlar tarafından doğrudan gözden geçirilip düzeltilmelidir.

Genç geliştiricilere tavsiye

  • Richard Hipp, SQLite’ı fork’layıp daha iyi bir veritabanı yapmaya yönelik girişimleri memnuniyetle karşılıyor.
  • Ancak SQLite düzeyine ulaşmak için şu unsurların gerektiğini özellikle vurguluyor:
    • 25 yılı aşan kesintisiz geliştirme
    • tek bir konuya saplantılı düzeyde adanmışlık
    • uzun vadeli test ve iyileştirme
    • kullanıcı ihtiyaçlarının sürekli gözlemlenmesi
    • tekrar eden başarısızlıklardan biriken deneyim
  • Harika yazılımlar kısa sürede ortaya çıkmaz.
  • Yapay zeka nedeniyle yazılım geliştirmenin büyük ölçüde değişebileceğini, ancak geleceğin tam olarak nasıl görüneceğini öngörmenin zor olduğunu değerlendiriyor.

1.5. SQLite’ın sürdürülebilirliği ve insani yönü

26 yıl boyunca sürebilmesinin nedeni

  • Richard Hipp, SQLite’ın başarısını kendi yeteneğinden çok ilahi takdir ve şansla açıklar.
  • Kendisini özel derecede üstün bir programcı olarak görmediğini söyler.
  • Yine de şu eğilimlerinin SQLite’ın gelişimine yardımcı olduğunu düşünür:
    • kendi yöntemini inatla koruma tutumu
    • yerleşik kabulleri sorgulama eğilimi
    • ihtiyaç duyduğu araçları bizzat üretme alışkanlığı
    • uzun süre tek bir probleme odaklanabilme
    • geliştirme sürecinin kendisinden keyif alma yaklaşımı
  • SQLite’ı geliştirirken onu nasıl daha iyi hale getirebileceğini sürekli düşünme sürecinin kendisinin önemli olduğunu söylüyor.

Küçük ekibin avantajları

  • Richard Hipp, çok sayıda insanla yakın ilişki kurma ya da kurum içi siyasi ilişkileri yönetme konusunda becerikli olmadığını söylüyor.
  • Bu kişiliği nedeniyle SQLite geliştirme ekibini küçük tuttu.
  • Sonuç olarak küçük ekip yapısının, SQLite’ın tutarlı yönünü ve hızlı karar alma kabiliyetini desteklediğini düşünüyor.
  • Linux’taki Linus Torvalds gibi çok sayıda geliştiriciyle ilişkileri koordine etme becerisine sahip olmadığını da kabul ediyor.

Eşi Ginger ile şirket yönetimi

  • Richard Hipp, şirketi eşi Ginger ile birlikte yönetiyor.
  • İkili, duruma göre birbirlerinin unvanlarını değiştirecek kadar esnek bir ekip çalışmasını sürdürüyor.
  • Ginger bir müzisyen ve bilgisayar sorunları yaşayan diğer müzisyenlere yardım etmede oldukça başarılı.
  • Richard Hipp, yerel toplulukta Ginger’ın kendisinden daha tanınmış olduğunu söylüyor.

Yazılım geliştirmenin insani yönü

  • Richard Hipp, yazılımı yalnızca kod ya da teknik bileşenlerin toplamı olarak görmüyor.
  • Geliştiricilerin duyguları, iş birliği ilişkileri, takıntıları, başarısızlıkları ve başarı hissi gibi insani unsurların yazılım geliştirmede önemli olduğunu vurguluyor.
  • Yazılım karmaşık ve soyut bir ürün olsa da arkasında onu yapan insanların hikâyeleri bulunur.

Önerilen kitap: 《The Soul of a New Machine》

  • Richard Hipp, yazılımın ve bilgisayar geliştirmenin insani yönünü anlamaya yardımcı olacak bir kitap olarak 《The Soul of a New Machine》 adlı eseri öneriyor.
  • Bu kitap yalnızca bilgisayar teknolojisini açıklamakla kalmıyor.
  • Yeni bir bilgisayar geliştirme sürecinde ortaya çıkan şu unsurları da ele alıyor:
    • geliştiricilerin tutkusu
    • organizasyon içi çatışmalar
    • teknik zorluklar
    • başarısızlık ve hayal kırıklığı
    • iş birliği ve rekabet
    • yaratım sürecindeki duygular
  • Karmaşık teknolojileri derinlemesine anlayıp bunları aynı zamanda insani bir hikâye olarak aktarabilme becerisinin önemli olduğunu vurguluyor.

Sonuç

SQLite’ın 26 yılı aşkın süredir başarıyla sürdürülebilmesinin nedeni yalnızca üstün teknik yetkinlik değil.

Başarıyı getiren temel etkenler şöyle özetlenebilir:

  1. Gerçek problemleri çözmek için gereken teknolojiyi bizzat geliştirdi.
  2. Dış bağımlılıkları azaltıp projenin kontrolünü elinde tuttu.
  3. Dış katkılardan çok uzun vadeli bakım sorumluluğunu önemsedi.
  4. Fossil ve Lemon gibi ihtiyaç duyduğu araçları kendisi yaptı.
  5. Havacılık yazılımı düzeyinde titiz testler uyguladı.
  6. Yapay zeka ve yeni geliştirme tekniklerinden yararlandı ama sonuçlara körü körüne güvenmedi.
  7. Projeyi küçük bir ekip ve insani ilişkiler temelinde yürüttü.
  8. Tek bir konuya uzun süre, ısrarla odaklandı.

SQLite örneğinin gösterdiği temel nokta şu: özgürlük, hiçbir kısıtın olmadığı bir durum değil; kullandığınız araçlar ve kod üzerinde sorumluluk alıp denetimi elinizde tutabildiğiniz durumdur.

Dış bağımlılıkları azaltan, gerekli araçları kendisi üreten ve her şeyi titizlikle doğrulayan SQLite geliştirme yaklaşımı, hızla değişen yapay zeka çağında bile sürdürülebilir yazılım geliştirmenin ne olduğuna dair önemli bir örnek sunuyor.

4 yorum

 
regentag 1 시간 전

RTCA'nın Do-178'i, gerçekten okunup uygulanabilecek kadar kısa bir kılavuzdur. Havacılık sektöründe yaygın olarak uygulanır.

https://studylib.net/doc/27132454/rtca-do-178b

 
hmmhmmhm 2 시간 전

"25 yıldan uzun süren kesintisiz geliştirme" gerçekten çok etkileyici...

 
cnaa97 2 시간 전

Harika görünüyor.. biraz film gibi de

 
toida 3 시간 전

Bakış açısı gerçekten çok harika.