- PumpkinOS คือ การนำ PalmOS มาสร้างใหม่ ที่ทำงานบนสถาปัตยกรรมสมัยใหม่ เช่น x86, ARM และสามารถรันแอปพลิเคชัน m68K PalmOS ได้โดยไม่ต้องใช้ PalmOS ROM
- แอปเริ่มต้นคือ Launcher ส่วน Preferences มีแผนจะรวมตัวเลือกการตั้งค่าไว้ในอนาคต และ Command ยังเป็น command shell เชิงทดลอง
- รีลีสนี้มีแอป PIM ของ PalmOS 4 ตัว ได้แก่ AddressBook, MemoPad, ToDoList, DateBook โดยนำซอร์สโค้ดที่เคยแจกจ่ายใน PalmOS SDK มาปรับให้คอมไพล์บน PumpkinOS ได้
- เรคคอร์ดของ AddressBook และ MemoPad ดูเหมือนจะเข้ากันได้กับแอปคู่กันบน PalmOS แต่เรคคอร์ดของ ToDoList และ DateBook เข้ากันไม่ได้เนื่องจาก ความแตกต่างของ word size และ endianness
- โปรเจกต์ทั้งหมดยังอยู่ใน ขั้นทดลอง ฟีเจอร์บางส่วนยังไม่ได้ทดสอบเลย และบิลด์ Emscripten ก็อาจมีปัญหา เช่น software rendering, การใช้ CPU สูง และเบราว์เซอร์ค้าง
เป้าหมายและขอบเขตของ PumpkinOS
- PumpkinOS คือโปรเจกต์ที่นำ PalmOS มาสร้างใหม่บนสถาปัตยกรรมสมัยใหม่
- สถาปัตยกรรมเป้าหมายได้แก่ x86, ARM เป็นต้น
- ต่างจากอีมูเลเตอร์ PalmOS ทั่วไปตรงที่ ไม่ต้องใช้ PalmOS ROM
- สามารถรันแอปพลิเคชัน m68K PalmOS ได้
- รวมบทความที่กล่าวถึงหลายแง่มุมของ PumpkinOS สามารถดูได้ที่ หมวด PalmOS บน WordPress
แอปพลิเคชันพื้นฐานและสถานะปัจจุบัน
- Launcher คือแอปที่รันเป็นตัวแรกเมื่อ PumpkinOS เริ่มทำงาน
- แสดงพาเนลสำหรับเปิดแอปพลิเคชันอื่น
- Preferences มีแผนระยะยาวที่จะรวมตัวเลือกการตั้งค่าของ PumpkinOS ไว้
- Command คือ command shell และยังอยู่ในขั้นทดลอง
แอป PalmOS PIM ที่รวมมา
- รีลีสนี้มีแอป PIM ของ PalmOS 4 ตัว
- AddressBook
- MemoPad
- ToDoList
- DateBook
- ซอร์สโค้ดของแอปเหล่านี้เป็นโค้ดที่เคยแจกจ่ายใน PalmOS SDK อย่างน้อยหนึ่งชุด และถูกปรับให้คอมไพล์บน PumpkinOS ได้อย่างถูกต้อง
- ความเข้ากันได้ของเรคคอร์ดแตกต่างกันไปตามแต่ละแอป
- เรคคอร์ดที่สร้างใน AddressBook และ MemoPad ดูเหมือนจะเข้ากันได้กับแอปคู่กันบน PalmOS
- เรคคอร์ดที่สร้างใน ToDoList และ DateBook เข้ากันไม่ได้เนื่องจาก ความแตกต่างของ word size และ endianness
- ขอบเขตการทดสอบยังจำกัด
- ทดสอบเพียงระดับที่สามารถสร้างและแก้ไขเรคคอร์ดได้ไม่กี่รายการ
- ยังมีพฤติกรรมผิดปกติบางอย่าง
- ฟีเจอร์บางส่วนยังไม่ได้ทดสอบเลย
- เป้าหมายในตอนนี้คือการแสดงภาพล่วงหน้าว่า PumpkinOS จะเป็นอย่างไรในอนาคต
ไลเซนส์
- PumpkinOS ใช้ไลเซนส์ GPL v3
- ไดเรกทอรี
license มีข้อมูลไลเซนส์แยกของคอมโพเนนต์ต่าง ๆ ที่ใช้ใน PumpkinOS
- มีการแจ้งให้บอกหากพบข้อมูลไลเซนส์ที่ตกหล่นหรือไม่ถูกต้อง
วิธีบิลด์
- PumpkinOS ต้อง บิลด์จากซอร์ส
- ไม่จำเป็นต้องใช้ IDE
- สามารถบิลด์จาก command line ได้
-
Windows, Linux, WSL2
- บน Windows 64 บิต สามารถใช้ MSYS2 ได้
- ติดตั้งแพ็กเกจเพิ่มเติมในเทอร์มินัล MINGW64
pacman -S gcc binutils make git
- บนระบบปฏิบัติการที่ใช้ Linux 64 บิต ต้องมี
gcc, binutils, make, git
- บน Linux ต้องติดตั้ง แพ็กเกจพัฒนา SDL2 ด้วย
- บนตระกูล Debian ใช้คำสั่งต่อไปนี้
sudo apt install gcc binutils make git libsdl2-dev
- บน Windows 11 และ Windows 10 รุ่นใหม่ สามารถบิลด์บน WSL2 ได้เช่นกัน
- ในเทอร์มินัล WSL2 ให้ทำตามคำแนะนำการบิลด์สำหรับ Linux
-
ขั้นตอนบิลด์ทั่วไป
git clone https://github.com/migueletto/PumpkinOS.git
- ย้ายไปยังไดเรกทอรีซอร์สแล้วรัน
make
cd PumpkinOS/src
make
- หากบิลด์สำเร็จ จะได้ผลลัพธ์ต่อไปนี้
- ไฟล์รันได้
pumpkin ในไดเรกทอรีราก
- ไลบรารีไดนามิกในไดเรกทอรี
bin
- ไฟล์ PRC ในไดเรกทอรี
vfs/app_install
บิลด์ Emscripten และการรันบนเว็บ
- สามารถบิลด์ด้วย Emscripten ได้ในเชิงทดลอง
- วิธีติดตั้ง Emscripten อยู่นอกขอบเขตของ README
cd PumpkinOS/src
make OSNAME=Emscripten
- คำสั่งนี้จะสร้าง
pumpkin.zip ในโฟลเดอร์ src/emscripten
- ไฟล์ zip นี้มีไฟล์ที่จำเป็นสำหรับนำ PumpkinOS ไป deploy บนเว็บเซิร์ฟเวอร์
- หากใช้เว็บเซิร์ฟเวอร์
apache2 มาตรฐานบน Linux ขั้นตอนตัวอย่างมีดังนี้
- สร้างโฟลเดอร์
/var/www/html/pumpkin
- แตกไฟล์ zip ลงในโฟลเดอร์นั้น
- เปิดเบราว์เซอร์ไปที่
/pumpkin/pumpkin.html บนเซิร์ฟเวอร์ local ก็อาจแสดง PumpkinOS ได้
- อีกวิธีคือรันเว็บเซิร์ฟเวอร์ Python จากไดเรกทอรีซอร์สของ Emscripten
cd PumpkinOS/src/emscripten
python3 -m http.server 8080
- บิลด์นี้ยังเป็นเชิงทดลองอย่างมากและมีข้อจำกัดหลายอย่าง
- ขึ้นอยู่กับระบบปฏิบัติการ เบราว์เซอร์ และสถานะการรวมกับ GPU อาจ fallback ไปเป็น software rendering โดยไม่คาดคิด
- อาจเกิดการใช้ CPU สูงและเบราว์เซอร์ค้าง
- หากรันเบราว์เซอร์ใน private mode แอปพลิเคชันจะไม่ทำงาน
- หากเข้าถึงจากเซิร์ฟเวอร์ที่ไม่ใช่ localhost ด้วย HTTP แทน HTTPS จะโหลดไม่ได้
การรัน การติดตั้ง และการดีบัก
- บน Windows 64 บิต ให้รัน
pumpkin.bat
- บน Linux หรือ WSL2 ให้รัน
pumpkin.sh
- เมื่อรันแล้ว PumpkinOS จะเปิดขึ้นในหน้าต่างใหม่
- ตอนรัน PRC ทั้งหมดใน
vfs/app_install จะถูกลบและขยายไปยังโฟลเดอร์ใน vfs/app_storage
- ในขั้นปัจจุบันโดยรวมยังเป็น เชิงทดลอง จึงอาจมีปัญหาหลายอย่าง
- ไม่ว่ารันสำเร็จหรือไม่ จะมีไฟล์
pumpkin.log ถูกสร้างในไดเรกทอรีราก
- หากมีปัญหา ให้ตรวจสอบบรรทัดที่ระบุด้วย
"E" ในคอลัมน์ที่สามของไฟล์นี้
- มีการแจ้งว่าสามารถรับคำถามและไฟล์ log ได้
- PumpkinOS รองรับ Drag & Drop
- เมื่อลากไฟล์ PRC ของ PalmOS ไปวางบนหน้าต่าง ไฟล์จะถูกติดตั้งและแสดงใน Launcher
- หรือจะคัดลอก PRC ไปยังไดเรกทอรี
vfs/app_install โดยตรง แล้วเริ่ม PumpkinOS ใหม่ก็ได้
- หากต้องการ สามารถดีบักด้วย
gdb บน Windows, Linux, WSL2 ได้
- บน Windows ให้เปลี่ยนบรรทัดสุดท้ายของ
pumpkin.bat เป็นดังนี้
gdb.exe --args .\pumpkin.exe -d 1 -f pumpkin.log -s libscriptlua .\script\pumpkin.lua
- บน Linux และ WSL2 ให้เปลี่ยนบรรทัดสุดท้ายของ
pumpkin.sh เป็นดังนี้
gdb --args ./pumpkin -d 1 -f pumpkin.log -s libscriptlua ./script/pumpkin.lua
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ไปที่ Computer History Museum ใน Mountain View แล้วเห็น Palm Pilot อยู่ในตู้จัดแสดง ทำให้รู้สึกแก่ขึ้นมาทันที
การเอาของที่เป็นส่วนสำคัญในชีวิตผมเมื่อแค่ราว 30 ปีก่อน ไปจัดแสดงเหมือนเป็นวัตถุที่ขุดพบจากซากอารยธรรมโบราณ ควรเป็นเรื่องผิดกฎหมายได้แล้ว ไม่ยุติธรรมเลย
ตอนนั้นผมขอให้หัวหน้าซื้อให้ และเขาก็ซื้อให้จริง ๆ แต่หัวหน้าพูดว่า “ตอนนี้คุณมีอะไรที่ใช้จัดระเบียบชีวิตกับโปรเจกต์ของตัวเองอยู่ไหม? ถ้าไม่มี PalmPilot ก็คงช่วยไม่ได้เหมือนกัน”
ซึ่งเป็นคำพูดที่ถูกจริง ๆ
ยังมีมุมหนึ่งในสมองเหมือนบาดแผลค้างคาตั้งแต่วัยรุ่น ที่ยังรอให้ Dreamcast กลับมารุ่งอีกครั้งแบบยิ่งใหญ่อยู่
การไปกับคู่ของผมแล้วชี้ทีละเครื่องว่าอันไหนบ้างที่เราเคยเป็นเจ้าของ สนุกมาก และได้เห็นอีกครั้งก็เพลินจริง ๆ
มันใหญ่ เทอะทะ และค่อนข้างไม่ practical แต่ประสบการณ์ที่ผสานกับ Palm Desktop ได้สมบูรณ์นั้นลื่นไหลมาก ภายหลังผมใช้ jPilot บน Linux
โปรเจกต์ PumpkinOS น่าทึ่งจริง ๆ นึกไม่ออกเลยว่าต้องใช้ความพยายามมากแค่ไหนในการทำให้เข้ากันได้กับ system call ทั้งหมดที่แอป Palm ทั่วไปคาดหวัง
ผมจำได้ว่า Palm ทำอะไรค่อนข้างแปลกกับการจัดการหน่วยความจำ ข้อมูลที่ใหญ่ขึ้นมาหน่อยต้องใส่ไว้ในบล็อกหน่วยความจำพิเศษที่ OS สามารถย้ายตำแหน่งได้ตามใจ และถ้าต้องการให้มันคงที่ระหว่างเข้าถึง ก็ต้องล็อก handle ของบล็อกนั้นไว้
การทำสิ่งเหล่านั้นใน PumpkinOS น่าจะทั้งยากและสนุก ผมเคยทำเกมเล็ก ๆ สำหรับ Palm OS และตอนนั้นเฝ้ารอ OS เวอร์ชันถัดไปที่จะทำให้พัฒนาโปรแกรมด้วย Palm OS Development Suite ที่เพิ่งออกใหม่ได้จริง ๆ
มันยังเป็น OS ยุคสุดท้าย ๆ ที่แอปมี central event loop ด้วย ทุกวันนี้ UI framework จัดการแทนหมดแล้ว สมัยนี้ง่ายกว่าก็จริง แต่ผมก็ยังคิดถึงวิธีแบบนั้น
GUI toolkit ทุกตัวที่เคยถูกสร้างขึ้น สุดท้ายก็มีโครงสร้างแบบนั้น แต่ใน toolkit สมัยใหม่ส่วนใหญ่ queue กับ loop นี้ถูกซ่อนอยู่ภายใน จนจะเดาได้ว่ามีอยู่ก็ต่อเมื่อดู debugger stack หรือมีอะไร crash เท่านั้น
ถ้าจะทำ multitasking บนระบบที่ไม่มี MMU ผมว่าน่าจะแทบจำเป็นต้องทำ heap compaction ระหว่างรันอยู่เลย
แค่ใช้
mallocไปเลย ไม่ต้องย้ายหน่วยความจำ และทำให้การล็อกกับปลดล็อกบล็อกแบบนั้นเป็นการทำงานที่ไม่ทำอะไรถ้ามี OS call ที่ตรวจสอบสถานะล็อก ก็ต้องเก็บไว้ที่ไหนสักแห่ง แต่ก็ไม่ยาก การทำให้เหมือนวิธีสมัยนั้นจริง ๆ ก็ไม่ได้ยากเท่าไหร่ เพียงแต่ทำให้ฝั่งที่ใช้งานซับซ้อนขึ้นเท่านั้น
จะใช้ก้อนหน่วยความจำใหญ่แค่ไหนก็ได้เพื่อ implement API ที่ซับซ้อน และความจุอย่าง 128MB RAM ตอนนี้ถือว่าเล็กมาก
มีอีกโปรเจกต์ที่น่าดูด้วยคือ rePalm เป็นโปรเจกต์ที่รัน PalmOS บนไมโครคอนโทรลเลอร์ ARM อย่าง RP2040: http://dmitry.gr/?r=05.Projects&proj=27.%20rePalm
PumpkinOS / 3 ปีก่อน | 52 ความคิดเห็น
https://news.ycombinator.com/item?id=28466858
การอภิปรายเกี่ยวกับ rePalm:
PalmOS on Raspberry Pi, โพสต์โดย Tijdreiziger เมื่อ 10 กันยายน 2021, 169 คะแนน | 86 ความคิดเห็น
https://news.ycombinator.com/item?id=28487817
แค่คิดว่าจะเสียเวลาไปหลายชั่วโมงกับ Space Trader ก็เริ่มตื่นเต้นแล้ว
ตอนมัธยมต้นผมมี Palm Vx และมีความทรงจำดี ๆ ว่าแอบเล่นเกมนี้ใต้โต๊ะระหว่างเรียน
คิดถึงช่วงเวลานั้นจัง
อ่านหัวข้อนี้แล้วหัวใจเต้นแรงเลย อยากให้ทำให้รันบน Android ได้ จะได้ “แทนที่” โทรศัพท์หลักและย้อนกลับไปสู่ยุคที่ดีกว่า
ผมใช้ Palm มาจนถึง Centro และหลังจากนั้นก็ยังหาแอปรายชื่อ/ปฏิทินที่ถูกใจเท่าเวอร์ชันของ Palm ไม่ได้เลย ไม่ก็ขาดฟังก์ชันพื้นฐานเรียบง่าย หรือไม่ UI ก็ซับซ้อนเกินจำเป็น
มันคงคล้ายกับที่ผู้คนเอาแอป DOS มารันในหน้าเว็บกันอย่างจริงจัง
https://play.google.com/store/apps/details?id=com.access_com...
เมื่อก่อนผมเคยลงทุนโดยคิดว่าในที่สุด Palm จะสร้าง ของแบบ iPhone ออกมา
น่าเสียดายที่ Palm ทำไม่ได้ และเมื่อ Apple ทำได้ Palm ก็จบลง
สุดท้ายแล้ว สิ่งที่ทำให้ Palm ล้มลงอาจมองได้ว่าเป็นความสำเร็จในช่วงแรกและระบบนิเวศเครื่องมือแชร์แวร์/ฟรีแวร์ขนาดใหญ่
Palm OS เริ่มเผยให้เห็นอายุของมันแล้ว เพราะเป็น OS แบบเธรดเดียว อยู่ประจำใน RAM และไม่มีหน่วยความจำเสมือน จึงจำเป็นต้องลองทำอะไรใหม่ ๆ แต่ถ้าทำอย่างนั้นก็หลีกเลี่ยงไม่ได้ที่จะทำให้แฟนเก่า ๆ ที่ใช้ไลบรารีซอฟต์แวร์เดิมรู้สึกถูกทอดทิ้ง
ปัญหาไก่กับไข่นั้นไม่เคยแก้ได้สำเร็จ และการแยก OS กับฮาร์ดแวร์ การแยกบริษัทลูกอย่าง Handspring รวมถึงการควบรวมกลับเข้ามาใหม่ก็ไม่ได้ช่วยอะไร Cobalt OS ไม่เคยได้ถูกใส่ลงในอุปกรณ์จริง ส่วน Pre เป็นการเริ่มต้นใหม่ที่ทะเยอทะยาน แต่ต่อให้ออกมาเร็วกว่านี้ก็คงยากที่จะสู้กับ iPhone
PalmSource กำลังออกแบบ OS บนพื้นฐาน Linux ก่อนจะถูกซื้อกิจการและหายไป ส่วน Palm One เปลี่ยนชื่อกลับเป็น Palm แล้วทำสมาร์ทโฟนยุคแรกที่ใช้ PalmOS
แต่ตอนนั้น PalmOS ก็ค่อนข้างเก่าแล้ว และอยู่ในสภาพที่รันแอป 16 บิตบน OS 32 บิต
หลังจากนั้น Palm ทำ webOS แต่ก็ตัดสินใจด้านฮาร์ดแวร์แปลก ๆ และแข่งขันกับ iPhone กับ Android ไม่ได้ ถึงอย่างนั้นก็ยังน่าจะเป็นคู่แข่งได้มากกว่า Blackberry หรือ Nokia ที่ล้มเหลวในการเปลี่ยนผ่านไปสู่หน้าจอแบบ capacitive
ปัญหาของ Palm คือมันมาช้าเกินไป แต่ถ้าไม่ถูกแยกออกแล้วไปทำภาคต่อของ PalmOS ก็คงพลาดกระแสสมาร์ทโฟนจอ capacitive อยู่ดี
Apple มี iPod และที่สำคัญกว่านั้นคือมีลูกค้า Apple สามารถพาลูกค้าเหล่านี้ไปหาผู้ให้บริการได้ จึงสามารถกำหนดอะไรได้มากกว่า
ส่วนที่ผมพูดถึงใน https://www.youtube.com/watch?v=b9_Vh9h3Ohw อยู่ราวนาทีที่ 20
มันไม่ใช่ iPhone แต่ในฐานะเครื่องมือทำงาน มันมีประสิทธิภาพสูงมาก
ถ้าจะเอาสิ่งนี้ไปรันบนฮาร์ดแวร์มือถือยุคปัจจุบัน หรืออย่างน้อยฮาร์ดแวร์มือถือรุ่นก่อนหน้า ต้องใช้อะไรบ้าง?
ด้วยความเรียบง่ายอย่างมหาศาลและอายุแบตเตอรี่ที่เหลือเชื่อ น่าจะทำสิ่งที่เราต้องการได้ส่วนใหญ่ บางทีอาจทำให้ PinePhone รู้สึกเหมือน Rolls Royce ได้เลย
ถ้าเขียนโค้ด GUI ใหม่ให้เข้ากับเฟรมเวิร์กของแต่ละแพลตฟอร์ม ก็น่าจะอัปเดตให้รันบน Android หรือ iOS ได้ แต่การทำให้เป็น OS ที่บูตได้ดูยากกว่า
ผู้เขียนเคยเขียนบทความเมื่อปีก่อนเกี่ยวกับการทำให้เป็น OS ที่บูตได้โดยใช้เคอร์เนล x86 แบบขั้นต่ำกับ QEMU ดังนั้นก็น่าจะนำมาใช้ซ้ำกับอุปกรณ์ ARM ได้ [1]
https://pmig96.wordpress.com/2023/02/24/pumpkinos-busybox-an...
อีกอย่างที่น่าดูคู่กันคือ CloudpilotEmu อีมูเลเตอร์ Palm ที่รันในเบราว์เซอร์
https://cloudpilot-emu.github.io/
ตอนติดตั้งแล้วเล่น Vexed ได้อีกครั้ง ผมมีความสุขมากจริง ๆ
ไม่เคยได้ยินชื่อ Vexed แต่สำหรับผม ดีใจมากที่ Space Trader กลับมา
ผมเป็นลูกค้า Sprint ตั้งแต่ยุคโทรศัพท์ Palm เริ่มต้น
จนถึงเมื่อ 2 ปีก่อนก็ยังใช้ Treo จอสีเป็นโทรศัพท์อยู่ และ คีย์บอร์ดจริง ของมันใช้ดีมาก เพราะนิ้วผมผิดรูปอยู่นิดหน่อย ทำให้ใช้ทัชสกรีนลำบาก
การควบรวมกับ T-Mobile ทำให้ส่วนสื่อสารไร้สายใช้ไม่ได้ และเสียดายมากที่มันหายไป
ตอนที่ iPhone ออกมาได้ราว 6 เดือนและมือถือ Android ก็เริ่มปรากฏ เขาเคยบอกว่า Pre คือ “iPhone killer”
หลังจากโชว์ฟีเจอร์ของ Pre ที่เมื่อเทียบแล้วไม่ได้วิเศษอะไรนักให้ผู้ใช้ iPhone คนแรกของแผนกดู เขาก็บอกว่าผู้ใช้ Palm หลายล้านคนจะพิสูจน์ให้ผมเห็น
แล้วก็พิสูจน์ให้เห็นจริง ๆ
เป็นเรื่องดีที่โปรเจกต์นี้มีอยู่ เพราะช่วยยืดอายุซอฟต์แวร์ที่คงไม่มีโอกาสถูกรันอีกแล้ว
แต่สงสัยว่านี่เป็นเพราะ ความคิดถึง หรือเป็นความจำเป็น/ความต้องการจริง ๆ ต่อซอฟต์แวร์นั้นกันแน่
มีเรื่องเล่ามากมายเกี่ยวกับการคิดถึง Palm, Blackberry, Psion แต่จริง ๆ แล้วเราอยากกลับไปแบบเดิมแม้ใช้นอกเหนือจากงานเฉพาะทางหรือไม่? ผมรู้ว่า IMAX ต้องใช้อีมูเลเตอร์ Palm เพื่อรันส่วนหนึ่งของสแต็ก
ตอนมองหา Psion 5 แบบ “สมัยใหม่” ผมเห็นว่าทีมที่เกี่ยวข้องบางส่วนทำ Gemini PDA บนพื้นฐาน Android ออกมา ผู้รีวิวบางคนมองจุดนี้เป็นข้อเสียอย่างชัดเจน
ถ้ามีระบบปฏิบัติการ EPOC ใหม่ที่รองรับการเชื่อมต่อสมัยใหม่ สำหรับคนกลุ่มนี้คงดูเหมือนความสำเร็จแน่ ๆ แต่พอคิดดูแล้ว ผมน่าจะเอา Linux ไปรันบนนั้นเป็นหลัก ถ้าหาสินค้าใหม่ที่มีคีย์บอร์ดอังกฤษอยู่ในสต็อกได้
แต่จริง ๆ แล้วเราต้องการสิ่งนั้นหรือเปล่า? ตลอดกว่า 20 ปีที่ผ่านมามีความก้าวหน้ามากมาย และถ้าให้คนส่วนใหญ่ใช้ PalmOS แทน Android หรือ iOS เป็นเครื่องประจำวัน ก็คงหงุดหงิดจนเอามาคืนภายในหนึ่งสัปดาห์
ฟีเจอร์ชี้ขาด อะไรที่จะทำให้การตัดสินนี้ผิดไป?