maker
Wails Notlarım
5 Ağustos 2025 · 5 dk okuma
QBasic ile Başlayan Yolculuk
İlk uygulamamı QBasic 4.5 ile yapıp satmıştım.
Tabii ki müthiş bir ticaret değildi. Bir müşteri, ekranda girdiği değeri birkaç formülden geçirip çıktı üretmemi
istemişti.
Basit haliyle programlanabilir bir hesap makinesinden farksızdı. Çok kısa sürede bitti, karşılığında da “harçlık”
sayılabilecek bir ücret aldım.
QBasic arayüzü.
O günden sonra DOS’un sınırlı renkleriyle hazırlanmış arayüzler hep dikkatimi çekmeye başladı.
DOS döneminin tipik iş uygulamaları.
DOS döneminin tipik iş uygulamaları.
O dönem otobüs bileti satan büroların, muhasebe firmalarının ekranları bana harika UX tasarımları gibi görünüyordu.
80 sütun, 25 satır… ama kullanıcı için işlevsel, hızlı ve anlaşılır.
Hatta bugün tekrar popülerleşen TUI kategorisindeki gelişmelerden nasıl mutlu oluyorum anlatamam.
Windows ve İlk Masaüstü Deneyimlerim
MS-DOS yerini Windows’a bıraktı. Basit işlemcili bilgisayarlara bol disketle kurulan Windows, bilgisayar dünyasını bambaşka bir noktaya taşıdı.
İlk masaüstü uygulamamı mIRC script diliyle yazdım.
Şimdi düşününce saçma gelse de, sırf öğrenme eğrisi çok kolay olduğu için IRC dışı bir uygulamayı mIRC ile
geliştirdim.
Teoride basit bir ders programı takip yazılımıydı. Butonları bile Paint ile çizmiştim.
mIRC ile ilgili ekran görüntüleri.
Visual Basic 6.0: Gerçek Paket Programlar
Sonra Visual Basic 6.0 ile tanıştım.
Bu, benim için büyük bir aşk oldu. Tek taraflı mıydı yoksa o da beni seviyor muydu, bilmiyorum :)
Visual Basic 6.0 IDE’si.
Gerçek anlamda yazdığım ilk “paket programı” VS6.0 ile oldu.
O zamanlar adını koyamasam da object ve event bazlı çalışma mantığı ve IDE’nin büyülü ortamı beni etkiledi.
Bir dönem “ocx madencisi” gibi system dizinindeki OCX dosyalarını denemekle meşguldüm.
Her yeni kütüphane, yeni bir oyuncak gibiydi.
Platform Bağımsızlık Arayışı
Zamanla cihazlar çeşitlendi: Windows, Linux, macOS…
Her evde, her işyerinde farklı sistemler çalışmaya başladı.
Bu da platform bağımsız uygulamalara olan ihtiyacı artırdı.
Basit OCX kontrolleriyle idare edilen günler geride kaldı.
Toolkit’ler devreye girdi.
Sonra Web 2.0 geldi.
Masaüstü uygulamalarına harcanan emek yavaş yavaş web’e kaydı.
Sonrası zaten malum…
Belki bu zaman çizelgesinde atladığım noktalar vardır. Neticede ben artık yaşlı bir insanım :) Mazur görün.
Electron: Güzel Ama Ağır
Bugün geldiğimiz noktada ne masaüstü uygulamalarından kurtulabildik, ne de tamamen onlara bağımlı kaldık.
Cross-platform uygulama geliştirme hâlâ çok önemli bir ihtiyaç.
Üstelik bu denkleme mobil uygulamalar da dahil oldu.
Son yıllarda hayatımıza giren Electron bu ihtiyacı büyük ölçüde karşıladı.
JavaScript, Node.js ve TypeScript ile birçok işimi çözebiliyorum.
Bir masaüstü uygulamasını tamamen JS ile geliştirme fikri çok heyecan verici.
Ama iş pratiğe dökülünce durum değişiyor.
Özellikle:
- İşletim sistemi API’leriyle doğrudan haberleşmek gerektiğinde,
- Küçük ve optimize build çıktıları hedeflendiğinde,
Electron keyif kaçırıcı olabiliyor.
React veya Vue ile arayüz geliştirmek çok keyifli olsa da OS ile iletişim kısmı için daha kolay çözümler aramaya
başladım.
Tauri: Güzel Ama Zor
Bu noktada Tauri ile yollarım kesişti.
Backend’de Rust, frontend’de istediğimiz framework.
Üstelik Chrome’u içine gömmediği için build boyutları çok küçük.
Ama Rust tarafı bana epey zor geldi.
Config dosyalarıyla uğraş, command yapısıyla boğuş…
Rust’u bilenler için keyifli ama benim için değil.
Sonunda fark ettim ki işimi kolaylaştırması gereken araç, bana ekstra yük oluyordu.
Wails: Aradığım Çözüm
Ve Wails…
İhtiyaç Listem
- Kolay adapte olup geliştirme yapabilmek
- Kolay şekilde cross-platform build alabilmek
- Dosya boyutunun küçük olması
- Derleme sonrası sürprizlerin olmaması
- Dahili bir GC (çöp toplayıcı) olması
- İşletim sistemi özelinde çözümler için beni JS ile uğraştırmaması
- İstediğim frontend kütüphanesiyle ek adaptör olmadan geliştirme yapabilmek
Electron vs Tauri vs Wails
| Özellik | Electron | Tauri | Wails |
|---|---|---|---|
| Backend dili | Node.js | Rust | Go |
| Frontend esnekliği | React, Vue, Angular, Svelte vs. | React, Vue, Angular vs. | React, Vue, Angular vs. |
| Dosya boyutu | 150+ MB | 10-20 MB | 10-25 MB |
| Performans | Ağır | Hızlı ama Rust bilgisi şart | Hızlı ve dengeli |
| CORS sorunları | Var | Yok | Yok |
| Öğrenme eğrisi | Düşük | Dik | Orta (Go öğrenmek kolay) |
| OS API erişimi | Zor | Güçlü ama karmaşık | Basit ve temiz |
| Build süreci | Ağır | Orta | Hızlı ve sorunsuz |
Wails’in Öne Çıkan Avantajları
- Gerçek cross-platform deneyimi: Tek komutla Windows, macOS ve Linux build’i.
- Küçük dosya boyutu: Electron’un 150 MB’lık dev paketleri yerine 20 MB civarında build.
- Go ile güçlü backend: Rust kadar karmaşık değil. Concurrency, file I/O, API entegrasyonu çok kolay.
- Doğrudan OS API erişimi: CORS sorunlarıyla uğraşmak yerine Go’da 5 satırlık fonksiyon yazıp JS’den çağırıyorsun.
- Frontend özgürlüğü: React, Vue, Svelte veya Angular… Ne istersen doğrudan kullanabiliyorsun.
- Stabil build süreci: “Bende çalışıyordu ama Windows’ta açılmadı” dönemi sona eriyor.
Basit Bir Senaryo
Diyelim ki bir uygulamada:
- Kullanıcıdan bir CSV dosyası alıyorsun,
- Go backend ile parse edip işliyorsun,
- Vue arayüzünde tablo olarak gösteriyorsun,
- Aynı anda bir API’ye fetch atıyorsun ve CORS derdine düşmüyorsun.
Electron ile yapsan: 200 MB paket ve karmaşık config.
Tauri ile yapsan: Rust öğrenmek şart.
Wails ile: Go’nun sadeliği sayesinde az kod, az dert.
Sonuç
QBasic ile yazdığım o basit hesap makinesinden
Wails ile geliştirdiğim cross-platform uygulamalara…
Yol uzun ama his aynı: bilgisayarın sana boyundan büyük işler yaptırabilmesi.
Ve benim için şu an o hisin adı: Wails.