Có thể nói mã nguồn mở là một trào lưu hiện đang phát triển rất nhanh trên thế giới hiện nay
Tìm hiểu phần mềm nguồn mở TRƯỜNG ĐẠI HỌC SƯ PHẠM HÀ NỘI KHOA CÔNG NGHỆ THÔNG TIN *************** ĐỀ TÀI TÌM HIỂU MÃ NGUỒN MỞ VÀ ỨNG DỤNG PHP Giáo viên hướng dẫn: Sinh viên thực hiện: Vũ Thị Phượng Nguyễn Thị Trìu Mến Lớp K55A – CNTT Hà Nội, tháng 4/2008 1 Tìm hiểu phần mềm nguồn mở LỜI MỞ ĐẦU Có thể nói mã nguồn mở là một trào lưu hiện đang phát triển rất nhanh trên thế giới hiện nay. Microsoft đã từng đặt Linux và cộng đồng nguồn mở là một nguy cơ thực sự. Giờ đây, phần mềm nguồn mở đã chiếm ưu thế trong hạ tầng công nghệ thông tin. GNU/Linux và những ích lợi các loại của BSD Unix đã thống trị Internet, Perl và PHP là các ngôn ngữ phát triển chiếm ưu thế của WWW, và Apache thực sự đã mở rộng thị phần 80% sớm của mình giữa các máy chủ web . Tất cả các sản phẩm này đều là phần mềm nguồn mở. Việt Nam đã vào WTO, ngày càng hòa nhập sâu rộng vào thế giới, vấn đề bảo hộ quyền sở hữu trí tuệ trở nên quan trọng hơn bao giờ hết. Bởi vì, việc thực thi nghiêm ngặt bảo hộ quyền sở hữu trí tuệ nói chung và phần mềm nói riêng là một trong những điều kiện tiên quyết để nước ta thực hiện Hiệp định đã ký. Khi đã gia nhập WTO thì vấn đề bắt buộc phải sử dụng các phần mềm có bản quyền sẽ được thắt chặt. Trong điều kiện nguồn vốn còn quá nghèo nàn như ở nước ta hiện nay thì giải pháp sử dụng phần mềm nguồn mở (Open Source Software-OSS) là một cách rất hữu hiệu để Việt Nam có chỗ đứng chuyên nghiệp hơn trong "thế giới phẳng" đó. Tuy nhiên, OSS còn khá mới mẻ, không ít người cho rằng OSS đồng nghĩa với miễn phí hoàn toàn, ít tính năng và không an toàn. Richard Stalhman (ông tổ của mã nguồn mở) đã nói rằng chúng ta nên “bắt đầu ngay từ trong nhà trường”, đó chính là lí do để đề tài “TÌM HIỂU PHẦN MỀM NGUỒN MỞ” ra đời. Đề tài nhằm cung cấp một cách khái quát về OSS, cụ thể tìm hiểu về PHP và bước đầu xây dựng ứng dụng thực tiễn. 2 Tìm hiểu phần mềm nguồn mở Mục lục PHẦN I. PHẦN MỀM NGUỒN MỞ .4 IV. Luật phần mềm nguồn mở 13 PHẦN II. ỨNG DỤNG PHP .58 II. BÀI TOÁN ỨNG DỤNG MÃ NGUỒN MỞ PHP 65 (QUẢN LÍ ĐĂNG KÍ SỬ DỤNG TÀI SẢN) 65 VI. The MIT License .97 3 Tỡm hiu phn mm ngun m PHN I. PHN MM NGUN M I. Khỏi nim OSS 1.1. Mt s kiu phn mm hin nay Trong ngành Phần mềm hiện nay của thế giới đang tồn tại một số kiểu phần mềm cơ bản: * Phần mềm thơng mại (Commercial Software). Là phần mềm thuộc bản quyền của tác giả hoặc nhà sản xuất, chỉ đợc cung cấp ở dạng mã nhị phân, ngời dùng phải mua và không có quyền phần phối lại. * Phần mềm thử nghiệm giới hạn (Limited Trial Software ). Là những phiên bản giới hạn của các phần mềm thơng mại đợc cung cấp miễn phí nhằm mục đích thử nghiệm, giới thiệu sản phẩm và kích thích ngời dùng quyết định mua. Loại sản phẩm này không chỉ giới hạn về tính năng mà còn giới hạn ngời dùng về thời gian dùng thử ( thờng là 30 ngày hoặc 60 ngày). * Phần mềm chia sẻ ( Shareware ). Loại phần mềm này có đủ các tính năng và đợc phân phối tự do, nhng có một giấy phép khuyến cáo các cá nhân hoặc tổ chức mua, tùy tình hình cụ thể. Nhiều tiện ích Internet (nh WinZip dùng các thuận lợi của Shareware nh một hệ thống phân phối). * Phần mềm sử dụng phi thơng mại (Non-commercial Use). Loại phần mềm này đợc sử dụng tự do và có thể phân phối lại bởi các tổ chức phi lợi nhuận. Nhng các tổ chức kinh tế, thí dụ các doanh nghiệp, . muốn dùng phải mua. Netscape Navigator là một thí dụ của loại phần mềm này. * Phần mềm không phải trả phần trăm cho nhà sản xuất (Royalties Free Binaries Software): Phần mềm đợc cung cấp dới dạng nhị phân và đợc dùng tự do. Thí dụ: bản nhị phân của các phần mềm Internet Explorer và NetMeeting. 4 Tỡm hiu phn mm ngun m *Th viện phần mềm không phải trả phần trăm (Royalties Free Software Libraries):Là những phần mềm mà mã nhị phân cũng nh mã nguồn đợc dùng và phân phối tự do, nhng ngời dùng không đợc phép sửa đổi. Thí dụ: các th viện lớp học, các tệp header, vv * Các phần mềm Mã nguồn mở hoàn toàn (Open Source Software-OSS). 1.2. nh ngha OSS Có rất nhiều tổ chức đa ra định nghĩa của mình về Open Source Software. Tr- ớc hết xin đa ra một số quan niệm của một số Tổ chức tại Việt Nam: Theo Trang thông tin của Ban chỉ đạo Phần mềm nguồn mở quốc gia (http://www.oss.gov.vn ) Phần mềm nguồn mở (OSS) là FOSS (Free/Open Source Software) có sử dụng bất kì một dạng bản quyền đợc chấp nhận nào của Tổ chức sáng kiến Mã nguồn Mở-OSI (Open Source Initiative- http://www.opensource.org) trong bản liệt kê các bản quyền mã mở của tổ chức. OSS là những phần mềm đợc cung cấp dới dạng mã và nguồn, không chỉ là miễn phí về giá mua mà chủ yếu là miễn phí về bản quyền: ngời dùng có quyền sửa đổi, cải tiến, phát triển, nâng cấp theo một số nguyên tắc chung qui định trong giấy phép OSS (ví dụ General Public Licence-GPL ) mà không cần xin phép ai, điều mà họ không đợc phép làm đối với phần mềm nguồn đóng (tức là phần mềm nguồn đóng). Nhà cung cấp phần mềm nguồn mở có quyền yêu cầu ngời dùng trả một số chi phí về các dịch vụ bảo hành, huấn luyện, nâng cấp, t vấn, vv tức là những dịch vụ thực sự đã thực hiện để phục vụ ngời dùng, nhng không đợc bán sản phẩm nguồn mở vì nó là tài sản của trí tuệ chung, không là tài sản riêng của một nhà cung cấp nào. Theo Viện Tin học Pháp ngữ : Phần mềm mã nguồn mở-(Open Source Software-OSS) là phần mềm có mã nguồn đợc cung cấp, đợc sao chép, đợc phép sửa đổi và phát hành. Tuy nhiên phần mềm vẫn đợc bảo vệ bởi bản quyền và việc sử dụng phải tuân theo một giấy phép nhất định, OSS không có nghĩa là Phần mềm tự do. 5 Tỡm hiu phn mm ngun m Có hai hai khái niệm cần phải phân biệt đó là Phần mềm tự do và phần mềm miễn phí: + Phần mềm tự do (Free Software): cho phép tự do sử dụng chơng trình với mọi mục đích, tự do nghiên cứu các chức năng của phần mềm và sửa đổi phần mềm theo nhu cầu cá nhân (có quyền truy cập mã nguồn của phần mềm), cho phép tự do phân phối bản sao phần mềm cho mọi ngời, tự do cải tiến phần mềm và tự do công bố cải tiến của mình. Phần mềm tự do cũng khác so với phần mềm miễn phí. + Phần mềm miễn phí (Freeware): Là phần mềm có chủ sở hữu, không có mã nguồn tự do, đợc cung cấp miễn phí dới nhiều hình thức nh cho phép down load. Nh vậy sự khác biệt cơ bản giữa Phần mềm nguồn mở và Phần mềm tự do là sự khác nhau trong việc bảo vệ bản quyền; tức là OSS thì đợc bảo vệ bởi luật bản quyền của một số Tổ chức, còn Phần mềm tự do thì không nhất thiết phải có mã nguồn và không có copyright-không đợc bảo vệ. Theo Tổ chức sáng kiến mã nguồn mở quốc tế - Open Source Initiative- (http://www.opensource.org ) định nghĩa mã nguồn mở nh sau: (Xem nguyên bản Tiếng Anh trong phần Phụ lục): Một OSS không có nghĩa là có thể truy cập trực tiếp vào mã nguồn của chơng trình; OSS đợc đảm bảo phân phối bởi một số Tổ chức mã nguồn mở, và phải đảm bảo đợc một số nội dung : (1). Phân phối tự do; (2). Mã nguồn và cả chơng trình hoàn thiện; (3). Nguồn gốc; (4). Tôn trọng bản quyền của tác giả mã nguồn; (5). Không phân biệt đối xử với nhóm hay nhiều ngời; (6). Không phân biệt trong mục đích sử dụng; (7). Đợc phân phối dới sự bảo hộ của các loại giấy phép; (8). Các loại giấy phép dựa theo mục đích của nhà sản xuất; 6 Tỡm hiu phn mm ngun m (9). Giấy phép sẽ không hạn chế các phần mềm khác; (10). Các giấy phép là độc lập so với mặt công nghệ. Có rất nhiều loại giấy phép của các tổ chức Mã nguồn mở khác nhau, nh Apache, GNU/GPL, Mozilla, hay của Tổ chức BSD (Berkely Software Distribution) vv sẽ đợc trình bày chi tiết trong phần Các luật về Mã nguồn mở. Theo David Wheeler thỡ OSS l nhng chng trỡnh m quy trỡnh cp phộp s cho ngi dựng quyn t do chy chng trỡnh theo bt k mc ớch no, quyn nghiờn cu v sa i chng trỡnh, quyn sao chộp v tỏi phỏt hnh phn mm gc hoc phn mm ó sa i (m khụng phi tr tin cho nhng ngi lp trỡnh trc). Xột v phng din phớ ng ký, OSS gn nh min phớ hon ton. a s cỏc sn phm ca OSS cú th ti t Internet v m khụng phi mt mt chỳt phớ no. Tuy nhiờn, hiu OSS luụn luụn min phớ l hon ton cha ỳng, bi vỡ ngi s dng cũn phi tr cỏc chi phớ nhõn s, yờu cu v phn cng, chi phớ o to, chi phớ cho cỏc dch v bo hnh, hun luyn, nõng cp, t vn, tc l nhng dch v thc s ó thc hin phc v ngi dựng. Nhng nu xột tt c cỏc chi phớ thỡ OSS cng r hn, kinh t hn phn mm cú bn quyn rt nhiu. Túm li OSS l nhng phn mm c cung cp min phớ v bn quyn v mó ngun chng trỡnh, ngi dung cú th sao chộp, chnh sa, phõn phi, úng gúi v phỏt hnh; nhng phi tuõn th nhng quy nh ca cỏc lao giy phộp nht nh v c bo v bn quyn. II. Lch s phn mm ngun m (OSS) - Nhng nm 1945-1975: Phn mm thng c trao i gia cỏc nh lp trỡnh. 7 Tìm hiểu phần mềm nguồn mở - Năm 1969: Đánh dấu sự ra dơid của Unix, trao đổi tự do. - Bắt đầu những năm 1970, mã nguồn dần “đóng lại”. - Năm 1984 phiên bản Unix thương mại (có bản quyền và giấy phép). - Năm 1984, Richard Stalhan thành lập GNU phát triển các phần mềm tự do trên Unix. - Năm 1989 FSF (Free Software Foundation) định nghĩa giấy phép GNU GPL (General Puplic Licesne ) và Copyleft. - Năm 1991, Linus Torvald công bố mã nguồn của nhân một hệ điều hành mới trên Internet. - Năm 1992, Linux sử dụng giấy phép GPL GNU/Linux = Nhân Linux + tiện ích GNU. - Năm 1994, Linux được cài đặt lên các Proceessor của Intel: Alpha, ARM, RISC, PowerPC, Sparc,… - Năm 1995 ra đời Apache Web Server 2/3 Web servers trên Internet. - Năm 1999 ra đời giao diện đồ họa KDE, GNOME. Xfree86 phiên bản GNU của X-Windows. - Năm 2002: Sun Microsystem công bố OpenOffice.org. - 1/2006: Cộng đồng mã nguồn mở GNU đưa ra phiên bản mới của Luật mã nguồn mở GPL v3. Lịch sử của OSS gắn liền với Richard Stalhman, làm việc tại phòng thí nghiệm Trí tuệ nhân tạo MIT, là người đầu tiên thấy được sức mạnh của các phần 8 Tìm hiểu phần mềm nguồn mở mềm “tự do”, tự do ở đây hiểu theo nghĩa tự do thay đổi mã nguồn không hẳn theo nghĩa tự do về giá cả (hay miễn phí), người được coi như là một “vị thánh” trong cộng đồng GNU/Linux, và là người sáng lập Hiệp hội phần mềm miễn phí (FSF) tại Mĩ, lập giấy phép nguồn mở GPL (General Public License), và tạo nền tảng cho Linus Torvalds viết hệ điều hành Linux. Tuy khái niệm mã nguồn mở được Richard Stalhman nêu ra từ những năm 1970, nhưng thực sự trở thành một khuynh hướng rõ rệt trong lĩnh vực phần mềm khoảng từ năm 1991, sau khi Linux ra đời. • Mét sè tæ chøc OSS Có rất nhiều các tổ chức OSS hoạt động phi lợi nhuận, dưới đây chỉ sin được nêu ra 5 tổ chức lớn nhất: - Tổ chức phần mềm tự do FSF - Tổ chức phần mềm quốc tế OSI - Tổ chức phần mềm Apache - Tổ chức Mozilla - Viện nghiên cứu phần mềm mã mở và tự do BSD III. Ưu – Nhược điểm của OSS 3.1.Ưu điểm Lợi ích của OSS thể hiện rõ nhất ở tính kinh tế của nó, sử dụng OSS thực sự đã tiết kiệm được khoản tiền khổng lồ. Song đó không phải là tất cả, bởi đôi khi lựa chọn phần mềm, người ta không quá chú trọng duy nhất vào vấn đề kinh phí, cái mà họ quan tâm là tiện ích sử dụng, chất lượng phần mềm. Xét về mặt này OSS có những ưu việt đáng kể như: Tính an toàn; Tính ổn định/ đáng tin 9 Tìm hiểu phần mềm nguồn mở cậy; Các chuẩn mở và việc không phải lệ thuộc vào nhà cung cấp; Giảm phụ thuộc vào nhập khẩu; Phát triển năng lực ngành công nghiệp địa phương; Vấn đề vi phạm bản quyền, quyền sở hữu trí tuệ; tính tuân thủ WTO; Nội địa hoá. - Tính an toàn: Thực tế cho thấy không hề tồn tại một hệ điều hành nào mà tính an toàn của nó được hoàn hảo. Song, so với phần mềm nguồn đóng (PMNĐ) thì OSS ưu việt hơn hẳn về độ an toàn, bởi vì: + Thứ nhất, mã nguồn được phổ biến rộng rãi giúp người lập trình và người sử dụng dễ phát hiện và khắc phục những lỗ hổng an toàn trước khi chúng bị lợi dụng. Các OSS thường có quy trình rà soát chủ động chứ không phải rà soát đối phó. + Thứ hai, ưu tiên tính an toàn đặt trên tiêu chí tiện dụng. Trước khi thêm bất cứ tính năng nào vào ứng dụng OSS, bao giờ người ta cũng cân nhắc đến khía cạnh an toàn và tính năng đó sẽ chỉ được đưa vào nếu không làm yếu đi tính an toàn của hệ thống. + Thứ ba, các hệ thống OSS chủ yếu dựa trên mô hình của Unix, nhiều người sử dụng, thuận tiện cho kết nối mạng. Vì vậy, chúng được thiết kế với một cấu trúc an toàn bảo mật cao, để một người sử dụng bất kỳ không thể đột nhập vào máy chủ, ăn trộm dữ liệu cá nhân của người khác hoặc làm cho mọi người không thể tiếp cận được với các dịch vụ do hệ thống cung cấp. - Tính ổn định / đáng tin cậy: Các OSS nổi tiếng là ổn định và đáng tin cậy. Đây là kết luận rút ra sau khi các nhà nghiên cứu đã tiến hành thử nghiệm so sánh với các PMNĐ khác. - Các chuẩn mở và việc không phải lệ thuộc vào nhà cung cấp: OSS thực chất dựa trên ba trụ cột “mở”: Nguồn mở, chuẩn mở, nội dung mở. OSS luôn sử dụng các chuẩn mở bởi hai lý do sau : 10 [...]... chung Mã nguồn mở hiểu theo nghĩa rộng là một khái niệm chung đợc sử dụng cho tất cả các phần mềm mà mã nguồn của nó đợc công bố rộng rãi công khai và cho phép mọi ngời tiếp tục phát triển phần mềm đó Vì thế để một chơng trình phần mềm trở thành một phần mềm mã nguồn mở, thì ngay tên của nó đã thể hiện phải mở mã và công 33 Tỡm hiu phn mm ngun m bố mã nguồn đó Tất cả các chơng trình có sử dụng PMNM... dụng và phân phối lại các phần mềm này dới dạng mã nhị phân và mã nguồn Tuy ngời dùng có quyền sửa đổi mã, nhng về nguyên tắc nhóm phát triển không cho phép ngời dùng tự do lấy mã nguồn từ kho mã ra sửa (check-out) và đa mã đã sửa vào lại kho mã mà không đợc họ kiểm tra trớc (check-in) BSD còn nghêm cấm việc dới danh nghĩa các Tổ chức để quảng bá hay chứng thực cho việc tạo ra sản phẩm từ việc sử dụng. .. giả, địa chỉ, của mã nguồn Nh là đoạn code ví dụ sau đây: < ?php /* ============================= Project: PE.MysqlAdmin Version: 1.0 Gamma Website: http://www.phpeasy.org Email: admin@phpeasy.org ==============================*/ // Protect password $pe["login_mode"]= 0; /*=============================== Tuy nhiên thì ngời làm phần mềm mã nguồn mở cũng nh ngời sử dụng phần mềm mã nguồn mở đó phải tuân... phép tái phân phối và sử dụng dới dạng mã nguồn (source form) và mã nhị phân (binary form), có hoặc không có sửa đổi, với điều kiện các qui định sau đợc thoả mãn: Tái phân phối mã nguồn phải đảm bảo giữ nguyên phần thông cáo về bản quyền (copyright notice) đã nêu ở trên, các qui định (conditions) đang đợc nêu ở đây, và điều khoản "Miễn trách nhiệm" (disclaimer) dới đây Tái phân phối mã nhị phân cần... `Gnomovision' viết bởi James Hacker Chữ ký của Ty Coon, 1 April 1989 Ty Coon, Phó Tổng Giám đốc." Có một cách rất thông dụng để một chơng trình trở thành một chơng trình phần mềm mã nguồn mở đó là gửi chơng trình và mã nguồn của nó vào diễn đàn Sourceforge.net diễn đàn mã nguồn mở lớn nhất thế giới hiện nay: http://www.sourceforge.net 36 ... phí, miễn phí bản quyền và không bị huỷ bỏ, về việc sao chép, chuẩn bị các Sản phẩm cấu thành cho, trng bày công khai, trình diễn công khai, các chứng chỉ phụ (sublicense), và phân phối Sản phẩm và Sản phẩm cấu thành dới dạng mã Nguồn hoặc Đối tợng 3 Việc cấp chứng chỉ sáng chế Dựa theo các điều khoản và điều kiện trong Chứng chỉ này, mỗi Ngời đóng góp cung cấp cho Bạn một Chứng chỉ sáng chế (Patent... pháp sẽ sử dụng các quyền hạn mà Chứng chỉ cho phép "Nguồn" - Source - là dạng thờng đợc u tiên sử dụng trong việc sửa đổi, nó bao gồm, nhng không giới hạn trong các dạng sau, mã nguồn phần mềm, văn bản nguồn, và các file cấu hình (configuration files) "Đối tợng" - Object - là bất kỳ dạng nào đợc sinh ra từ sự biến đổi hoặc biên dịch cơ học từ dạng Nguồn, bao gồm, nhng không giới hạn trong, mã linh dịch,... contribution) "Ngời đóng góp" - Contributor - bao gồm Ngời cấp chứng chỉ và bất kỳ Cá nhân hoặc Thực thể hợp pháp mang danh nghĩa của những ngời mà đóng góp của họ đã đợc Ngời cấp chứng chỉ ghi nhận và tích hợp vào trong Sản phẩm 2 Việc cấp chứng chỉ bản quyền Dựa theo các điều khoản và điều kiện trong Chứng chỉ này, mỗi Ngời đóng góp cung cấp cho Bạn một Chứng chỉ bản quyền (Copyright License) vĩnh viễn, toàn... nên sự vi phạm về quyền sáng chế, thì mọi Chứng chỉ sáng chế đợc cấp cho Bạn theo chứng chỉ này cho Sản phẩm này sẽ chấm dứt vào thời điểm vụ kiện đợc đệ trình 4 Tái phân phối Bạn có thể sao chép và phân phối các bản sao của Sản phẩm và các Sản phẩm cấu thành dới bất kỳ phơng tiện nào, có hoặc không có sửa đổi, dới dạng mã Nguồn hay Đối tợng, miễn là Bạn thoả mãn những điều kiện sau: 26 Tỡm hiu phn mm... Sản phẩm hoặc Sản phẩm cấu thành một bản sao của Chứng chỉ này; và 2 Bạn phải gắn kèm vào bất kỳ file bị sửa đổi nào một thông cáo rõ ràng về việc Bạn đã thay đổi file này; và 3 Bạn phải giữ nguyên, dới dạng mã Nguồn của bất kỳ Sản phẩm cấu thành nào mà Bạn đã phân phối, tất cả các thông cáo về bản quyền, nhãn hiệu thơng mại, quyền hạn có trong dạng mã Nguồn của Sản phẩm, ngoại trừ những thông cáo hoàn . nghĩa với miễn phí hoàn toàn, ít tính năng và không an toàn. Richard Stalhman (ông tổ của mã nguồn mở) đã nói rằng chúng ta nên “bắt đầu ngay từ trong. loại giấy phép của các tổ chức Mã nguồn mở khác nhau, nh Apache, GNU/GPL, Mozilla, hay của Tổ chức BSD (Berkely Software Distribution) vv sẽ đợc trình