1
2/24/2012
1
GIỚI THIỆU VỀ PHẦN MỀM MÃ
NGUỒN MỞ
Th.SNguyễnThị Mai Trang
Chương 1: GiớithiệuvềPhầnmềmmãnguồnmở
2
NỘI DUNG
l Phầnmềmvàvấnđề bảnquyềnphầnmềm
l Phongtràophầnmềmtựdo
l Phầnmềmmãnguồnmở
Chương 1: GiớithiệuvềPhầnmềmmãnguồnmở
3
Sở hữuphầnmềm
lMộtphầnmềmthuộcvềmộtchủ sở hữu
l Chủ sở hữucótoànquyền đốivớiphầnmềmvà
quyết địnhmứcđộ sử dụngvàkhaitháctrênphần
mềmthuộcquyềnsởhữu
l Khimuốnsửdụngmộtphầnmềm, ngườisửdụng
phảicómộtgiấyphépsửdụng(license) củaphần
mềm đó
Chương 1: GiớithiệuvềPhầnmềmmãnguồnmở
4
Giấyphépsửdụngphầnmềm
lLàmộtbảnhợpđồngchophépngườisửdụng
khaithácphiênbảnphầnmềm, qui địnhvềnhững
khả năngcóthể sử dụng đốivớiphầnmềm
l Cáctiêuchíphânloạiphầnmềmdựatrêngiấy
phép
– Khả năngphânphốilại(Distribution Possibility)
– Truycậpvàomãnguồn(Accessbilityto source code)
– Phísửdụng(Free)
2
Chương 1: GiớithiệuvềPhầnmềmmãnguồnmở
5
Tiêuchíphânloạiphầnmềm
lKhả năngphânphốilại
– Quyền đượcphépsaochépvàphânphốilạiphiênbản
phầnmềmmàbạnđangcótrongtay(đãcógiấyphép
sử dụng) hay không?
l Truycậpvàomãnguồn
– Chophépxemmãnguồn, sử dụng, sửamãnguồnphần
mềm
l Phísửdụng
– Cóphảitrả tiềnchochủ sở hữuphầnmềmhay không?
Chương 1: GiớithiệuvềPhầnmềmmãnguồnmở
6
Phầnmềmthươngmại
l Bảnquyềncủaphầnmềmthươngmạichỉ chophépngười
sử dụngphầnmềmtheonhữngràngbuộcghitrêngiấy
phép
l Bảnquyềnloạinàyrấtbịhạnchế
l Trongtrườnghợpphầnmềmcólỗihay cácchứcnăng
hoạt độngkhôngtốt
– Chờ chủ sở hữusửalỗi
– Cácnhàsảnxuấtphầnmềmkhôngnhiệttìnhsửalỗihoặcthực
hiệntrongthờigianrấtlâu
– Ngườisửdụngcóthể phảitrả thêmphícậpnhật
– Ngườisửdụngkhôngcómộtphươngtiệngì để thúc đẩytiếntrình
sửa đổivàcậpnhậtcácphầnmềmthươngmại
Chương 1: GiớithiệuvềPhầnmềmmãnguồnmở
7
Phầnmềmmiễnphí/ trả mộtphần
l Phầnmềmmiễnphí(Freeware) vàphầnmềmtrả
mộtphần(Shareware) khônglàphầnmềmmã
nguồnmở
– Vẫncóchủ sở hữu
– Đượcphânphốimộtcáchtựdo
l Phầnmềmtrả mộtphần: saumộtthờigian đã
định, ngườisửdụngphảitrả thêmtiền để sử dụng
tiếp
Chương 1: GiớithiệuvềPhầnmềmmãnguồnmở
8
Phầnmềmmãnguồnmở
lPhầnmềmmãnguồnmởphảihộiđủ cácyếutố
sau
– Đượcphânphối đếnngườisửdụngcùngvớimãnguồn
cóthểđượcsửađổi
– Nócóthểđượcphânphốilạimàkhôngbịmộtràng
buộcnàokhác
– Cóthể phânphốicảnhữngthay đổitrênmãnguồngốc
3
Chương 1: GiớithiệuvềPhầnmềmmãnguồnmở
9
Mộtsốloạiphầnmềmthôngdụng
ĐôikhiCóĐượcphépPhầnmềmmãnguồn
mở (Open Source
Software)
KhôngKhôngĐôikhiPhầnmềmtrả một
phần(Shareware)
CóKhôngĐôikhiPhầnmềmmiễnphí
(Freeware)
KhôngKhôngKhôngPhầnmềmthương
mại(Commercial
Software)
MiễnphíTruycậpvào
mãnguồn
Khả năng
phânphốilại
Chương 1: GiớithiệuvềPhầnmềmmãnguồnmở
10
NỘI DUNG
l Phầnmềmvàvấnđề bảnquyềnphầnmềm
l Phongtràophầnmềmtựdo
l Phầnmềmmãnguồnmở
Chương 1: GiớithiệuvềPhầnmềmmãnguồnmở
11
Phongtràophầnmềmtựdo
l Nhằmtạoranhữngphầnmềmtựdo (Free
Software) làtạoranhữngphầnmềmmàngườisử
dụngcóthể tự do chiasẻ, nghiêncứuvàsửađổi
chúng
l ĐượckhởixướngbởiRichard M. Stallman vào
năm1983 khiôngbắtđầudựánGNU
– Viếttắtcủa“GNU is NOT UNIX”
– Nhằmthaythế hệđiềuhànhUNIX vớitínhnăngtựdo
l Thànhlậpquỹ phầnmềmtựdo (FSF-Free
Software Foundation) năm1985
Chương 1: GiớithiệuvềPhầnmềmmãnguồnmở
12
4
Chương 1: GiớithiệuvềPhầnmềmmãnguồnmở
13
Địnhnghĩaphầnmềmtựdo
l Phầnmềmtựdo đề cập đếnsựtựdo, không đề
cập đếnvấnđề chi phí/giácả
l Sựtựdo bao gồm4 yếutố
– Tựdo thựcthi chươngtrìnhchobấtkỳmụcđíchgì
– Tự do nghiêncứucáchthựcthi củachươngtrìnhvà
sửa đổichúngchomụcđíchcủabạn. Truycậpvàomã
nguồncủachươngtrìnhlàtiền đề
– Tự do phânphốiphầnmềmchongườikhác
– Tự do cảitiếnchươngtrìnhvàphânphốicảitiếncủa
bạnchocộng đồng
Chương 1: GiớithiệuvềPhầnmềmmãnguồnmở
14
KháiniệmCopyleft
l Copyright nhằm để bảovệquyềntácgiả
l Copyleftlàmộtphươngpháptổngquátnhằmlàm
chomộtchươngtrìnhtựdo vàyêucầutấtcả
nhữngphiênbảnsửađổihay mở rộngcủa
chươngtrìnhcũngphảitựdo
l Giấyphép“GNU General Public License”
– Viếttắt“GNU GPL”
– Cụ thể hóakháiniệmCopyleft
– DùngchophầnlớncácsảnphẩmcủadựánGNU
Chương 1: GiớithiệuvềPhầnmềmmãnguồnmở
15
LịchsửgiấyphépcủaGNU
l Version 1-GPL v1-1989
l Version 2-GPL v2-1991
l Version 2-LGPL v2 (Library General Public
License) -1991
l Version 2.1-LGPL v2.1 (Lesser General Public
License) -1999
l Version 3-GPL v3-2007
Chương 1: GiớithiệuvềPhầnmềmmãnguồnmở
16
GNU LGPL V2
l Cóthể bánmãthựcthi tạoratừphiênbảnsửađổi
– Tuynhiênmãnguồnphảicôngbố
l Mãnguồncủasảnphẩmvàtấtcảcácsửađổisau
đóphảitồntạidướidạngphầnmềmtựdo
l Tấtcảcácchươngtrìnhcósửdụngmãnguồn
GPL phảipháthànhdướigiấyphépGPL
– Liênkếtđộnghay tĩnh đếnmãnguồnhoặcthư việnGPL
– Sao chépmộtsốdòngcủamãnguồnGPL
l />2.0.html
5
Chương 1: GiớithiệuvềPhầnmềmmãnguồnmở
17
GNU LGPL v2.1
l Đượctạora để chophépliênkếtđộngmãnguồnkhông
pháthànhdướidạngGPL hoặcLGPL vàomãnguồnLGPL
l Dànxếpviệcsửdụngcácthư việntựdo vàomụcđích
thươngmại, vídụthư việnGNU C
l Hầuhếtcác điềukhoảnvà điềukiệntươngtựGPL
l Nếubạnthay đổivàphânphốimộtthư việnLGPL
– Thư việnvànhữngthay đổiphải đượccôngbố(mãthựcthi vàmã
nguồncùngvớichúthíchvềnhữngsửađổi)
– Bằngsángchếđượcgắnvớisựphânphốinhữngsửađổi
l />Chương 1: GiớithiệuvềPhầnmềmmãnguồnmở
18
NỘI DUNG
l Phầnmềmvàvấnđề bảnquyềnphầnmềm
l Phongtràophầnmềmtựdo
l
l
Ph
Ph
ầ
ầ
n
n
m
m
ề
ề
m
m
mã
mã
ngu
ngu
ồ
ồ
n
n
m
m
ở
ở
Chương 1: GiớithiệuvềPhầnmềmmãnguồnmở
19
SángkiếnmãnguồnmởOSI
l OSI (Open Source Initiative–www.opensource.org)
l Làtổchứcphi lợinhuận đượcthànhlậpnăm1998
bởiEric Raymond and Bruce Perens
l Thaythế kháiniệmPhầnmềmtựdo (Free
Software) bằngkháiniệmPhầnmềmmãnguồn
mở (Open Source Software) để tránhsựhiểu
nhầm:
– Ý nghĩatựdo vớimiễnphícủatừFree tiếngAnh
– Phầnmềmtựdo làkhôngthươngmại
Chương 1: GiớithiệuvềPhầnmềmmãnguồnmở
20
6
Chương 1: GiớithiệuvềPhầnmềmmãnguồnmở
21
Phầnmềmmãnguồnmở
lLàphầnmềmdướidạngmãnguồnmànóthường
đượctạorabởimộtcộng đồng ảo, cộngtáctrên
Internet vàthường đượctảivềmiễnphítừInternet
hoặc đượcphânphốidướidạngcác đĩaCD-ROM
vớimộtgiákhông đángkể
l Tácgiả giữ bảnquyền(copyright) đốivớimã
nguồnvàphânphốimãnguồndướimộtgiấyphép
địnhnghĩanhữnggìbạnđược(hoặckhông được)
làm đốivớimãnguồn
Chương 1: GiớithiệuvềPhầnmềmmãnguồnmở
22
ÍchlợicủaPhầnmềmmãnguồnmở
l PMMNM đượcpháttriểnbởimộtcộng đồngnhiềungười
nhờđócóthể tìmracáclỗimộtcáchdễdàng
– Là điểmmạnhnhấtcủaPMMNM
– Mỗingười, vớikhả năngcóhạncủamìnhcóthể xemxétvàcảitiến
cáccôngviệc đượcthựchiệnbởinhữngngườibạnkhác
– Mỗithànhviênchỉ tậptrungvàophầnthuộclĩnhvựcchuyênsâu
củamình
– 500 lậptrìnhviênlàmviệcvớithờigiankhácnhau, tậptrungvào
lĩnhvựcchuyênsâucủamìnhthìsẽtốthơn50 lậptrìnhviênlàm
việctoànthờigian
l CáchphânphốicủaPMMNM giúpnhiềungườicó điều
kiệntiếpcậnvớichúnghơn. Nhấtlà đốivớicácnước đang
pháttriển, nơimàgiáphầnmềmdànhchophầnbảotrì,
bảohànhluônlàgánhnặng
Chương 1: GiớithiệuvềPhầnmềmmãnguồnmở
23
ĐinhnghĩaPMMNM củaOSI
l Mãnguồnmởkhôngchỉ làtruycậpvàomãnguồn
l OSI đưara10 tiêuchímàmộtgiấyphépcầnđạt
được để trở thànhmộtgiấyphépmãnguồnmở
(Open Source License)
l 1. Tự do phânphốilại(freeRedistribution)
– Bảnquyềnsẽkhônghạnchế bấtcứaibánhoặccho
phầnmềm, không đòihỏitiềnbảnquyềnhay mộtchi phí
nàochothươngvụnày
Chương 1: GiớithiệuvềPhầnmềmmãnguồnmở
24
ĐinhnghĩaPMMNM củaOSI (tt)
l 2. Mãnguồn(Source code)
– Chươngtrìnhphải đượcphânphốicùngvớimãnguồn
đượccôngbốbằngnhữngphươngtiệncôngcộngmà
ngườikháccóthể lấy đượcmãnguồnvớimộtchi phí
hợplýnhất
l 3. Sảnphẩmkếthừa(Derived Works)
– Giấyphépphảicôngnhậnnhữngsửađổivànhữngsản
phẩmkếthừa, chophépchúng đượcphânphốivới
cùngnhững điềukhoảnnhư giấyphépcủaphầnmềm
ban đầu
7
Chương 1: GiớithiệuvềPhầnmềmmãnguồnmở
25
ĐinhnghĩaPMMNM củaOSI (tt)
l 4. Tínhtoànvẹncủamãnguồncủatácgiả
(Integrity of The Author’s Source code)
– Giấyphépcóthể ngăncảnviệcphânphốimãnguồn
dướidạngbịsửađổi, chỉ khigiấyphépchấpnhậnsự
phânphốicáctậptin válỗi(patch file) vớimãnguồnvì
mục đíchsửađổichươngtrìnhtạithời điểmxâydựng
(built time) chươngtrình. Giấyphépphảichophépmột
cáchtườngminh việcphânphốiphầnmềmtạoratừmã
nguồnbịsửađổi. Giấyphépcóthể yêucầunhữngsản
phẩmkếthừaphảimangmộtcáitênkháchoặcsốphiên
bảnkhácso vớiphầnmềmgốc
Chương 1: GiớithiệuvềPhầnmềmmãnguồnmở
26
ĐinhnghĩaPMMNM củaOSI (tt)
l 5. Khôngphânbiệt đốixửgiữacáccánhânvàcác
nhóm(No Discrimination Against Persons or
Groups)
l 6. Khôngphânbiệt đốixửvớimụcđíchsửdụng
(No Discrimination Against Fields of Endeavor)
l 7. Phânphốigiấyphép(Distribution of license)
– Nhữngquyền đượckèmvớichươngtrìnhphải đượcáp
dụngvớitấtcảnhữngngườimàsau đóchươngtrình
đượcphânphốilạimàkhôngcầnthiếtphảithựcthi
thêmnhữnggiấyphépphụ củanhữngthànhphầnnày
Chương 1: GiớithiệuvềPhầnmềmmãnguồnmở
27
ĐinhnghĩaPMMNM củaOSI (tt)
l 8. Giấyphépkhông đượcdànhriêngchomộtsản
phẩm(License Must Not Be Specific to a Product)
– Nhữngquyền đượckèmtheochươngtrìnhthìkhôngbị
phụ thuộcvàoviệcchươngtrìnhlàthànhphầncủamột
bảnphânphốiphầnmềmcụthể. Nếuphầnmềmđược
rúttríchtừbảnphânphốivà đượcsửdụnghoặcphân
phốilạivớinhững điềukhoảncủagiấyphépcủa
chươngtrìnhthìtấtcảcácbênmàchươngtrình được
phânphối đếncũngnêncó đượccácquyềnlợingang
bằngnhư nhữngquyềnlợiđược đưaratheobảnphân
phốiphầnmềmgốc
Chương 1: GiớithiệuvềPhầnmềmmãnguồnmở
28
ĐinhnghĩaPMMNM củaOSI (tt)
l 9. Giấyphépkhông đượccảntrở phầnmềmkhác
(License Must Not Restrict Other Software)
– Giấyphépkhông được đặtnhữnghạnchế lênnhững
phầnmềmkháccùng đượcphânphốivớiphầnmềm
củagiấyphépnày. Vídụ, giấyphépkhông đượckhăng
khăngrằngtấtcảcácphầnmềmkhác đượcphânphối
trêncùngmộtphươngtiệnthìphảilàphầnmềmmã
nguồnmở
8
Chương 1: GiớithiệuvềPhầnmềmmãnguồnmở
29
ĐinhnghĩaPMMNM củaOSI (tt)
l 10. Giấyphépphảitrunglậpvềmặtcôngnghệ
(License Must Be Technology-Neutral)
– Khôngcósựdựtrùnàocủagiấyphépdànhchomột
côngnghệ riênghay mộtkiểugiaodiệnnào đó
l OSI duytrìdanhsáchcácgiấyphép đạttiêuchuẩn
PMMNM
l Black Duck Software cậpnhậtthườngxuyên20
giấyphépmãnguồnmởđượcdùngnhiềunhất