GNU General Public License

**GNU GPL** гэдэг нь **GNU General Public License** товчоор **GPL**. *General*-ерөнхий, *Public*-бүх нийтийн, *License*-лиценз гэсэн утгатай англи үгний товчлол юм.
GNU General Public License нь анхлан GNU хэмээх төсөлд зориулан Ричард Сталлман хэмээх хүний бичсэн, чөлөөт программ хангамжийн лицензэд өргөн ашиглагддаг лиценз юм. 
**GNU General Public License нь доорх 4 эрх чөлөөг танд олгодог.** Үүнд:
* Программыг ямар ч зорилгоор хүссэнээрээ ажилуулах эрхтэй
* Программын эх кодоос суралцаж, хүссэнээрээ өөрчлөх боломжтой
* Программыг хүссэн үедээ хуулбарлан, бусдад тараах боломжтой
* Хүсвэл өөрийн өөрчилсөн хувилбарыг нийтэд тараах болон хэвлэн гаргах эрхтэй

**GNU General Public License-д** 
* та энэ программыг өөрчилж болно, 
* энэ программыг хуулбарлаж болно,
* мөн та хуулбаруудаа нийтэд тарааж болно,
* өөрчилсөн хувилбараа ч нийтэд тарааж болно.
Гэхдээ нэг л нөхцөлтэйгөөр: таны тарааж буй ямар ч хувилбар яг ийм л лицензтэй байх ёстой бөгөөд эх код нь нээлттэй байх ёстой.
Энэ нь программыг танаас авсан хүн бүр яг тань шиг эрхийг эдлэх ёстой гэсэн үг юм.

## GPL-ийн төрлүүд 
Маш олон Чөлөөт Программ Хангамжийн лиценз байдаг. Учир нь дээрх 4 эрх чөлөөг хүлээн зөвшөөрдөг л бол тэр нь Чөлөөт Программ Хангамжийн лиценз гэсэн үг юм.
GNU General Public License нь тэдгээрийн дотроос хамгийн анхны Чөлөөт Программ Хангамжийн лиценз юм.
Чөлөөт Программ Хангамжийн лицензийн ерөнхий 2 ангилал байдаг.
* Сopyleft лиценз
* Сopyleft биш лиценз

**Copyleft лиценз** нь бүх хэрэглэгчдийнхээ эрх чөлөөг идэвхтэйгээр өмгөөлдөг. Өөрөөр хэлбэл бидэнд зөвхөн дээрх 4 эрх чөлөөг олгоод зогсохгүй программын хуулбарыг авсан хэрэглэгч бүр ижил эрх чөлөө эдлэх баталгааг өгдөг юм. 
Copyleft лиценз бол код дундын этгээдээр дамжсан ч гэсэн уг этгээд танд кодыг дамжуулахдаа яг өөр шигээ эрхтэйгээр кодыг танд дамжуулж өгөх ёстой гэсэн үг юм.
GNU General Public License бол copyleft лиценз юм.

**Copyleft биш лицензүүд** нь дээр дурдсан 4 эрхийг олгодог боловч програмын өөрчлөгдсөн хувилбарыг бүхлээр нь чөлөөт биш байдлаар гаргахыг зөвшөөрдөг.
* GNU Lesser General Public License (LGPL) нь программ хангамжийн сангуудад анхлан зориулж гаргасан GPL-ийг өөрчилсөн хувилбар юм. 
* GNU Free Documentation License нь анхлан GNU программ хангамжийн бичиг баримтуудад ашиглахаар гарсан юм.
* Affero General Public License (GNU AGPL) нь сүлжээний серверийн программ хангамжид зориулагдан гарсан мөн ижил лиценз юм. 

## GNU General Public License түүх 
GPL-ыг 1989 онд GNU төслийн нэг хэсэг программд ашиглахаар Ричард Сталлман бичжээ. Анх GPL нь GNU Emacs, GNU Debugger, GNU Compiler Collection зэрэг программуудын дээр үеийн хувилбаруудад ашиглагдаж байсан хоорондоо төстэй лицензүүдийг нэгтгэх зорилготой үүсжээ. 
Эдгээр лицензүүд нь одоогийн GPL-д дурдагдсан заалтуудтай төстэй заалтуудтай байсан боловч програм бүрд тусгайлан өөр өөр байв. 
Сталлманы зорилго бол ямар ч төслүүд ашиглаж болохоор нэг лиценз бий болгох явдал байсан бөгөөд ингэснээр олон төслүүд кодоо дундаа ашиглах боломжтой болох учиртай байв.
2007 оны 8-р сар гэхэд Freshmeat сайтад мэдээлснээр чөлөөт програм хангамжуудын ойролцоогоор 65% нь буюу 43442 нь, SourceForge.net-д мэдээлснээр 2006 оны 1 сард төслүүдийн 68% нь GPL лицензийг ашиглаж байна хэмээн мэдээлж байжээ. 
Red Hat Linux 7.1-аас явуулсан 2001 оны судалгаанд эх кодын 50% нь GPL лицензтэй байна хэмээн мэдээлж байжээ. 
## GNU General Public License хувилбарууд 
GNU General Public License нь 3 хувилбартай

* **Хувилбар 1** - 1989 онд Чөлөөт Програм Хангамжийн copyleft лицензээр GNU General Public License-ийн эхний хувилбар гарав. 
* **Хувилбар 2** - Ричард Сталманы хэлснээр GPLv2 дах гол өөрчлөлт нь “Эрх чөлөө эсвэл Үхэл” гэсэн ойлголт байлаа. Энэ нь хэрэв хэн нэгэн бусад хэрэглэгчдийн эрх чөлөөг хүндэтгэн үзэх нэрийдлээр (тухайлбал, хэрэв хуулийн шийдвэрээр програмыг зөвхөн 2-тын файл хэлбэрээр тараах тогтоол гарвал) GPL бүхий програм хангамжийг тараахыг хориглох ямар нэг хязгаарлалт нэмбэл програмыг тараах боломжгүй болно. Энэ нь GNU GPL-ийн эрх чөлөөнүүдийн нэг болох чөлөөтэй тараах эрхийг хориглоно гэсэн үг юм. Иймд Хувилбар 2 нь энэ асуудлыг шийдэж өгсөн.
* **Хувилбар 3** - GNU GPLv3-т хийгдсэн гол өөрчлөлтүүд:
** Patent Licensing. 
** “Tivoization.” 
** Digital Rights Management (DRM). 
** Additional Terms. 
** Termination Cure Period.
** Patent Licensing. Хувилбар 3 нь GPL код тараагчдыг хэрэглэгчдийн эсрэг патентын дагуу зөрчил үүсгэн нэхэмжлэл хийхийг хориглож өгсөн. Мөн шинэ лиценз нь GPL кодыг ашиглан зөвхөн өөрсдийн хэрэглэгчдээсээ ашиг олдог, бусдаас нь тэгж чаддаггүй “хорон санаа” агуулсан патентийн лицензтэй компаниудыг GPL код тараахыг хориглосон.
** “Tivoization.” Энэхүү нэр томъёог Ричард Сталлман зохиожээ. Нээлттэй эх бүхий систем мөртлөө програмдаа өөрчлөлт хийхийг зөвшөөрдөггүй, өөрчлөлт хийхээс хамгаалсан техник хангамж ашиглах явдлыг ийнхүү нэрлэжээ. Tivo нь олонд танил болсон дижитал видео бичигч үйлдвэрлэгч бөгөөд өөртөө олон тооны GPL програмуудыг агуулдаг. Түүний дотоод програм хангамжид өөрчлөлт хийнгүүт функцийн ажиллагааг нь зогсоодог байхаар төхөөрөмжөө програмчилжээ. Энэ нь 1-р эрх чөлөө болох эх кодыг хүссэнээрээ өөрчлөх эрх чөлөөг хэрэглэгчид олгохгүй байна гэсэн үг юм. Tivo нь ихэвчлэн 2 төрлийн үл бүтэх зорилгоор ашиглагддаг. Үүнд: 
*** Эхнийх нь тэд хэрэглэгчийг тандаж, хэрэглэгч юу үзэж байгааг өөрсөддөө илтгэдэг байхаар програмчилсан байдаг.
*** Хоёрдах нь хэрэглэгчийг Tivo-гүйгээр ямар ч TV програм хуулбарлахыг зөвшөөрдөггүй. Энэ нь “Digital Rights Management” –ийн нэг хэлбэр юм. Иймд GPL-ийн 3-р хувилбар нь tivoisation-ийг хориглодог байхаар зохиомжлогдсон.
** Digital Rights Management (DRM). АНУ-ийн Digital Millennium Copyright Act болон түүнтэй төстэй АНУ-ын биш хуулиуд нь зохиогчийн эрх бүхий ажлуудыг санаатайгаар хуулбарлах, хууль бусаар хандах зэрэг үйлдлүүдийг хориглодог. Иймэрхүү үйлдлүүдийг хянахын тулд “digital rights management” (DRM) технологийг ашигладаг. Энэ нь зөвхөн зөвшөөрөгдсөн дижитал файлуудыг татах үед хэмжээ болон файлын шинж чанаруудыг нь хянаж байдаг. Иймд GPL лиценз бүхий DRM програмууд таныг кодыг нь өөрчлөхийг зөвшөөрөхгүй байх тохиолдол байдаг. Учир нь хэрэглэгч уг програмын кодыг өөрчлөн ямар нэг хязгаарлалтгүй болгож болох учраас. Харин уг хувилбарт тэд GPL бүхий програмыг өөрчлөх юмуу түүн дээр нэмэн програм бичихийг тань хориглож чадахгүй гэсэн үг.

## GNU Lesser General Public License (LGPL) гэж юу вэ? GPL & LGPL ялгаа 
GNU Project нь сангуудад хэрэглэгддэг 2 үндсэн лицензтэй.
* Эхнийх нь GNU Lesser GPL
* Нөгөөх нь Жирийн GNU GPL
Энэ 2 лиценз нь хоорондоо маш их ялгаатай. Lesser GPL нь санг үнэтэй, чөлөөт бус програмд ашиглах боломжтой байдаг.
Харин Жирийн GNU GPL-ийг зөвхөн үнэгүй, чөлөөт програмуудад ашиглахыг зөвшөөрдөг байна.
LGPL-ийн нэг онцлог нь хэн ч LGPL бүхий програмыг GPL бүхий програм руу хөрвүүлж болдог.
## Нийтлэг асуултууд 
* **Чөлөөт програм хангамж бүр GPL-ийг ашигладаг гэсэн үг үү?**
Тийм биш. Чөлөөт програм хангамжийн өөр олон лиценз байдаг.
** Apache License, Version 2.0
** Artistic License 2.0
** Berkeley Database License
** Boost Software License
** Modified BSD License
** FreeBSD License
** Educational Community License 2.0
** …
* **GPL нь өөрчилсөн хувилбарынхаа эх кодыг олон нийтэд түгээхийг шаарддаг уу?**
GPL нь өөрийнхөө өөрчилсөн хувилбараа юмуу аль нэг хэсгийг нь нийтэд заавал тараахыг шаарддаггүй. Та заавал тараалгүйгээр өөрийн хувийн хэрэгцээнд өөрчлөөд ашиглах боломжтой. Энэ нь байгууллагын хувьд ч хүчинтэй. Байгууллага өөрсдийн өөрчилсөн хувилбараа нийтэд тараалгүйгээр дотооддоо ашиглаад байх боломжтой.
Гэвч хэрэв та өөрчилсөн хувилбараа олон нийтэд ямар нэг хэлбэрээр тараах гэж байгаа бол GPL нь таныг өөрчилсөн эх кодоо мөн хэрэглэгчдэд ил байхыг шаардах болно.
Өөрчилсөн хувилбараа тараах эсэх нь таны л хэрэг юм. 
* **Хэрэв би хэн нэгнийг GPL бүхий програмтай болохыг нь мэдвэл түүнээс хуулбарыг нь надад өгөхийг шаардаж болох уу?**
Үгүй. GPL нь түүнд хэрэв тэр өөрөө хүсвэл л програмынхаа хуулбарыг тараах эрхийг өгдөг. Хэрэв тэр хүсвэл програмаа тараахгүй байх эрхтэй.
* **Би GPL бүхий програмд өөрчлөлт хийвэл өөрийнхөө өөрчлөлтөнд зохиогчийн эрх авах ёстой юу?**
Та өөрчлөлтөндөө заавал зохиогчийн эрх авах шаардлагагүй. Ихэнх орнуудад энэ нь автоматаар хийгдчихдэг. Иймд хэрэв та өөрчлөлтөндөө зохиогчийн эрх авахыг хүсэхгүй байвал өөрийн өөрчлөлтийг ямар нэгэн олон нийтийн домэйнд байрлуулах хэрэгтэй.
Зохиогчийн эрх авсан ч бай, аваагүй ч бай та өөрчилсөн хувилбараа GPL лицензийн дор л гаргах ёстой.
* **GPL нь програмын хуулбарыг зарахыг зөвшөөрөх үү?** 
GPL нь хүн бүрт үүнийг зөвшөөрнө. Хуулбарыг зарах эрх бол чөлөөт програм хангамжийн тодорхойлолтын нэг хэсэг юм. 
* **Миний сайтнаас GPL бүхий програмыг татахад нь төлбөртэй байж болох уу?**
Тийм. Та програмын хуулбарыг тараахдаа хүссэн үнээ тогтоож болно. Хэрэв та бинариг нь татахаар тавьсан бол түүнд харгалзах эх кодыг мөн ижил хандалттайгаар тавих ёстой.
Ингэхдээ програмын эх кодыг татах төлбөр нь бинариг нь татах төлбөрөөс илүүгүй байх ёстой.
* **Надаас GPL бүхий програмын хуулбарыг авсан хүнээс хуулбарыг тараахдаа надад заавал мэдэгдэж байх юмуу надад төлбөр төлж байхыг би шаардаж болох уу?**
Болохгүй. Ийм зүйл шаардах нь програмыг чөлөөт гэсэн утгыг нь алдагдуулах учраас.
GPL бол чөлөөт програм хангамжийн лиценз, иймээс энэ лиценз нь хүмүүст програмыг ашиглаж, тараасныхаа төлөө ямар нэг төлбөр төлж байхыг зөвшөөрдөггүй. 
* **Хэрэв би GPL лицензтэй програмыг төлбөртэй тараавал олон нийтэд бас төлбөртэйгээр хүрэх ёстой юу?**
Үгүй. Хэн нэгэн танд төлбөр төлж хуулбарыг авчихаад түүнийгээ олон нийтэд төлбөргүйгээр тарааж болно. Тухайлбал, хэн нэгэн танд төлбөр төлж хуулбарыг авчихаад түүнийгээ олон нийтийн сайт дээр тавьчих эрх түүнд бий.
* **Яагаад GPL нь програмын хуулбар бүртээ GPL-ийн хуулбарыг багтаасан байхыг шаарддаг юм бэ?**
Лицензийн хуулбарыг програмдаа багтаах нь маш чухал. Ингэснээр програмын хуулбарыг авсан хүн бүр өөрийнхөө эрхийг мэдэх боломжтой болох юм.
Та лиценкийг бүрэн эхээр нь багтаахын оронд лиценз бичигдсэн ямар нэг URL-ийг оруулчихъя хэмээн бодож байж магад. Гэвч 5 юмуу 10 жилийн дараа тэр URL хүчинтэй байх эсэх нь тодорхойгүй шүү дээ. 20 жилийн дараа гэхэд бидний мэдэх одоогийн байгаа URL-ууд байхгүй болчихож магадгүй шүү дээ.
Иймээс програмын хуулбарыг авсан хүн бүрт лицензийн хуулбар очих ёстой. 
* **Би зайгаа хэмнэхийн тулд GPL-ийн өмнөх үг юмуу лицензийг өөрийн програмдаа хэрхэн ашиглах талаар зааврыг нь алгасаж болох уу?** 
Өмнөх үг болон зааврууд нь бүгдээрээ GNU GPL-ийн нэгдмэл хэсгүүд учраас тэдгээрийг алгасаж болохгүй. Мөн GPL нь зохиогчийн эрхээр хамгаалагдсан учир GPL-ийг зөвхөн бүтнээр нь үг бүрчлэн хуулбарлахыг л зөвшөөрдөг. 
* **Хоёр лиценз хоорондоо “нийцтэй” (“compatible”) байх гэж юу гэсэн үг вэ?**
2 програмыг нийлүүлж, нэгэн програм болгохын тулд танд эдгээр програмуудыг ингэж ашиглах зөвшөөрөл хэрэгтэй болно. Хэрэв эдгээр 2 програмын лицензүүд үүнийг зөвшөөрч байвал тэдгээр нь нийцтэй. Хэрэв лицензүүдийг нэгэн зэрэг хангах ямар ч арга байхгүй бол тэдгээр нь нийцгүй лицензүүд юм. 
Зарим лицензүүдэд 2 модулыг хооронд нь холбох үйлдэл зөвшөөрөгдөх мөртлөө тэдгээрийн кодуудыг нэг модулд нэгтгэх нь зөвшөөрөгдөхгүй байж болдог. 
Хэрэв та 2 тусдаа програмыг нэгэн системд суулгахыг хүсвэл энд лицензүүд хоорондоо нийцтэй байхыг шаардахгүй. Учир нь тэдгээрийг нэг том програм болгож нэгтгээгүй шүү дээ. 
* **Би чөлөөт бус сан ашигласан чөлөөт програм бичиж болох уу?**
Хэрэв та үүнийг хийвэл таны програм бүтнээрээ чөлөөт орчинд ашиглагдахгүй болно. Хэрэв таны програм ямар нэг ажлыг гүйцэтгэхийн тулд чөлөөт бус санг ашигласан бол ийм ажлыг Чөлөөт Ертөнцөд хийж болохгүй. 
Иймд та энэ санг ашиглахгүйгээр ажлаа хийх өөр арга байхгүй юу? Энэ санг өөр чөлөөт сангаар орлуулж болохгүй гэж үү? гэсэн асуултуудыг өөртөө тавиарай. 
* **Би GPL бүхий програмын хуулбарыг өөр лицензтэйгээр авсан гэх хэн нэгнийг мэдэх юм байна. Энэ нь боломжтой юу?**
GNU GPL нь хэрэглэгчдэд програмдаа өөр лиценз хавсаргахыг зөвшөөрдөггүй. Гэвч зохиогчийн эрхийг эзэмшигч нь програмаа хэд хэдэн ялгаатай зэрэгцээ лицензтэйгээр гаргаж болдог. Тэр лицензүүдийнх нь нэг нь GNU GPL байж болдог. 
* **Би өөрийн бичсэн програмаа GNU GPL лицензтэйгээр гаргахыг хүсч байгаа боловч энэ програмынхтай яг адилхан эх кодыг чөлөөт бус програмд бас ашиглахыг хүсч байгаа юм л даа. Энэ нь боломжтой юу?** 
Хуулийн дагуу бол ингэхэд ямар нэг саад байхгүй. Хэрэв та кодын зохиогчийн эрхийг эзэмшигч бол та түүнийг хэдэн ч ялгаатай лицензээр, хэдэн ч удаа рилийз хийж болно. 
* **Миний програмымг ашиглан гаргасан гаралтыг мөн GPL болгох арга бий юу? Тухайлбал, хэрэв миний программ техник хангамжийн дизайныг зохиомжлоход ашиглагддаг бол түүнээс гарч ирсэн дизайнуудыг бас чөлөөт байхыг би шаардаж болох уу?**
Энэ бол хуулиар боломжгүй зүйл юм. Хэрэв хэрэглэгч таны программыг өөрийн өгөгдлийг оруулах юмуу хөрвүүлэхэд ашиглаж байгаа бол гарсан гаралтын зохиогчийн эрх нь түүнд харъяалагдах болохоос танд биш юм. 
Харин, хэрэв гаралтанд гарч буй ямар нэг гаралт нь таны програмын текстээс тодорхой хэсгийг хуулбарлаж байгаа бол та энэ талаар ярьж болох юм.

## Ашигласан эх сурвалжууд 
* МУИС, Математик Компьютерын сургууль, Програм Хангамжийн Инженер 4А анги ба Мэдээллийн Системийн Инженерийн анги 2008 он
* Transcript of Richard Stallman at the 2nd international GPLv3 conference ; 21st April 2006
* Wikipedia GNU General Public License
* GNU Lesser General Public License
* Lesser GPL 
* GNU General Public License – FAQ

Ангилал:GNU
Ангилал:Чөлөөт программ хангамжийн лиценз