การใช้เทคโนโลยี Open Source ในการพัฒนาซอฟต์แวร์ ขอขอบคุณผู้ให้ข้อมูลที่น่าสนใจ คุณอิสริยา ไพรีพ่ายฤทธิ์ isriya_pa@sipa.or.th สำนักงานส่งเสริมอุตสาหกรรมซอฟต์แวร์แห่งชาติ (องค์การมหาชน) 2005 อนุญาตให้เผยแพร่เอกสารนี้ต่อด้วยสัญญาอนุญาตแบบ Creative Commons Attribution License
Open Source คืออะไร ? ซอฟต์แวร์เสรี ผู้ใช้มีสิทธิอย่างเสรีกับตัวซอฟต์แวร์ - ใช้งาน - ปรับปรุงแก้ไข - พัฒนาต่อ - ขาย ปัจจุบันใช้งานอย่างแพร่หลาย
คุณใช้ Open Source อยู่หรือเปล่า ? Google ใช้ Linux เป็นระบบปฏิบัติการ Hotmail ใช้ FreeBSD เป็นระบบปฏิบัติการ 70% ของเว็บ ใช้ Apache เป็นเว็บเซิร์ฟเวอร์ ADSL Router ใช้ Linux เป็นระบบปฏิบัติการ โทรศัพท์มือถือของ Motorola ใช้ Linux เป็นระบบปฏิบัติการ Yahoo! ใช้ MySQL เป็นระบบฐานข้อมูล
ทำไมต้องสนใจ Open Source “Innovation Happens Elsewhere” ไม่ว่าองค์กรจะลงทุนด้านวิจัยแค่ไหน ปริมาณผลงานของเคน นอกองค์กรย่อมมีมากว่า ทางออก : นำผลงานของคนนอกมาใช้งาน วิธีการ : Open Source
ประวัติของ Open Source 1983 : Richard Stallman ประการคำว่า Free Software 1991 : Linus Torvalds เริ่มทำ Linux 1997 : Eric S. Raymond เขียน “The Cathedral and the bazaar” 1998 : Netscape เปิดเผยซอร์สของ Mozilla 1998 : Eric S. Raymond ประกาศคำว่า Open Source 2004 : Firefox 1.0 ออก
รูปแบบการพัฒนาซอฟต์แวร์แบบ Open Source ผู้สร้างเปิดเผยซอร์สโค้ด ผู้สนใจมีสิทธิแก้ไขซอร์สโค้ด ผู้สนใจมีสิทธิส่งส่วนที่แก้ไขมาให้ผู้สร้าง ผู้สร้างมีสิทธิผนวกส่วนแก้ไข ไปกับโปรแกรมต้นฉบับ ก่อให้เกิดชุมชนของผู้ใช้-ผู้พัฒนา
ข้อดีของการพัฒนาแบบ Open Source ผู้ใช้มีส่วนร่วมในการกำหนดทิศทางของโปรแกรม ผู้สร้างมีโอกาสรับฟังความคิดเห็นของผู้ใช้โดยตรง เพิ่มปริมาณผู้มีส่วนร่วม (contributor) ของโปรแกรม ลดระยะเวลาในการออกโปรแกรมรุ่นใหม่ (release cycle) ลดค่าใช้จ่ายในการพัฒนาโปรแกรม
โครงการ Open Source ที่มีชื่อเสียง ระบบปฏิบัติการ Linux, FreeBSD เว็บเซิร์ฟเวอร์ Apache ฐานข้อมูล MySQL, PostgreSQL เว็บเบราว์เซอร์ Mozilla Firefox อีเมล Mozilla Thunderbird ชุดออฟฟิศ OpenOffice.org โปรแกรมตกแต่งภาพ Gimp ภาษาโปรแกรม PHP, Python, Perl
การพัฒนาซอฟต์แวร์ด้วย Open Source Platform ส่วนที่รองรับการทำงานของซอฟต์แวร์ เช่น OS, server, library Programming ตัวโปรแกรมเอง, ภาษา, compiler, interpreter Tools เครื่องมือที่ช่วยให้การพัฒนาโปรแกรมสะดวกและมีประสิทธิภาพ เช่น debugger, version control
Platform : Normal Solutions ใช้ Open Source ลดค่าใช้จ่ายรวมของ Solution Applications 10,000 B Linux 0 B Windows 4,900 B ราคารวมของ Solution 10,000 B 14,900 B
Platform : Web Solutions Applications Web Server Apache IIS Database MySQL Oracle OS Linux Windows
Platform : ลดค่าใช้จ่ายรวม ใช้ Open Source เพื่อลดค่าใช้จ่ายโดยรวมของ Solution ผู้ซื้อ : ได้ Solution ในราคาที่ถูกลง ผู้ขาย : มีโอกาสขายได้มากขึ้น สามารถใช้ Open Source ร่วมกับซอฟต์แวร์อื่นได้ เช่น - Windows + Apache + My SQL - Linux + Oracle
Programming C/C++ Java .NET PHP Perl Python
Programming : C/C++ C เป็นภาษาหลักในการพัฒนาโปรแกรมมายาวนาน - ประสิทธิภาพสูง - เหมาะกับงานเกี่ยวกับระบบ C++ เป็น superset ของ C - เพิ่มความสามารถด้าน Object-Oriented - เขียน C++ แบบ C ได้ - ปัจจุบันโปรแกรมขนาดใหญ่ส่วนมากเขียนด้วย C++
Programming : C/C++ : GCC GCC (GNU Compiler Collection) เป็น compiler มาตรฐานในการทำ benchmark สนับสนุนภาษา C, C++, Fortran, Obj-C, Ada เวอร์ชันล่าสุด 4.0 มีใน Unix แทบทุกตัว ใช้บนวินโดวส์ได้ผ่าน Cygwin (www.cygwin.com) การใช้งานเป็น command line
Programming : C/C++ : GCC (2) เขียนโปรแกรมภาษา C ชื่อ main.c gcc main.c - ได้ผลลัพธ์คือ a.out - ทดสอบโปรแกรมโดยสั่ง ./a.out gcc -o program main.c - ได้ผลลัพธ์คือ program - ทดสอบโปรแกรมโดยสั่ง ./program
Programming : C/C++ : Editor Text editor : vi, notepad, editplus, ultraedit IDE (Integrated Development Environment - Windows : Dev-C++ - Linux : Kdevelop, Anjunta - หรือ Eclipse กับ CDT (C/C++ Development Tools)
KDevelop
Programming : Java เป็น Object-Oriented ใช้แนวคิดของ Virtual Machine สร้างโดย Sun Microsystems ปี 1990 เป็น Object-Oriented ใช้แนวคิดของ Virtual Machine ทำงานได้ข้ามแพลตฟอร์ม Java Runtime Environment แจกฟรีโดย Sun และมีครบคลุม เกือบทุกแพลตฟอร์ม Java Development Kit ชุดพัฒนาพื้นฐาน แจกฟรีโดย Sun มี 3 edition : J2ME, J2SE, J2EE เวอร์ชันล่าสุด : 5.0
Programming : Java : Diagram Java Code (.java) Java Development Kit (JDK) Java Compiler (java.exe) Java Class Byte Code (.class) Java Runtime Environment (JRE) Java Virtual Machine (java.exe) Binary Code
Programming : Java : Open Source implementations Library Compiler VM Java Class java.exe javac.exe Harmony GCJ GIJ, Kaffe
Programming : Java : IDE Eclipse (www.eclipse.org) - IBM/Oracle - เวอร์ชันล่าสุด : 3.1 NetBeans (www.netbeans.org) - Sun (Forte, Sun ONE Studio, Java Studio) - เวอร์ชั่นล่าสุด : 4.1
Programming : Java : Other Jboss (www.jboss.org) - Open Source J2EE application server Jakarta Project (jarkata.apache.org) - Open Source software for Java Platform - ดูแลโดย Apache Foundation - ตัวอย่าง : Tomcat, Ant - นำไปใช้ใน IBM WebSphere
Programming : .NET Microsoft เขียนตาม Java Multi-Platform (ในทางทฤษฎี) Multi-Language - C#, VB.NET, Managed C++, Jscript.NET, ASP.NET - Python, Ada, Cobol, Boo, Perl, Fortran .NET 2.0 Final : November 2005
Programming : .NET : Diagram (Common Intermediate Language) VB.NET compiler .NET Class (C#) CIL (Common Intermediate Language) .NET Class (VB.NET) CLR (Common Language Runtime) Binary Code
Programming : .NET : Mono Mono (www.mono-project.com) เป็นการสร้าง .NET Framework แบบ Open Source บริษัท Ximian (ปัจจุบันเป็นของ Novell) ส่งเสริมให้ .NET สามารถรันข้ามแพลทฟอร์มได้อย่างแท้จริง มีโอกาสเกิดปัญหาด้านกฎหมายในอนาคต รวมอยู่ใน : SuSE, Ubuntu, Debian ไม่รวมอยู่ใน : Red Hat, Fedora
Programming : .NET : Mono (2) Library Compiler VM .NET compiler .NET CLR .Mono compiler .Mono CLR .NET Library .NET Library Mono Library
Programming : .NET : IDE - Microsoft.NET - Windows SharpDevelop (www.icsharpcode.net/OpenSource/SD) - Microsoft.NET - Windows MonoDevelop (http://www.monodevelop.com) - Mono implement of Sharp Develop - Microsoft .NET & Mono - Linux, MacOSX
SharpDevelop
Programming : PHP เดิม : Personal Home Page ปัจจุบัน : PHP Hypertext Processor Scripting language, server side เทียบได้กับ Microsoft ASP, Sun JSP ได้รับความนิยมสูงมาก เช่น Pantip, phpBB, phpMyAdmin
Programming : PHP : Solution มักใช่ร่วมกับ Linux, Apache, MySQL LAMP/LAMPS - Linux, Apache, MySQL, PHP / SSL - (อาจใช้ PostgreSQL แทน MySQL และ Perl/Python แทน PHP ได้) สำหรับวินโดวส์แนะนำให้ใช้ AppServ (www.appserv.net)
Programming : Perl เป็น scripting Language เหมาะสำหรับทำงานบน Unix shell เขียนได้ง่าย แต่อ่านได้ยาก เพราะเป็นภาษาที่เน้นสัญลักษณ์ แนะนำให้ใช้ PHP หรือ Python
Programming : Python เป็น scripting language มีประสิทธิภาพสูง เขียนได้ง่าย ทำงานได้ข้ามแพลทฟอร์ม มี library สำคัญๆ ให้ครบ กำลังได้รับความนิยมเพิ่มขึ้นเรื่อยๆ เช่น - Google - Red Hat - BitTorrent
Programming : Python : Example C If (a > b) : print “A is greater” else: print “B is greater” int a; int b; if (a>b) { printf(“A is greater”); } else printf(“B is greater”); }
Programming : Others ภาษาโปรแกรมมิ่งอื่นๆ ที่น่าสนใจ - Ruby - Boo - Eiffel - Objective-C
Tools Debugger Packaging Version Control Bug Tracker GUI Designer
Tools : Debugger GDB – GNU Debugger - เป็น command line debugger - ใช้คู่กับ GCC - สนับสนุน C, C++, Fortran, Pascal, Obj-C - ทำงานได้บน Unix และ Windows - มี GUI เลือกใช้ได้หลายตัว เช่น DDD สำหรับภาษาอื่นๆ สามารถใช้ debugger ของ IDE
Tools : Packaging - autoconfig - autobuild - make ขั้นตอนการติดตั้งโปรแกรมบน Unix ใช้โปรแกรมเหล่านี้เข้าช่วย - autoconfig - autobuild - make วิธีการติดตั้งพื้นฐาน - ./configure - make install
Tools : Packaging (2) นิยมรวมไฟล์เป็นก้อน แล้วบีบอัดแบบ tar.gz หรือ tarball เพื่อ สะดวกในการดาวน์โหลด การบีบไฟล์ - tar cxvf filename.tar.gz file1 file2 file3 การขยายไฟล์ - tar xvfz filename.tar.gz ไฟล์แบบ tar.gz เปิดได้ด้วยโปรแกรม ZIP ทั่วไป เช่น WinZIP, WinRAR
Tools : Packaging (3) Red Hat - RPM – Red Hat Package Management ต่อมามีระบบแพกเกจที่ก้าวหน้าขึ้น สามารถติดตั้งได้อัตโนมัติ Red Hat - RPM – Red Hat Package Management Debian - DPKG – Debian Package
Tools : Packaging (4) ระบบ RPM และ DPKG มีปัญหาด้าน dependency Red Hat - YUM Debian - APT (Advance Package Tool)
Tools : Version Control - จัดการเวอร์ชันของซอร์สโค้ด - เก็บโค้ดไว้ที่เซิร์ฟเวอร์กลาง แล้วเรียกใช้เมื่อต้องการ - สนับสนุนการทำงานร่วมกันเป็นทีม - สามารถย้อนการแก้ไขกลับได้ - ใช้งานอย่างจริงจังในการพัฒนาระดับอุตสาหกรรม
Tools : Version Control (2) CVS – Concurrent Versions System - มีใน Unix เกือบทุกรุ่น - มีข้อจำกัดหลายอย่าง เช่น ไม่สามารถเปลี่ยนชื่อไฟล์ได้ - ยังใช้กันอย่างแพร่หลายในโครงการ Open Source สำคัญหลายแห่ง SVN – Subversion - ปรับปรุงจาก CVS แนวคิดใกล้เคียงกัน - แนะนำให้เริ่มที่ SVN เลย
Tools : Version Control (3) คำสั่งพื้นฐานของ CVS/SVN svn checkout ดึงซอร์สส่วนที่ต้องการจากเซิร์ฟเวอร์มาที่เครื่อง svn add เพิ่มไฟล์ใหม่ในเครื่องไปยังเซิร์ฟเวอร์ svn update ปรับปรุงการเปลี่ยนแปลงล่าสุดกับเวอร์ชันของเซิร์ฟเวอร์ svn commit ยืนยันการเปลี่ยนแปลงไปยังเซิร์ฟเวอร์ (สั่งหลัง add/update)
Tools : Bug Tracker ระบบจัดการบั๊กผ่านเว็บ Bugzilla ประสิทธิภาพสูง ใช้งานอย่างแพร่หลาย ติดตั้งยาก IssueZilla เป็น Bugzilla ที่โครงการ Open Office นำมาปรับแต่ง Trac ใช้งานและติดตั้งได้ง่าย ความสามารถครบ ออกแบบมาเพื่อการ พัฒนาโปรแกรม
Tools : GUI Designer Glade (http://glade.gnome.org/) - เป็น user interface designer - Export เป็น XML - ใช้ได้กับภาษา C, C++, Java, Perl, Python, C#, Ruby Stetic - เป็น user interface designer สำหรับ Mono หรือใช้ GUI designer ที่มากับ IDE เช่น Eclipse, NetBeans, KDevelop
Glade
More information Open Source at SIPA http://www.thaiopensource.org Open Source Software Project http://www.sourceforge.net