1 puan yazan GN⁺ 2024-04-08 | 1 yorum | WhatsApp'ta paylaş
  • PumpkinOS, x86, ARM gibi modern mimarilerde çalışan bir PalmOS yeniden uygulaması ve PalmOS ROM’u olmadan m68K PalmOS uygulamalarını çalıştırabiliyor
  • Varsayılan çalışan uygulama Launcher; Preferences gelecekte ayar seçeneklerini barındıracak ve Command ise şimdilik deneysel bir komut kabuğu olarak sunuluyor
  • Bu sürüm, PalmOS’un 4 PIM uygulamasını içeriyor: AddressBook, MemoPad, ToDoList, DateBook; PalmOS SDK ile dağıtılmış kaynak kodları PumpkinOS’ta derlenecek şekilde düzenlenmiş
  • AddressBook ve MemoPad kayıtları PalmOS’taki karşılık gelen uygulamalarla uyumlu görünüyor; ancak word size ve endianness farkları nedeniyle ToDoList ve DateBook kayıtları uyumlu değil
  • Projenin tamamı hâlâ deneysel aşamada; bazı özellikler hiç test edilmedi ve Emscripten derlemelerinde yazılım tabanlı render, yüksek CPU kullanımı ve tarayıcı kilitlenmesi gibi sorunlar görülebilir

PumpkinOS’un hedefi ve kapsamı

  • PumpkinOS, PalmOS’u modern mimariler üzerinde yeniden uygulayan bir proje
    • Hedef mimariler arasında x86, ARM ve benzerleri yer alıyor
    • Tipik PalmOS emülatörlerinden farklı olarak PalmOS ROM’u gerektirmiyor
    • m68K PalmOS uygulamalarını çalıştırabiliyor
  • PumpkinOS’un çeşitli yönlerini ele alan yazı dizisi WordPress PalmOS kategorisi altında görülebilir

Temel uygulamalar ve mevcut durum

  • Launcher, PumpkinOS başladığında ilk çalışan uygulama
    • Diğer uygulamaları başlatabileceğiniz bir panel gösteriyor
  • Preferences, uzun vadede PumpkinOS ayar seçeneklerini barındıracak
  • Command, bir komut kabuğu ve hâlâ deneysel

Dahil edilen PalmOS PIM uygulamaları

  • Bu sürüm, PalmOS’un 4 PIM uygulamasını içeriyor
    • AddressBook
    • MemoPad
    • ToDoList
    • DateBook
  • Bu uygulamaların kaynak kodları, bir veya daha fazla PalmOS SDK sürümüyle dağıtılmıştı ve PumpkinOS’ta doğru şekilde derlenecek biçimde düzenlendi
  • Kayıt uyumluluğu uygulamaya göre değişiyor
    • AddressBook ve MemoPad ile oluşturulan kayıtlar, PalmOS’taki karşılık gelen uygulamalarla uyumlu görünüyor
    • ToDoList ve DateBook ile oluşturulan kayıtlar, word size ve endianness farkları nedeniyle uyumlu değil
  • Test kapsamı sınırlı
    • Yalnızca birkaç kayıt oluşturma ve düzenleme seviyesine kadar test edildi
    • Hâlâ bazı anormal davranışlar var
    • Bazı özellikler hiç test edilmedi
  • Şimdiki amaç, PumpkinOS’un gelecekte alacağı hâli önceden göstermek

Lisans

  • PumpkinOS, GPL v3 ile lisanslanmış
  • license dizini, PumpkinOS’ta kullanılan çeşitli bileşenlerin ayrı lisans bilgilerini içeriyor
  • Eksik ya da hatalı lisans bilgisi varsa bildirilmesi isteniyor

Derleme yöntemi

  • PumpkinOS’un kaynak koddan derlenmesi gerekiyor
    • IDE gerekmiyor
    • Komut satırından derlenebiliyor
  • Windows, Linux, WSL2

    • 64 bit Windows’ta MSYS2 kullanılabilir
    • MINGW64 terminalinde ek paketler kurulur
    pacman -S gcc binutils make git
    
    • 64 bit Linux tabanlı işletim sistemlerinde gcc, binutils, make, git gerekiyor
    • Linux’ta ayrıca SDL2 geliştirme paketi de kurulmalı
    • Debian tabanlı sistemlerde şu komut kullanılır
    sudo apt install gcc binutils make git libsdl2-dev
    
    • Windows 11 ve güncel Windows 10 sürümlerinde WSL2 üzerinde de derlenebilir
    • WSL2 terminalinde Linux derleme talimatları izlenebilir
  • Ortak derleme adımları

    • Depoyu klonlayın
    git clone https://github.com/migueletto/PumpkinOS.git
    
    • Kaynak dizinine geçip make çalıştırın
    cd PumpkinOS/src
    make
    
    • Derleme başarılı olursa şu çıktılar oluşur
    • Kök dizinde pumpkin çalıştırılabilir dosyası
    • bin dizininde dinamik kütüphaneler
    • vfs/app_install dizininde PRC dosyaları

Emscripten derlemesi ve web’de çalıştırma

  • Deneysel olarak Emscripten ile derleme yapılabiliyor
    • Emscripten kurulumu README kapsamı dışında
cd PumpkinOS/src
make OSNAME=Emscripten
  • Bu komut, src/emscripten klasörü içinde pumpkin.zip oluşturur
    • Bu zip dosyası, PumpkinOS’u bir web sunucusunda dağıtmak için gereken dosyaları içerir
  • Linux’un standart apache2 web sunucusu kullanılıyorsa örnek adımlar şöyle
    • /var/www/html/pumpkin klasörünü oluşturun
    • Zip dosyasını bu klasöre çıkarın
    • Yerel sunucuda tarayıcıyı /pumpkin/pumpkin.html adresiyle açarsanız PumpkinOS görüntülenebilir
  • Emscripten kaynak dizininde Python web sunucusu çalıştırma seçeneği de var
cd PumpkinOS/src/emscripten
python3 -m http.server 8080
  • Bu derleme hâlâ oldukça deneysel ve bazı kısıtları var
    • OS, tarayıcı ve GPU entegrasyon durumuna göre beklenmedik şekilde yazılım tabanlı render moduna düşebilir
    • Yüksek CPU kullanımı ve tarayıcı kilitlenmeleri yaşanabilir
    • Tarayıcı private mode’da çalıştırılırsa uygulama açılmaz
    • localhost dışındaki bir sunucuya HTTPS yerine HTTP ile erişilirse yüklenmez

Çalıştırma, kurulum, hata ayıklama

  • 64 bit Windows’ta pumpkin.bat çalıştırılır
  • Linux veya WSL2’de pumpkin.sh çalıştırılır
  • Çalıştırıldığında PumpkinOS yeni bir pencerede açılır
  • Başlatma sırasında vfs/app_install içindeki tüm PRC’ler kaldırılır ve vfs/app_storage içindeki klasöre açılır
  • Mevcut aşama genel olarak deneysel olduğu için çeşitli sorunlar olabilir
  • Çalıştırma başarılı olsun ya da olmasın, kök dizinde pumpkin.log dosyası oluşturulur
    • Sorun çıkarsa bu dosyada üçüncü sütununda "E" bulunan satırları kontrol edin
    • Soru ve log dosyasının iletilebileceği belirtiliyor
  • PumpkinOS, Drag & Drop desteği sunuyor
    • Bir PalmOS PRC dosyasını pencerenin üzerine sürükleyip bırakırsanız kurulur ve Launcher’da görünür
    • İsterseniz PRC’yi doğrudan vfs/app_install dizinine kopyalayıp PumpkinOS’u yeniden başlatabilirsiniz
  • İstenirse Windows, Linux ve WSL2 üzerinde gdb ile hata ayıklama yapılabilir
    • Windows’ta pumpkin.bat dosyasının son satırı şöyle değiştirilir
gdb.exe --args .\pumpkin.exe -d 1 -f pumpkin.log -s libscriptlua .\script\pumpkin.lua
  • Linux ve WSL2’de pumpkin.sh dosyasının son satırı şöyle değiştirilir
gdb --args ./pumpkin -d 1 -f pumpkin.log -s libscriptlua ./script/pumpkin.lua

1 yorum

 
GN⁺ 2024-04-08
Hacker News yorumları
  • Mountain View'daki Computer History Museum'a gidip sergi vitrinindeki Palm Pilot'ı görünce birden yaşlandığımı hissettim
    Daha 30 yıl kadar önce hayatımın önemli bir parçası olan bir şeyi, antik bir uygarlığın kalıntılarından çıkarılmış gibi sergilemek yasak olmalı. Çok haksızlık

    • Hâlâ tavan arasındaki bir kutuda eskiden kullandığım PalmPilot duruyor. Varlığının kendisi büyük bir hayat dersi olmuştu
      O zamanlar patronumdan bana bir tane almasını istemiştim, gerçekten de aldı; ama patronum “Şu an hayatını ve projeni düzenlemek için bir şey kullanıyor musun? Kullanmıyorsan PalmPilot da yardımcı olmaz gibi geliyor” demişti
      Gerçekten de haklıydı
    • Birkaç ay önce Reddit'te birinin dedesinin eski Game Boy'unu bulduğuna dair bir gönderi görmüştüm
    • Computer History Museum'da Dreamcast de sergileniyor; bu beni çok daha fazla rahatsız etmişti
      Beynimin bir köşesinde, ergenlik yıllarımdaki Dreamcast'in büyük bir geri dönüş yapmasını hâlâ bekleyen, çözülmemiş bir travma gibi duran bir parça var
    • London'daki Science Museum'da cep telefonları, bilgisayarlar ve konsolların toplandığı bir sergi odası var
      Partnerimle birlikte o zamana kadar sahip olduğumuz cihazları tek tek işaret etmek çok eğlenceli; onları yeniden görmek gerçekten keyifli
    • Hâlâ VisorPhone modüllü bir Visor'ım var. iPhone'dan 5 yıl önce çıkmış, ilk yalnızca dokunmatik akıllı telefon sayılabilir :)
      Büyük, kaba ve oldukça kullanışsızdı; ama Palm Desktop ile tamamen entegre deneyim çok akıcıydı. Sonraları Linux'ta jPilot kullandım
  • PumpkinOS projesi gerçekten inanılmaz. Sıradan bir Palm uygulamasının beklediği tüm sistem çağrılarıyla uyumlu hâle getirmek için ne kadar emek gerekmiş olabileceğini hayal edemiyorum
    Palm'ın bellek yönetiminde epey tuhaf şeyler yaptığını hatırlıyorum. Biraz büyük verileri, işletim sisteminin istediği gibi yeniden konumlandırabildiği özel bellek bloklarına koymak gerekiyordu; erişim sırasında sabit kalmalarını sağlamak için de o bloğun handle'ını kilitlemek gerekirdi
    Bunları PumpkinOS'ta uygulamak zor ve bir o kadar da eğlenceli olmuş olmalı. Eskiden Palm OS için küçük oyunlar yapmıştım; o dönemde yeni çıkan Palm OS Development Suite ile program geliştirmeyi mümkün kılacak bir sonraki OS sürümünü gerçekten sabırsızlıkla bekliyordum
    Uygulamalarda merkezi olay döngüsü olan son OS'lerden biriydi de. Günümüzde UI framework'leri her şeyi bizim yerimize hallediyor. Şimdi daha kolay, ama yine de o yöntemi özlüyorum

    • Win32 API'yi doğrudan kullanırsanız Windows da hâlâ böyle çalışıyor
      Bugüne kadar yapılmış tüm GUI toolkit'leri eninde sonunda bu yapıya dayanır; ama modern toolkit'lerin çoğunda bu kuyruk ve döngü içerde saklıdır, varlığını ancak debugger stack'ine baktığınızda ya da bir şey çöktüğünde sezebilirsiniz
    • Bu yöntem 16-bit Windows ya da classic Mac OS'ta da benzer değil miydi diye düşünüyorum
      MMU olmayan bir sistemde çoklu görev yapmak için, çalışma sırasında heap parçalarını birleştirmek neredeyse şart olmuş olmalı
    • Modern donanımda gigabaytlarca RAM var; böyle bir implementasyon Palm Pilot III'ün 2MB'ı ile karşılaştırıldığında çok kolay
      Sadece malloc kullanır, belleği taşımaz, bu tür blokları kilitleme ve serbest bırakma işlemlerini hiçbir şey yapmayan işlemler hâline getirirsiniz
      Kilit durumunu kontrol eden bir OS çağrısı varsa bunu bir yerde saklamak gerekir, ama o da zor değil. O dönemdeki yöntemi birebir uygulamak da zor olmaktan çok, kullanan tarafı karmaşıklaştıran bir şey
    • Modern donanımın avantajı, bellek açısından ciddi kısıt altında olmaması
      İstediğiniz kadar büyük bellek parçalarıyla karmaşık bir API'yi uygulayabilirsiniz; 128MB RAM gibi bir kapasite bugünün ölçülerine göre çok küçük
    • Palm oyunlarını gerçekten çok severdim. O dönemin mobil oyunları en iyisiydi; modern oyunlar hiç karşılaştırılamaz
  • Birlikte bakmaya değer bir proje de rePalm. RP2040 gibi ARM mikrodenetleyiciler üzerinde PalmOS çalıştıran bir proje: http://dmitry.gr/?r=05.Projects&proj=27.%20rePalm

  • Space Trader oynayarak saatlerimi harcama fikrine şimdiden heyecanlanıyorum
    Ortaokuldayken bir Palm Vx'im vardı; ders sırasında sıranın altında o oyunu oynadığıma dair güzel anılarım var

    • Peter Spronck ile birlikte çalışıp Space Trader'ın son ek içeriklerini ve bazı görevlerini yapmıştım. The Scarab gibi şeyler mesela
      O günleri özlüyorum
    • Garajda iki tane Palm Vx var. O oyunu ben de gerçekten çok severdim
  • Bu başlığı okuyunca kalbim hızlandı. Android'de çalışır hâle getirip ana telefonumu “değiştirmek” ve daha güzel zamanlara dönmek istiyorum

    • Hâlâ Palm'ın takvim ve kişiler uygulamalarını özlüyorum
      Centro'ya kadar Palm kullanmaya devam ettim; ondan sonra Palm sürümü kadar hoşuma giden bir kişiler/takvim uygulaması bulamadım. Ya basit ve temel özellikler eksik oluyor ya da UI gereksiz yere karmaşık
    • Tamamını Wasm üzerinde çalıştırırsanız Palm uygulamalarını her yerde çalıştırabilirsiniz
      İnsanların web sayfası içinde ciddi ciddi DOS uygulamaları çalıştırmasına benzer bir şey olur
    • Graffiti kullanılabiliyor
      https://play.google.com/store/apps/details?id=com.access_com...
    • SDL kullandığı için port etmek kolay olacak gibi
  • Eskiden Palm’ın eninde sonunda iPhone benzeri bir şey yapacağını düşünerek yatırım yapmıştım
    Ne yazık ki Palm bunu başaramadı; Apple başardığında ise Palm’ın işi bitmişti

    • Palm’ın bir Treo serisi vardı
      Sonunda Palm’ı yıkan şeyin ilk başarısı ve dev shareware/freeware araç ekosistemi olduğu da söylenebilir
      Palm OS tek iş parçacıklı, RAM’de yerleşik çalışan, sanal belleği olmayan bir işletim sistemi olarak yaşını belli ediyordu; bu yüzden yeni bir şey denemesi gerekiyordu ama bunu yapmak, mevcut yazılım kitaplığını kullanan eski hayranları kaçınılmaz olarak dışlayacaktı
      Bu tavuk-yumurta sorununu hiçbir zaman çözemedi; işletim sistemi ile donanımın ayrılması, Handspring gibi bir şirketin ayrılması ve sonra yeniden birleşilmesi de yardımcı olmadı. Cobalt OS gerçek cihazlara hiç giremedi; Pre ise iddialı bir yeni başlangıçtı ama daha erken çıksaydı bile iPhone’la mücadele etmesi zor olurdu
    • Büyük sorunlardan biri, Palm’ın yazılım şirketi PalmSource ile donanım şirketi Palm One olarak ikiye bölünmesiydi
      PalmSource Linux tabanlı bir işletim sistemi tasarlarken satın alındı ve ortadan kayboldu; Palm One ise yeniden Palm adını aldıktan sonra PalmOS tabanlı ilk akıllı telefonları yaptı
      Ama o sırada PalmOS zaten epey eskimişti ve 32 bit bir işletim sistemi üzerinde 16 bit uygulamalar çalıştırıyordu
      Daha sonra Palm webOS’u yaptı, ama tuhaf donanım kararları aldı ve iPhone ile Android’le rekabet edemedi. Yine de kapasitif ekrana geçişte başarısız olan Blackberry veya Nokia’ya kıyasla bir rakip olabilirdi
      Palm’ın sorunu çok geç kalmış olmasıydı; ama ayrılmadan PalmOS’un devamını geliştirmiş olsaydı, kapasitif akıllı telefon dalgasını yine kaçıracakmış gibi görünüyor
    • Operatörlerin de kısmen sorumlu olduğunu duymuştum. Operatörler, başlangıçta Handspring’in Treo ile yapabileceklerine sınır konmazsa Treo serisini taşımaya bile isteksizdi
      Apple’ın iPod’u vardı ve daha önemlisi müşterileri vardı. Apple bu müşterileri operatörlere götürebildiği için daha fazla şeyi dikte edebiliyordu
      https://www.youtube.com/watch?v=b9_Vh9h3Ohw adresinde bahsettiğim kısım yaklaşık 20. dakikada
    • Handspring/Palm akıllı telefon serisinin tamamını kullandım: Visor + Visor Phone, Treo 270, Treo 600, Treo 650 ve en son Palm Pré
      iPhone değildi ama bir iş aracı olarak aşırı verimliydi
    • Burada GPL lisansını görünce güldüm. Ticarileştirme riski olduğunu söylemek pek kolay değil gibi
  • Bunu modern telefon donanımına, hatta bir önceki nesil telefon donanımına taşımak için ne gerekir?
    Muazzam sadeliği ve akıl almaz pil ömrüyle istediğimiz şeylerin çoğunu yapabilecek gibi. Muhtemelen PinePhone’u bile Rolls Royce gibi hissettirebilir

    • README’ye göre ARM üzerinde yerel olarak çalışıyor, ama bir işletim sisteminden çok bir programa benziyor
      GUI kodu her platformun framework’üyle yeniden yazılırsa Android veya iOS üzerinde çalışacak şekilde güncellenebilir gibi görünüyor; ancak önyüklenebilir bir işletim sistemi yapmak daha zor görünüyor
      Yazar geçen yıl minimal bir x86 çekirdeği ve QEMU kullanarak bunu önyüklenebilir bir işletim sistemi yapma üzerine bir yazı yazmıştı; ARM cihazları için de yeniden kullanılabilir gibi [1]
      https://pmig96.wordpress.com/2023/02/24/pumpkinos-busybox-an...
    • Modern mobil işletim sistemlerinde optimizasyon ve kararlılık için daha fazla emek harcansa iyi olurdu
  • Birlikte bakmaya değer bir diğer şey de tarayıcı içinde çalışan Palm emülatörü CloudpilotEmu
    https://cloudpilot-emu.github.io/
    Kurup Vexed’i yeniden oynayabildiğimde gerçekten mutlu olmuştum

    • Cloudpilot şaşırtıcı. Bildiklerim arasında en incelikli PWA’lardan biri
      Vexed’i duymamıştım ama benim için Space Trader’ın geri dönmesi gerçekten sevindiriciydi
  • Palm telefon dönemi başladığından beri Sprint müşterisiydim
    İki yıl öncesine kadar renkli Treo’yu telefon olarak kullandım ve o fiziksel klavye gerçekten çok kullanışlıydı. Parmaklarım biraz deforme olduğu için dokunmatik ekran benim için zor
    T-Mobile ile birleşme kablosuz iletişim tarafını kesti; yok olup gitmesine çok üzülüyorum

    • Eskiden birlikte çalıştığım birine benziyor
      iPhone çıktıktan yaklaşık 6 ay sonra ve Android telefonlar da ortaya çıktığında, Pre’nin “iPhone katili” olduğunu söylemişti
      Bölümdeki ilk iPhone kullanıcısına Pre’nin kıyaslandığında pek de etkileyici olmayan özelliklerini gösterdikten sonra, Palm’ın milyonlarca kullanıcısının bana göstereceğini söylemişti
      Gerçekten de güzelce gösterdi
  • Bu projenin var olup bir daha çalışma şansı olmayacak yazılımların ömrünü uzatması iyi
    Ama bunun nostalji yüzünden mi, yoksa o yazılıma yönelik gerçek bir ihtiyaç veya istek yüzünden mi olduğunu merak ediyorum
    Palm, Blackberry ve Psion özlemiyle ilgili çok hikâye var; ama özel amaçların dışında gerçekten eskiye dönmek istiyor muyuz? IMAX’in yığınının bir kısmını çalıştırmak için Palm emülatörüne ihtiyaç duyduğunu biliyorum
    “Modern” bir Psion 5 ararken, ilgili ekipten bazılarının Android tabanlı Gemini PDA’yı yaptığını gördüm. Bazı incelemeciler bunu açıkça bir dezavantaj olarak gördü
    Modern bağlantıyı destekleyen yeni bir EPOC işletim sistemi olsaydı onlar için kesin bir başarı gibi görünürdü; ama düşününce ben onun üzerinde muhtemelen çoğunlukla Linux çalıştırırdım. Birleşik Krallık klavyeli yeni bir ürünü stokta bulabilirsem tabii
    Peki gerçekten bunu istiyor muyuz? Son 20 yılı aşkın sürede çok ilerleme oldu ve çoğu kişiye günlük kullanım için Android veya iOS yerine PalmOS verseniz, bir hafta içinde bunalıp geri verecek gibi
    Bu yargıyı yanlış çıkaracak belirleyici özellik ne olurdu?

    • Haftalarca süren pil ömrü, daha basit uygulama tasarımı, sayfa yukarı/aşağı düğmelerini özlüyorum