Журнал LinuxFormat - перейти на главную

LXF162:Сравнение

Материал из Linuxformat
Перейти к: навигация, поиск


Ка­ж­дый ме­сяц мы срав­ни­ва­ем тон­ны про­грамм — а вы можете отдыхать!

Содержание

Сво­бод­ные ли­цен­зии

Все про­грам­мы с от­кры­тым ко­дом сво­бод­ны, но неко­то­рые сво­боднее дру­гих. Бен Эве­рард сравнива­ет ли­цен­зии, даю­щие на­шим про­грам­мам сво­бо­ду.

Мы час­то го­во­рим о про­грам­мах с от­кры­тым ко­дом так, слов­но это – од­на-един­ст­вен­ная идея, и од­на-един­ст­вен­ная фи­ло­со­фия. На са­мом де­ле в этой об­лас­ти име­ет­ся мно­же­ст­во те­чений и дви­жений, и ка­ж­дое оп­ре­де­ля­ет­ся соб­ст­вен­ной ли­цен­зи­ей. Эти до­ку­мен­ты со­дер­жат в се­бе идеа­лы груп­пы ко­де­ров точ­но так же, как по­ли­ти­че­­ский манифест со­дер­жит в се­бе идеа­лы по­ли­ти­че­­ской пар­тии; един­ст­вен­ное от­ли­чие в том, что с юри­ди­че­­ской точ­ки зрения они обя­за­тель­ны к ис­полнению.

Они опи­сы­ва­ют пра­ва, ко­то­рые раз­ра­бот­чи­ки пе­ре­да­ют поль­зо­ва­те­лям, и тре­бо­вания, ко­то­рые они предъ­яв­ля­ют бу­ду­щим ко­де­рам.

Еди­но­го и унифицированного оп­ре­де­ления от­кры­то­го ко­да в природе не су­ще­ст­ву­ет, и ряд про­ек­тов име­ет соб­ст­вен­ный спи­сок ут­вер­жден­ных ли­цен­зий. Са­мые из­вест­ные из этих спи­сков под­дер­жи­ва­ют­ся Open Source Initiative, Debian и Free Software Foundation. Раз­ли­чия между ними незна­чи­тель­ны, но ли­цен­зии здесь бу­дут рас­смат­ри­вать­ся по всем спи­скам.

Мы ре­ши­ли рас­смот­реть пять ли­цен­зий, ко­то­рые ох­ва­ты­ва­ют и весь спектр фи­ло­со­фий от­кры­то­го ко­да, и боль­шин­ст­во имею­щих­ся про­грамм с от­кры­тым ко­дом. Это (в скоб­ках ука­за­ны са­мые из­вест­ные про­грам­мы): GPLv2 (яд­ро Linux), GPLv3 (раз­де­лы GNU боль­шин­ст­ва ди­ст­ри­бу­ти­вов Linux, та­кие, как Bash и GCC), Apache (web-сер­вер Apache, Android за ис­клю­чением яд­ра, недавние вер­сии OpenOffice.org), LGPL (LibreOffice) и BSD (все опе­ра­ци­он­ные сис­те­мы BSD, X.org). Чи­тай­те, что­бы уз­нать, как они вы­гля­дят под на­шим мик­ро­ско­пом.

Copyleft

Соз­дание ко­да, ко­то­рый нель­зя за­крыть.

Ве­ро­ят­но, са­мое силь­ное рас­хо­ж­дение на­блю­да­ет­ся ме­ж­ду те­ми ли­цен­зия­ми, ко­то­рые тре­бу­ют, что­бы все мо­ди­фи­ка­ции бы­ли с от­кры­тым ко­дом, и те­ми, ко­то­рые это­го не тре­бу­ют. В пер­вых (из­вест­ных под на­званием copyleft – по­то­му что это сло­во про­ти­во­по­лож­но по зна­чению copyright, уло­ви­ли?) лю­бые раз­ра­бот­чи­ки, ко­то­рые до­ба­ви­ли ка­кие-ли­бо функ­ции к про­грам­ме, долж­ны по­де­лить­ся эти­ми функ­ция­ми с дру­ги­ми поль­зо­ва­те­ля­ми. В по­следних они остав­ля­ют эти функ­ции ис­клю­чи­тель­но для се­бя (или тре­буют за них пла­ту).

Пер­вой основ­ной ли­цен­зи­ей, ко­то­рая вве­ла copyleft и по-прежнему оста­ет­ся са­мой по­пу­ляр­ной, яв­ля­ет­ся GPL. Это есть во всех фор­мах GPL.

От раз­ра­бот­чи­ков тре­бу­ет­ся при рас­про­странении сво­их про­грамм пре­достав­лять ис­ход­ный код. Это оз­на­ча­ет, что они мо­гут раз­ра­ба­ты­вать код в ча­ст­ном по­ряд­ке и де­лить­ся им с об­ще­ст­вен­но­стью толь­ко тогда, когда код их уст­ро­ит. Конеч­но, мно­гие про­ек­ты пред­по­чи­та­ют де­лить­ся сво­им ко­дом рань­ше. Ес­ли они оста­вят свои мо­ди­фи­ци­ро­ван­ные про­грам­мы се­бе, им не при­дет­ся де­лить­ся из­менения­ми с дру­ги­ми поль­зо­ва­те­ля­ми. Это слег­ка на­ру­ша­ет­ся в сре­де об­лач­ных вы­чис­лений, по­сколь­ку здесь раз­ра­бот­чи­ки не рас­про­стра­ня­ют про­грамм, а вы­да­ют дру­гим поль­зо­ва­те­лям доступ к ним. В этой си­туа­ции раз­ра­бот­чик мо­жет из­менить про­грам­му GPL и про­дать поль­зо­ва­те­лю доступ к ней, но не воз­вра­щать свои из­менения в со­об­ще­ст­во. Для борь­бы с этим FSF вы­пусти­ли AGPL (Affero General Public Licence), ко­то­рая тре­бу­ет, что­бы раз­ра­бот­чи­ки де­ли­лись сво­им ко­дом, ес­ли они от­кры­ва­ют при­ло­жение для об­ще­ст­вен­но­сти, вне за­ви­си­мо­сти от то­го, рас­про­стра­ня­ют ли они эту про­грам­му.

Ни ли­цен­зия Apache, ни BSD не име­ют ника­кой фор­мы copyleft, и ком­пании име­ют пра­во – и ис­поль­зу­ют его – вклю­чать сво­бод­ный код в ком­мер­че­­ские про­дук­ты. Сто­ронники это­го ти­па ли­цен­зии за­яв­ля­ют, что в та­ком ви­де она бо­лее дру­же­ст­вен­на к бизнесу, и по этой при­чине, в конеч­ном ито­ге, ока­зы­ва­ет­ся в боль­шем ко­ли­че­­ст­ве про­дук­тов.

На­при­мер, когда Microsoft ре­шил вклю­чить се­те­вой про­то­кол TCP/IP в Windows, они взя­ли нема­лую часть ко­да из BSD. И это оз­на­ча­ло, что Microsoft по­лу­чил ра­бо­чий се­те­вой про­то­кол, взаи­мо­дей­ст­вую­щий с боль­шин­ст­вом дру­гих сис­тем. Воз­мож­но, сво­бод­ное ПО от это­го не вы­иг­ра­ло, но за­то вы­иг­ра­ли ком­пь­ю­тер­ные тех­но­ло­гии в це­лом, ведь это при­ве­ло к то­му, что боль­шин­ст­во ком­пь­ю­те­ров (с Windows) ста­ли ра­бо­тать луч­ше. По­доб­ным же об­ра­зом Apple ре­шил под­верг­нуть ра­дикаль­но­му ре­ди­зай­ну свою ОС, и по­стро­ил ее на ко­де FreeBSD. Это оз­на­ча­ло, что боль­шая часть ра­бо­ты его ди­зайнеров бы­ла по­тра­че­на на соз­дание пре­восход­но­го ин­тер­фей­са, и им не на­до бы­ло пе­ре­жи­вать по по­во­ду яд­ра. Цель ли­цен­зий с copyleft – улуч­шение ми­ра сво­бод­но­го ПО, а ли­цен­зий без него (иногда име­нуе­мых раз­ре­ши­тель­ны­ми) – улуч­шение ми­ра ком­пь­ю­тер­ных тех­но­ло­гий в це­лом.

Мно­гие из наи­бо­лее ши­ро­ко ис­поль­зуе­мых про­грамм с от­кры­тым ко­дом вы­хо­дят под раз­ре­ши­тель­ны­ми ли­цен­зия­ми – ска­жем, Android (кро­ме яд­ра), Chromium, web-сер­вер Apache и OpenOffice.org. Яд­ро Linux яв­ля­ет­ся од­ной из немно­гих важ­ных про­грамм под ли­цен­зи­ей copyleft.

Tивоизация

Из­менение «внут­рен­но­стей».

Ком­пь­ю­тер­ный мир сла­вит­ся сво­им обес­ку­ра­жи­ваю­щим язы­ком, но да­же в нем сло­во «tivo-иза­ция» яв­ля­ет­ся в неко­то­рой сте­пени ар­ха­ич­ным. Tivo – это уст­рой­ст­во, по­зво­ляю­щее поль­зо­ва­те­лям смот­реть и за­пи­сы­вать циф­ро­вое ТВ, и оно со­дер­жит код под ли­цен­зи­ей GPL. Про­из­во­ди­тель, в со­от­вет­ст­вии с ли­цен­зи­ей, от­крыл свой код для об­ще­ст­вен­но­сти. За­то са­мо обо­ру­до­вание бы­ло за­кры­то, и по­это­му поль­зо­ва­те­ли не мог­ли мо­ди­фи­ци­ро­вать код и вно­сить свои об­нов­ления в обо­ру­до­вание. И это при­ве­ло к рас­ко­лу в со­об­ще­ст­ве от­кры­то­го ко­да.

Ли­нус Тор­вальдс под­дер­жал пра­во ком­пании по­сту­пать та­ким об­ра­зом – раз уж они от­кры­ли код для об­ще­ст­вен­но­сти, дру­гие про­из­во­ди­те­ли обо­ру­до­вания мог­ли восполь­зо­вать­ся его мо­ди­фи­ка­ция­ми и улуч­шения­ми, внесен­ны­ми в него. А вот Ри­чард Столлмен счел, что поль­зо­ва­те­ли долж­ны иметь не толь­ко воз­мож­ность по­лу­чить доступ к ко­ду, но и воз­мож­ность из­ме­нять его на са­мом уст­рой­ст­ве.

Пункт, пре­пят­ст­вую­щий ти­вои­за­ции, со­дер­жат толь­ко ли­цен­зии LGPLv3 и GPLv3: обе тре­бу­ют пре­доста­вить поль­зо­ва­те­лю воз­мож­ность уста­нав­ли­вать соб­ст­вен­ные вер­сии про­грам­мы на ори­ги­наль­ное уст­рой­ст­во. Од­на­ко они до­пуска­ют ис­клю­чения для уст­ройств, ко­то­рые фи­зи­че­­ски не мо­гут из­ме­нять ПО – на­при­мер, ес­ли ПО за­не­се­но в ПЗУ, ко­то­рое невозможно пе­ре­пи­сать.

Имен­но этот пункт способствовал тому, что Ubuntu вы­брал про­грам­му за­груз­ки под лицензией GPLv2 для бу­ду­щих вер­сий, ко­то­рые со­дер­жат безо­пас­ную за­груз­ку. Од­на­ко FSF зая­вил, что это про­изо­ш­ло из-за непонимания ли­цен­зии в Canonical. Итак, по­ка этот пункт при­сут­ст­ву­ет, продолжаются спо­ры о том, что же он оз­на­ча­ет. Так же, как и с copyleft, это со­всем не оз­на­ча­ет сла­бо­сти дру­гих ли­цен­зий – нет, это вы­бор, по­зво­ляю­щий дать раз­ре­шение.

Ин­ди­ви­ду­аль­ные мо­мен­ты

До­полнитель­ные пунк­ты, о ко­то­рых вам на­до знать.

Ка­ж­дая из ли­цен­зий име­ет свой пунк­тик. Это осо­бые тре­бо­вания, предъ­яв­ляе­мые ими к ко­ду и не по­па­даю­щие ни в од­ну из имею­щих­ся здесь ка­те­го­рий. А это оказывается крайне неудоб­ным, когда для несколь­ких раз­ных ли­цен­зий (на­при­мер, ва­риа­ций BSD) ис­поль­зу­ет­ся об­щий «на­кры­ваю­щий [umbrella]» тер­мин.

Об этом важ­но знать, по­то­му что неосве­дом­лен­ным ко­де­рам, ко­то­рые да­же не по­доз­ре­ва­ют, что им при­дет­ся под­чи­нять­ся лишним пунк­там – в основ­ном менее из­вест­ным, чем те, что мы об­су­ди­ли – лег­ко уго­дить в ло­вуш­ку. Здесь мы рас­смот­рим та­кие ве­щи, что­бы вы принимали их в расчет при раз­ра­бот­ке собственных про­грамм.

Мы так­же рас­смот­рим раз­ные вер­сии ка­ж­дой ли­цен­зии и их дрейф с те­чением вре­мени. Как вы са­ми убе­ди­тесь, для одних ли­цен­зий это про­бле­ма в боль­шей сте­пени, а для дру­гих – в мень­шей.

Apache ★★★★

Ли­цен­зия Apache ра­ду­ет пря­мо­той – в том смыс­ле, что име­ет толь­ко две вер­сии, изо­бре­та­тель­но на­зван­ные «один» и «два». Вто­рая вер­сия вы­шла в 2004 го­ду, и поч­ти все про­грам­мы пе­ре­шли на нее, так что мы рас­смот­рим толь­ко эту вер­сию.

Ес­ли про­грам­ма со­про­во­ж­да­ет­ся тек­сто­вым фай­лом NOTICE, этот файл дол­жен быть вклю­чен в мо­ди­фи­ци­ро­ван­ные вер­сии (воз­мож­но, в фор­ме, про­смат­ри­вае­мой из про­грам­мы). В этот файл мож­но до­бав­лять до­полнитель­ную ин­фор­ма­цию, при усло­вии, что она не пе­ре­пу­та­ет­ся с уже имею­щим­ся тек­стом. Ин­фор­ма­ция о ли­цен­зии долж­на при­сут­ст­во­вать в ка­ж­дом фай­ле, и ес­ли вы что-то ме­няе­те, из­менения долж­ны быть за­до­ку­мен­ти­ро­ва­ны в фай­ле. По­ми­мо этих двух ог­раничений и па­тент­ной ин­фор­ма­ции, вклю­чае­мой по­все­ме­ст­но, вы бо­лее или менее воль­ны де­лать с ко­дом под ли­цен­зи­ей Apache все, что вам за­бла­го­рас­су­дит­ся.

BSD ★★

Ли­цен­зии BSD – са­мые про­стые, и прак­ти­че­­ски не на­ла­га­ют ника­ких обя­за­тельств на тех, кто мо­ди­фи­ци­ру­ет код. Од­на­ко из-за их про­сто­ты очень мно­гие их пе­ре­пи­сы­ва­ли, и име­ет­ся мно­же­ст­во раз­ных вер­сий.

Из­на­чаль­но в ли­цен­зии бы­ло че­ты­ре пунк­та, ко­то­рые мож­но из­ло­жить так:

» Ди­ст­ри­бу­тив в ис­ход­ной фор­ме дол­жен вклю­чать уве­дом­ление об ав­тор­ских пра­вах. » Ди­ст­ри­бу­тив в дво­ич­ной фор­ме дол­жен вклю­чать уве­дом­ление об ав­тор­ских пра­вах в до­ку­мен­та­ции или фай­лах по­мо­щи. » В рек­лам­ном ма­те­риа­ле долж­ны упо­ми­нать­ся раз­ра­бот­чи­ки. » Име­на раз­ра­бот­чи­ков неприменимы для рекламы про­из­вод­ных про­дук­тов. Тре­тий пункт не со­гла­со­вы­вал­ся с GPL и был уда­лен в 1993 го­ду, когда вы­шла но­вая ли­цен­зия BSD, уже из трех пунк­тов. Ко­ман­да FreeBSD еще сильнее уп­ро­сти­ла ли­цен­зию, уда­лив из нее пункт че­ты­ре.

Чи­тае­мость

По­то­му что мы лю­бим понимать, что на­пи­са­но мел­ким шриф­том.

По­дав­ляю­щее боль­шин­ст­во поль­зо­ва­те­лей про­грамм с от­кры­тым ко­дом – и во­об­ще про­грамм – не яв­ля­ют­ся юри­ста­ми. Они не раз­би­ра­ют­ся в тон­ко­стях ли­цен­зий на ПО. Де­ло еще услож­ня­ет­ся тем, что про­грам­мы ныне бу­к­­валь­но в счи­тан­ные ча­сы рас­про­стра­ня­ют­ся по все­му зем­но­му ша­ру, и по этой при­чине ли­цен­зия долж­на со­от­вет­ст­во­вать сот­ням раз­ных за­ко­но­да­тельств. У ли­цен­зий BSD здесь яв­ное пре­иму­ще­ст­во: они зна­чи­тель­но про­ще осталь­ных.

В Apache немно­го боль­ше тек­ста, и она зву­чит бо­лее обосно­ван­но с точ­ки зрения пра­ва, но от­лич­но по­нят­на и не юри­стам, бла­го­да­ря сво­им про­стым тре­бо­ваниям.

Не­смот­ря на боль­шую слож­ность, GPLv2 оста­ет­ся весь­ма по­нят­ной и чи­тае­мой. А LGPL по боль­шей час­ти – то же са­мое, что GPL для вер­сии 2.1.

Че­го не ска­жешь о вер­сии 3 этих ли­цен­зий. В оп­ре­де­лен­ной сте­пени это свя­за­но с по­пыт­ка­ми учесть мно­же­ст­во ва­ри­ан­тов слу­ча­ев, ко­то­рые FSF со­чла непо­до­баю­щи­ми, вме­сто то­го, что­бы дать об­щее оп­ре­де­ление. Мы пре­доста­вим за­клю­чи­тель­ное сло­во по этой те­ме раз­ра­бот­чи­ку SeleckTor:

«Вы мо­же­те так­же спро­сить, по­че­му GPL2, а не GPL3? Это про­сто: я ту­пой, и че­рез GPL3 про­драть­ся не смог. По мо­ему мнению, ли­цен­зия GPL2 – ку­да луч­ше на­пи­сан­ная ли­цен­зия для про­сто­го че­ло­ве­ка, она от­ве­ча­ет мо­им по­треб­но­стям, и мне глу­бо­ко на­пле­вать, сколь­ко юри­стов они там при­влек­ли к соз­данию GPL3».

GPLv2 ★★★★

Вер­сия 2 GPL – это за­ме­ча­тель­но чет­кая ли­цен­зия, чем, ве­ро­ят­но, и объ­яс­ня­ет­ся ее по­пу­ляр­ность. По­ми­мо copyleft, она на­ла­га­ет очень ма­ло ог­раничений на то, как вам допускается ис­поль­зо­вать код. Фак­ти­че­­ски, един­ст­вен­ное присутствующее в ней ог­раничение – не разрешить на­ла­гать дру­гие ог­раничения! На­при­мер, вам не разрешено ог­раничи­вать об­лас­ти при­менения про­граммного продукта.

В про­шлом этот ас­пект вы­звал раз­но­гла­сия, по­сколь­ку неко­то­рые про­ек­ты же­ла­ли обес­пе­чить непри­менимость разработанного ими ко­да для во­ен­ных це­лей.

GPU, кли­ент Gnutella, соз­дал на осно­ве GPL но­вую ли­цен­зию, из­менив этот пункт. Со­глас­но этой ли­цен­зии, код мож­но бы­ло ис­поль­зо­вать толь­ко в мир­ных це­лях. Это на­ру­ши­ло со­вмес­ти­мость с ори­ги­наль­ной ли­цен­зи­ей GPL, и ли­цен­зия не по­лу­чи­ла по­пу­ляр­но­сти в дру­гих про­ек­тах.

GPLv3 ★★★

В GPLv3 на­мно­го боль­ше пунк­тов, чем в дру­гих на­ших ли­цен­зи­ях. Часть из них уже рас­смат­ри­ва­лась в этой ста­тье. Не рас­смат­ри­вал­ся по­ка что пункт о техниче­­ских сред­ст­вах за­щи­ты ав­тор­ских прав – Digital Rights Management (DRM). Это когда ком­пания про­да­ет вам циф­ро­вой про­дукт (на­при­мер, ви­део или му­зы­ку), но шиф­ру­ет его так, что­бы он мог ис­поль­зо­вать­ся толь­ко на од­ном уст­рой­ст­ве.

По это­му по­во­ду GPLv3 го­во­рит: «Ес­ли вы пе­ре­дае­те за­щи­щен­ное про­из­ве­дение, вы от­ка­зы­вае­тесь от юри­ди­че­­ско­­го пра­ва за­пре­щать об­ход техниче­­ски­­ми сред­ст­ва­ми до та­кой сте­пени, когда по­доб­ный об­ход...» Ины­ми сло­ва­ми, вы мо­же­те по­пы­тать­ся вста­вить DRM в код под GPLv3, но не мо­же­те по­ме­шать дру­гим най­ти сред­ст­ва и воз­мож­но­сти его обой­ти. А по­сколь­ку лю­ди, пы­таю­щие­ся его обой­ти, бу­дут иметь доступ к ва­ше­му ис­ход­но­му ко­ду, ве­ли­ка ве­ро­ят­ность то­го, что они преуспе­ют в сво­их на­ме­рениях.

LGPL ★★★★

LGPL вы­хо­дит в несколь­ких фор­мах. Са­мая из­вест­ная – 2.1, ко­то­рая при­мер­но со­от­вет­ст­ву­ет GPLv2, и вер­сия 3 – со­звуч­ная GPLv3. И хо­тя во мно­гих ас­пек­тах они по­хо­жи, их от­ли­чие ле­жит в их со­вмес­ти­мо­сти. Ве­ро­ят­но, са­мое стран­ное в LGPL – то, что лю­ди, ее на­пи­сав­шие (FSF), не одоб­ря­ют ее ис­поль­зо­вания.

Они со­глас­ны с тем, что для нее есть свое ме­сто (ина­че они бы ее не соз­да­ли), но при этом счи­та­ют, что ее сле­ду­ет при­ме­нять толь­ко в осо­бых об­стоя­тель­ст­вах. Ее раз­ра­бо­та­ли, что­бы соз­дать биб­лио­те­ку С под сво­бод­ной ли­цен­зи­ей, ссыл­ку на ко­то­рую мог­ла со­дер­жать лю­бая ком­мер­че­­ская про­грам­ма. По их мнению, эту ли­цен­зию сто­ит при­ме­нять ис­клю­чи­тель­но ра­ди внедрения сво­бод­но­го ПО там, где в ином слу­чае бу­дет ис­поль­зо­ва­на ком­мер­че­­ская про­грам­ма. Для вя­щей пу­таницы, бу­к­ва L оз­на­ча­ла раз­ные ве­щи: из­на­чаль­но – «биб­лио­теч­ная [library]», а сей­час – «ума­лен­ная [lesser]».

Со­вмес­ти­мость

Хо­ро­шо ли ли­цен­зии ужи­ва­ют­ся друг с дру­гом? Об­лас­тей, в ко­то­рых вста­ет про­бле­ма со­вмес­ти­мо­сти, две: кон­вер­ти­ро­вание ко­да из од­ной ли­цен­зии в дру­гую и свя­зы­вание.

Свя­зы­вание – это когда код в про­грам­ме ссы­ла­ет­ся на биб­лио­те­ку. GPLv2 и дальней­шие вер­сии за­пре­ща­ют внешнему ко­ду под несво­бод­ной ли­цен­зи­ей ссы­лать­ся на код под ли­цен­зи­ей GPL. За это ее иногда называют­ ви­русной ли­цен­зи­ей – она пы­та­ет­ся «за­ра­зить» сво­бо­дой все про­грам­мы в сис­те­ме. FSF ве­дет спи­сок ли­цен­зий, ко­то­рые, по его мнению, со­вмес­ти­мы, на сайте www.gnu.org/licenses/license-list.html.

Ли­цен­зии BSD в об­щем наи­бо­лее со­вмес­ти­мы, и код, вы­хо­дя­щий под ними, мо­жет быть свя­зан с ними или пе­рей­ти на дру­гие, менее раз­ре­ши­тель­ные ли­цен­зии. Ис­клю­чение – ли­цен­зия BSD из че­ты­рех пунк­тов (ста­рая). Пункт о рек­ла­ме ли­ша­ет ее со­вмес­ти­мо­сти с GPL.

Так как под ли­цен­зи­ей Apache вы­шел ряд важ­ных про­грамм, FSF обес­пе­чил ее со­вмес­ти­мость с вер­си­ей 3 GPL, несо­вмес­ти­мой с бо­лее ранними вер­сия­ми. Она ог­раниче­на ли­цен­зи­ей Apache вер­сии 2.

Персональные инструменты
купить
подписаться
Яндекс.Метрика