Moonlight เป็นโครงการของทีมนักพัฒนา Mono ที่จะพัฒนาระบบทัดเทียมแบบเปิดต้นรหัส (opensource implementation) ที่เข้ากันได้กับรันไทม์ Silverlight ของไมโครซอฟท์บนแพลตฟอร์มลินุกซ์ เนื่องจากในปัจจุบัน Silverlight สนับสนุนเฉพาะแพลตฟอร์ม Windows และ Mac OS X เท่านั้น ความน่าทึ่งของโครงการนี้อย่างหนึ่งได้แก่ การที่ทีมงานสามารถพัฒนา Moonlight ให้สามารถใช้งานได้ในขั้นต้นได้ในระยะเวลาเพียง 21 วัน !
การติดตั้ง Moonlight ในขณะนี้จำเป็นต้องคอมไพล์จากต้นรหัส และต้องการ Mono 1.2.4 ในขณะที่ Mono ที่มาพร้อมกับ Ubuntu 7.04 นั้นเป็นรุ่น 1.2.3 อย่างไรก็ตามเราไม่จำเป็นต้องคอมไพล์ Mono จากต้นรหัสเองเนื่องจากมีผู้ทำแพกเกจสำหรับ Ubuntu รุ่น 7.04 ไว้ให้แล้ว
ขั้นตอนการติดตั้งที่จะกล่าวถึงต่อไป อาศัยข้อมูลจากหน้าเว็บดังต่อไปนี้ (ประสมกับการลองผิดลองถูกอีกเล็กน้อย)
ขั้นแรก เพิ่มบรรทัดข้างล่างนี้ลงในแฟ้ม
/etc/apt/sources.list deb http://www.viraptor.info/repo feisty-custombackports contrib
จากนั้น อัปเดตทั้งแหล่งแพกแกจและตัวแพกเกจด้วยคำสั่ง
$ sudo aptitude update$ sudo aptitude dist-upgrade
เมื่ออัปเดตแล้วติดตั้งแพกเกจที่จำเป็นเบื้องต้น ได้แก่
ชุดคอมไพล์โปรแกรมและเอสวีเอ็น :
$ sudo aptitude install build-essential subversion
Mono:
$ sudo aptitude install mono libmono-dev mono-gmcs mono-mcs
GTK+:
$ sudo aptitude install libgtk2.0-dev
FFmpeg: (อาจข้ามได้ถ้าต้องการติดตั้งจากต้นรหัส)
$ sudo aptitude install libavformat-dev libswscale-dev
ALSA:
$ sudo aptitude install libasound2-dev
Mozilla: เลือกลงแพกเกจ
$ sudo aptitude install libxul-dev
หรือ
$ sudo aptitude install libnspr-dev libnss-dev firefox-dev
สร้างสารบบสำหรับต้นรหัส
$ mkdir ~/svn
ดาวน์โหลดและคอมไพล์ติดตั้ง FFmpeg (ขั้นตอนนี้อาจข้ามได้หากติดตั้ง libavformat-dev และ libswscale-dev จากแพกเกจ)
$ cd ~/svn && svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg $ cd ~/svn/ffmpeg && ./configure --prefix=/usr/local && make && sudo make install
ดาวน์โหลดและคอมไพล์ติดตั้ง Olive
$ cd ~/svn && svn checkout svn://anonsvn.mono-project.com/source/trunk/olive olive $ cd ~/svn/olive && ./configure --prefix=/usr && make && sudo make install
ขั้นตอนสุดท้าย ดาวน์โหลดและคอมไพล์ติดตั้ง Moonlight และปลั๊กอินสำหรับ Firefox
$ cd ~/svn && svn checkout svn://anonsvn.mono-project.com/source/trunk/moon moon $ cd ~/svn/moon && ./autogen.sh --prefix=/usr && make && sudo make install && make test-plugin
ในระหว่างการคอมไพล์อาจพบว่าคอมไพเลอร์ไม่พบแฟ้มที่จำเป็นสำหรับการคอมไพล์ ให้หาแฟ้มที่ต้องการจากเว็บไซต์ค้นหาแพกเกจที่ http://packages.ubuntu.com/ จากนั้นติดตั้งแพกเกจที่มีแฟ้มดังกล่าว แล้วจึงคอมไพล์ใหม่อีกครั้ง
ทดสอบว่าปลั๊กอินใช้การได้ โดยเปิดยูอาร์แอลต่อไปนี้ด้วย Firefox
http://intertwingly.net/stories/2007/05/06/?icon=caution
จะเห็นการเปรียบเทียบระหว่างการวาดภาพกราฟิกแบบเวกเตอร์โดยใช้ Silverlight/Moonlight เปรียบเทียบกับเอสวีจีซึ่ง Firefox สนับสนุนโดยตรง ดังภาพต่อไปนี้
จากนั้นอาจลองเปิดตัวอย่างอื่น ๆ ในหน้า MoonlightShots และหน้า Community Gallery ของ Silverlight เพื่อทดสอบดูด้วย อย่างไรก็ตาม เนื่องจาก Moonlight ยังอยู่ในขั้นต้นของการพัฒนา จึงอาจแสดงผลไม่ตรงตามที่ควรจะเป็นหรือทำให้ Firefox ปิดตัวเองลง (crash) ได้
ภาพข้างบนนี้ กรอบสีฟ้าที่เขียนว่า "Visit the LEARN PAGE..." คือ Silverlight ที่ฝังลงในหน้าเว็บ
ความสามารถที่น่าสนใจอย่างหนึ่งของ Moonlight คือการที่เราสามารถเขียนโปรแกรมบน Moonlight ด้วยภาษาที่ .NET/Mono สนับสนุน ซึ่งเมื่อคอมไพล์แล้วสามารถรันบนเดสก์ท็อปได้โดยตรงในทำนองเดียวกับ Dashboard ของ OS X โดยใน Moonlight จะเรียกว่า Desklet (อ่านรายละเอียดได้จากบทความของ Ars Technica) ตัวอย่างของ Desklet จะอยู่ในสารบบ
~/svn/moon/desklet
ซึ่งสามารถคอมไพล์และเรียกใช้ได้ด้วยคำสั่ง mopen ดังตัวอย่างข้างล่างนี้
$ cd ~/svn/moon/desklet/glassyclock && make $ cd ~/svn/moon/desklet && mopen --desklet glassyclock
จะได้ Desklet นาฬิกาแบบเข็มที่คอมไพล์จากสารบบ
~/svn/moon/desklet/glassyclock
การเรียกใช้ Desklet อื่น ๆ ก็เป็นไปในทำนองเดียวกัน
เท่าที่ได้ลองทดสอบดู รู้สึกประทับใจในความสามารถของ Moonlight (โดยเฉพาะอย่างยิ่งความง่ายของการพัฒนา Desklet) มากทีเดียว น่าติดตามว่าทิศทางการพัฒนาของโครงการนี้จะเป็นอย่างไรต่อไป
ที่มา - ปรับปรุงเล็กน้อยจากที่บันทึกไว้ในบล็อกส่วนตัวของผู้เขียน
Comments
บรรดา desklet อย่างนาฬิกากับปฏิทิน ใช้แรมเท่าไหร่ครับ
glassyclock ใช้แรมประมาณ 17 MB ส่วน glassycalendar ใช้ประมาณ 30 MB ครับ
(อันที่จริง mopen คือการเรียก mopen.exe ด้วย mono)
อ่านใน Ars ลิงก์ที่ให้มา บอกว่า mopen เป็นการแก้ปัญหาเรื่องเรียก runtime หลาย instance
มิใช่น้อย
ที่จริง EDEN-FX office เราไช้ Ubuntu มานานแล้วค่ะไม่มีปัญหา Microsoft เราไม่ไช้ค่ะ EDEN-FX