İnsanların Electron Hakkında Yanlış Bildiği Şeyler
(felixrieseberg.com)- Yazar Felix Rieseberg, Electron geliştirmesinde 10 yılı aşkın süredir yer alan bir co-maintainer
- Electron, kullanıcı arayüzünü web teknolojileriyle geliştirmeyi sağlar ve gerekirse yerel kodu buna serbestçe karıştırmaya imkan tanır
- Birçok uygulama (Visual Studio Code, Slack, Discord, Figma, ChatGPT, Claude, Notion, 1Password, Docker Desktop vb.) Electron kullanıyor
- Bu yazı, Electron hakkındaki başlıca yanlış anlamaları ele alıyor ve bu tercihlerin neden yapıldığını açıklıyor
Electron, JavaScript ile yerel kodu karşı karşıya getirir
- Sıkça "Electron yalnızca JavaScript kullandığı için yerel uygulamalardan geri kalır" denir
- Gerçekte Electron, JavaScript'e ek olarak C++, Objective-C, Rust gibi yerel dillerde yazılmış kodların birlikte kullanılmasına imkan verir
- Örneğin 1Password, kodunun büyük bölümünü Rust ile yazıyor ve kullanıcı arayüzü için Electron'dan yararlanıyor
- Electron'un güçlü yanı, gerektiği kadar yerel kodu karıştırabilme ve kullanıcı arayüzü katmanında web teknolojilerini kullanabilme esnekliğidir
- SwiftUI, GTK, Win32 gibi araçlarla kısmen yerel kullanıcı arayüzü sunan demo örnekleri de mevcut
Web uygulamaları kötüdür
- "Tüm yerel uygulamalar her zaman daha üstündür" görüşü yaygın olsa da, pazarın gerçekleri bu kadar basit değil
- NASA'nın Mission Control'ü, Bloomberg Terminal, McDonald’s kioskları ve SpaceX'in Dragon 2'si de Chromium tabanlı web teknolojilerinden yararlanıyor
- Web teknolojileri dünya çapında en yaygın kullanılan teknolojiler arasında ve iyi geliştirilmiş web uygulamaları mükemmel bir kullanıcı deneyimi sunabiliyor
- "Web uygulamalarını yetkin olmayan insanlar yapar" iddiası, kullanım ortamının gereksinimlerini ve geliştiricilerin seçim koşullarını hesaba katmayan aşırı basitleştirilmiş bir yaklaşım
İşletim sistemi WebView'ı daha yüksek performans sunar
- macOS, Windows veya Linux'a gömülü WebView'ın çoğu zaman daha iyi olduğunu savunanlar var
- Gerçekte Slack, ilk başta MacGap'i (WebView tabanlı) kullandı, ancak performans sorunları nedeniyle sonunda Electron'u (Chromium) benimsedi
- Modern Chromium motoru daha fazla kaynak tüketse de, en yoğun optimizasyon çalışmalarının yapıldığı alanlardan biri de burası
- İşletim sistemine gömülü WebView, paylaşılan kaynaklar sayesinde daha düşük bellek kullanımı gösteriyor gibi görünebilir; ancak güvenlik ve kararlılık nedenleriyle pratikte çoğu zaman izole çalışır
- Electron sayesinde en güncel motor sürümü doğrudan yönetilebilir ve böylece kararlılık ile güvenlik bağımsız biçimde korunabilir
Paket boyutu önemlidir
- Genel olarak Electron uygulamaları 100~300MB civarında oluyor ve bu durum eleştiriliyor
- Ancak kullanıcılar, uygulamanın kapladığı alandan çok işlevler, kullanım kolaylığı ve kararlılık gibi unsurlara öncelik verme eğiliminde
- Örneğin 4K kalitede Netflix yayını bir saatte birkaç GB veri kullanabiliyor ve Call of Duty güncellemeleri yüzlerce GB'a ulaşabiliyor
- Sonuçta uygulama boyutu, gerçek kullanıcı memnuniyetine kıyasla çoğu zaman görece daha az önemli bir unsur haline geliyor
Electron'u yenin
- Electron, "iyi masaüstü uygulamaları yapalım" hedefini taşıyan insanların açık kaynak çabası olarak başladı
- Electron, az sayıda rakibin olduğu bir ortamda ortaya çıktı ve bugün de yeterli özellik ile kararlılık sunmayı sürdürüyor
- Electron'u "yenmek" için, Electron'un yaptığını ondan daha iyi yapabilen bir platform oluşturmak gerekiyor
- Electron bakımcıları, daha iyi bir alternatif çıkarsa bunu memnuniyetle karşılayacaktır
15 yorum
Bunu Call of Duty ile kıyaslamak biraz konu dışı görünüyor.
Electron'ı bırakıp WebView'e geçen Teams'e bakmak gerekiyor,
https://techcommunity.microsoft.com/discussions/microsoftteams/…
Umarım Tauri bir an önce olgunlaşır. Gerçi ben zaten onu gayet iyi kullanıyorum.
Atom Shell olduğu günler daha dün gibiydi.. epey gelişmiş.
Eleştirilecek çeşitli noktalar var ama her gün kullandığımız VSCode uygulamasının olgunluk düzeyine bakınca, Electron’un katkısının hiç de az olmadığını düşünmemek elde değil.
Bilgisayarıma kurulu Electron uygulaması sayısı neredeyse 10'a ulaştı; bu noktada artık ayrı kurulan bir framework olması gerekmiyor mu diye düşünmeden edemiyorum.
Bundle boyutu da öyle, bir de
~~ Helpersürecinin belleği sömürdüğünü görünce insanın sadece iç çekesi geliyor.Tauri'yi bir alternatif olarak düşünüyorum ama dağıtım sırasında normal çalışmayan istisnai durumlar olur mu diye endişeleniyorum. (Eskiden win32 ortamında
msxml.dllgibi varsayılan olarak kayıtlı DLL'lere başvuran bir program dağıtmıştım ve gerçekten çok uğraşmıştım; bu yüzden bağımlılıkları içselleştirip dağıtmıştım... benzer bir sorun çıkmaz mı diye düşünüyorum.)Electron tarafının dediği gibi, galiba boyutu tamamen kafaya takmamak gerekiyor ama bundle boyutu gerçekten çok büyük.
Sanırım sorun Tauri’de bu..
Platforma göre WebView’ler ve gömülü programlar farklı olduğu için en büyük sorun da bu aslında. Dağıtımdan sonra ne olacağını bilemiyorsunuz.
Ama Tauri’ye WebView’in kendisini gömelim deseniz, bu kez paket boyutu Electron’dan da büyük oluyor..
Bu yüzden production düzeyinde çapraz platform uygulama geliştirme açısından Tauri’nin hâlâ olgunlaşmadığını düşünüyorum.
McDonald’s kioskları... şey... bunun iyi bir örnek olup olmadığından emin değilim
Benim de bir an aklıma aynı şey geldi. Acaba yurt dışındaki McDonald's kioskları yine de biraz farklı mı? Bir an öyle düşündüm haha
Hahahahaha, ben de tamamen aynı şeyi düşündüm
Bellek kullanımını azaltmanın en büyük zorluk olduğu anlaşılıyor; ne yazık ki paydaşlardan hiçbirinin bunu hayata geçirecek bir motivasyonu varmış gibi görünmüyor.
Metinde gerçek demo kodu bağlantısı verildiği için göz atıp kontrol ettim; "oldukça basit, birlikte kullanılabilir" denecek kadar kolay bir izlenim vermiyor. Şimdilik en fazla mümkün olduğuna anlam yüklemek gerekiyor gibi...
Görünüşe göre genel olarak uygulamanın büyük olduğu doğruymuş..
Evet, paket boyutunu usulca kabul ediyorlar.