от Ричард Столман
През декември 2006 г., „Сън“ вече Ñа започнали да преиздават ÑвоÑта платформа на Джава под GNU GPL. Очакваме, че когато тази промÑна на лиценза завърши, Джава вече нÑма да предÑтавлÑва клопка. Въпреки това, като цÑло, опиÑаниÑÑ‚ тук Ð²ÑŠÐ¿Ñ€Ð¾Ñ Ñ‰Ðµ оÑтане важен, защото вÑÑка неÑвободна библиотека или платформа за програмиране може да причини подобен проблем. ТрÑбва да Ñи вземем поука от иÑториÑта на Джава, така че да избÑгваме други клопки за в бъдеще.
12 април 2004 г.
Ðко програмата ви е Ñвободен Ñофтуер, то Ñ‚Ñ Ð¿Ð¾ ÑъщеÑтво е етична. СъщеÑтвува обаче една клопка, за коÑто Ñ‚Ñ€Ñбва да бъдете нащрек. Въпреки че Ñама по Ñебе Ñи е Ñвободна, програмата ви може да бъде ограничена от неÑÐ²Ð¾Ð±Ð¾Ð´Ð½Ð¸Ñ Ñофтуер, от който завиÑи. Тъй като този проблем Ð´Ð½ÐµÑ Ðµ най-Ñрко изразен при програмите на Джава, наричаме го „клопката на Джава“.
Една програма е Ñвободен Ñофтуер, ако потребителите Ñ Ð¿Ñ€Ð¸Ñ‚ÐµÐ¶Ð°Ð²Ð°Ñ‚ определени ÑъщеÑтвени Ñвободи. Грубо казано, те Ñа: Ñвободата да изпълнÑват програмата, Ñвободата да изучават и променÑÑ‚ Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ ÐºÐ¾Ð´, Ñвободата да разпроÑтранÑват Ð¸Ð·Ñ…Ð¾Ð´Ð½Ð¸Ñ Ð¸ Ð´Ð²Ð¾Ð¸Ñ‡Ð½Ð¸Ñ ÐºÐ¾Ð´, и Ñвободата да публикуват подобрени верÑии. (Вижте http://www.gnu.org/philosophy/free-sw.bg.html.) Дали дадена програма е Ñвободен Ñофтуер завиÑи изцÑло от волÑта, заложена в лиценза Ñ.
Дали обаче програмата може да бъде използвана в Ð¡Ð²Ð¾Ð±Ð¾Ð´Ð½Ð¸Ñ ÑвÑÑ‚, дали може да бъде използвана от хора, които Ñа решени да живеÑÑ‚ в Ñвобода, е по-Ñложен въпроÑ. Това не Ñе Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ Ñамо от лиценза на програмата, понеже нито една програма не работи в изолациÑ. Ð’ÑÑка програма завиÑи от други програми. Ðапример, ако дадена програма има нужда да бъде компилирана или интерпретирана, то Ñ‚Ñ Ð·Ð°Ð²Ð¸Ñи от компилатор или интерпретатор. Ðко е компилирана до байткод, то Ñ‚Ñ Ð·Ð°Ð²Ð¸Ñи от интерпретатор на байткод. ОÑвен това, за да бъде изпълнÑвана, програмата Ñе нуждае и от библиотеки. Също така програмата би могла да извиква други ÑамоÑтоÑтелни програми, които Ñе изпълнÑват като отделни процеÑи. Ð’Ñички тези програми Ñа завиÑимоÑти. ЗавиÑимоÑтите може да Ñа необходими, за да бъде изобщо изпълнена програмата, но може и да Ñа нужни Ñамо за да функционират нÑкои нейни възможноÑти. Така или иначе, цÑлата програма или чаÑÑ‚ от Ð½ÐµÑ Ð½Ðµ може да работи без завиÑимоÑтите.
Ðко нÑкои от завиÑимоÑтите на програмата Ñа неÑвободни, то това означава, че цÑлата програма или чаÑÑ‚ от Ð½ÐµÑ Ð½Ðµ може да бъде изпълнена върху напълно Ñвободна ÑиÑтема — Ñ‚Ñ Ðµ безполезна в Ð¡Ð²Ð¾Ð±Ð¾Ð´Ð½Ð¸Ñ ÑвÑÑ‚. Разбира Ñе, ние можем да разпроÑтранÑваме програмата и да притежаваме нейни ÐºÐ¾Ð¿Ð¸Ñ Ð²ÑŠÑ€Ñ…Ñƒ машините Ñи, но от това нÑма голÑма полза, щом не можем да Ñ Ð¸Ð·Ð¿ÑŠÐ»Ð½Ñваме. Тази програма е Ñвободен Ñофтуер, но на практика е окована от Ñвоите неÑвободни завиÑимоÑти.
Този проблем може да възникне Ñ Ð²Ñеки вид Ñофтуер, на какъвто и да е език за програмиране. Ðапример, една Ñвободна програма, коÑто Ñе изпълнÑва Ñамо върху МайкроÑофт УиндоуÑ, е очевидно безполезна в Ð¡Ð²Ð¾Ð±Ð¾Ð´Ð½Ð¸Ñ ÑвÑÑ‚. Ðо Ñофтуерът, който Ñе изпълнÑва върху GNU/Ð›Ð¸Ð½ÑƒÐºÑ Ñъщо може да бъде безполезен, ако завиÑи от друг неÑвободен Ñофтуер. Ð’ миналото, Мотиф (преди да имаме ЛеÑТиф) и библиотеката „Кю ти“ (преди разработчиците Ñ Ð´Ð° Ñ Ð½Ð°Ð¿Ñ€Ð°Ð²ÑÑ‚ Ñвободен Ñофтуер) бÑха оÑновните причини за този проблем. Повечето видеокарти Ñ Ñ‚Ñ€Ð¸Ð¼ÐµÑ€Ð½Ð¾ уÑкорение работÑÑ‚ пълнофункционално Ñамо Ñ Ð½ÐµÑвободни драйвери, което Ñъщо води до този проблем. Ðо Ð´Ð½ÐµÑ Ð¾ÑновниÑÑ‚ източник на проблема е Джава, защото хората, които пишат Ñвободен Ñофтуер, чеÑто чувÑтват, че Джава е ÑекÑи. ЗаÑлепени от привличането Ñи към езика, те пренебрегват въпроÑа ÑÑŠÑ Ð·Ð°Ð²Ð¸ÑимоÑтите и така попадат в „клопката на Джава“.
РеализациÑта на Джава от „Сън“ е неÑвободна. Тази от „Блекдаун“ Ñъщо е неÑвободна, Ñ‚Ñ Ðµ Ð°Ð´Ð°Ð¿Ñ‚Ð°Ñ†Ð¸Ñ Ð½Ð° ÑобÑтвеничеÑÐºÐ¸Ñ ÐºÐ¾Ð´ на „Сън“. Стандартните библиотеки на Джава Ñъщо Ñа неÑвободни. Ðие разполагаме ÑÑŠÑ Ñвободни реализации на Джава, като например компилатора на GNU за Джава (GCJ) и GNU КлаÑпат (GNU Classpath), но те вÑе още не поддържат напълно вÑички възможноÑти. Ð’Ñе още навакÑваме.
Ðко разработвате програма на Джава върху платформата на Джава от „Сън“, ÑъщеÑтвува опаÑноÑÑ‚ да използвате възможноÑти, Ñпецифични Ñамо за „Сън“, без дори да забележите. След време, когато откриете това, може да Ñа минали меÑеци, а пренапиÑването на тези чаÑти от програмата може да отнеме още меÑеци. Бихте могли да кажете: „Това е твърде много работа, за да Ñе започне отначало.“ Ð’ този момент програмата ви ще е попаднала в „клопката на Джава“. Програмата ви ще е безполезна в Ð¡Ð²Ð¾Ð±Ð¾Ð´Ð½Ð¸Ñ ÑвÑÑ‚.
СигурниÑÑ‚ начин да избегнете „клопката на Джава“ е да разполагате Ñамо ÑÑŠÑ Ñвободна Ñ€ÐµÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð½Ð° Джава върху ÑиÑтемата Ñи. Тогава, ако използвате възможноÑÑ‚ на Джава или библиотека, коÑто ÑÐ²Ð¾Ð±Ð¾Ð´Ð½Ð¸Ñ Ñофтуер вÑе още не поддържа, ще откриете това незабавно и ще можете веднага да пренапишете кода Ñи.
„Сън“ продължава да разработва допълнителни „Ñтандартни“ библиотеки на Джава и почти вÑички те Ñа неÑвободни. Ð’ много Ñлучаи, дори ÑпецификациÑта на библиотеката предÑтавлÑва търговÑка тайна, а поÑледниÑÑ‚ лиценз на „Сън“ за тези Ñпецификации забранÑва издаването на непълни реализации на ÑпецификациÑта. (Вижте например http://jcp.org/aboutJava/communityprocess/JSPA2.pdf и http://jcp.org/aboutJava/communityprocess/final/jsr129/j2me_pb-1_0-fr-spec-license.html).
За щаÑтие, този лиценз на ÑпецификациÑта позволÑва издаването на нейна Ñ€ÐµÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ ÐºÐ°Ñ‚Ð¾ Ñвободен Ñофтуер. Така на трети лица, получили библиотеката, им е разрешено да Ñ Ð¿Ñ€Ð¾Ð¼ÐµÐ½ÑÑ‚ и не Ñа задължени да Ñе придържат към ÑпецификациÑта. Ðо изиÑкването води до забрана на използването на ÑъвмеÑтен модел на разработка при произвеждането на Ñвободна реализациÑ. Използването на такъв модел би довело до публикуване на незавършени верÑии, което не е разрешено на тези, които Ñа чели ÑпецификациÑта.
Ð’ зората на Движението за Ñвободен Ñофтуер беше невъзможно да Ñе избегнат завиÑимоÑтите от неÑвободни програми. Преди да имаме компилатора на GNU за Си, вÑÑка програма на Си (Ñвободна или не) завиÑеше от неÑвободен компилатор за Си. Преди да имаме библиотеката на GNU за Си, вÑÑка програма завиÑеше от неÑвободна библиотека за Си. Преди да имаме ЛинукÑ, първото Ñвободно Ñдро, вÑÑка програма завиÑеше от неÑвободно Ñдро. Преди да имаме Bash, вÑеки Ñкрипт на обвивката Ñ‚Ñ€Ñбваше да бъде интерпретиран от неÑвободна обвивка. Бе неизбежно първите ни програми да бъдат обременени от тези завиÑимоÑти, но ние приехме това, понеже поÑледващото отърваване на тези програми бе чаÑÑ‚ от Ð½Ð°ÑˆÐ¸Ñ Ð¿Ð»Ð°Ð½. Ðашата голÑма цел — ÑамоÑтоÑтелна операционна ÑиÑтема GNU — включваше Ñвободни замеÑтители на вÑички тези завиÑимоÑти. Ðко поÑтигнехме целта Ñи, тогава вÑички програми биха били отървани. Така и Ñтана — ÑÑŠÑ ÑиÑтемата GNU/Ð›Ð¸Ð½ÑƒÐºÑ Ð²ÐµÑ‡Ðµ можем да изпълнÑваме тези програми върху Ñвободни платформи.
СитуациÑта Ð´Ð½ÐµÑ Ðµ различна. Сега разполагаме Ñ Ð¼Ð¾Ñ‰Ð½Ð¸ Ñвободни операционни ÑиÑтеми и много Ñвободни ÑредÑтва за програмиране. Каквато и задача да захванете, можете да Ñ Ð¸Ð·Ð²ÑŠÑ€ÑˆÐ¸Ñ‚Ðµ върху Ñвободна платформа — нÑма нужда да приемате неÑвободна завиÑимоÑÑ‚, даже дори временно. Ð”Ð½ÐµÑ Ð¾Ñновната причина, поради коÑто хората попадат в клопката е, че не миÑлÑÑ‚ за неÑ. Ðай-леÑното решение на проблема е да Ñе обÑÑни на хората да не попадат в клопката.
За да предпазите кода Ñи от „клопката на Джава“, инÑталирайте Ñвободна Ñреда за разработване на Джава и Ñ Ð¸Ð·Ð¿Ð¾Ð»Ð·Ð²Ð°Ð¹Ñ‚Ðµ. По-общо казано, какъвто и език да използвате, отварÑйте Ñи очите на четири и проверÑвайте дали Ñа Ñвободни програмите, от които завиÑи кода ви. Ðай-леÑниÑÑ‚ начин да проверите дали дадена програма е Ñвободна е да погледнете за Ð½ÐµÑ Ð² Ð£ÐºÐ°Ð·Ð°Ñ‚ÐµÐ»Ñ Ð½Ð° Ñвободен Ñофтуер (http://www.fsf.org/directory). Ðко програмата не е в указателÑ, можете да Ñверите лиценза (или лицензите) Ñ ÑпрÑмо ÑпиÑъка от лицензи за Ñвободен Ñофтуер (http://www.gnu.org/licenses/license-list.html).
Опитваме Ñе да отървем програмите на Джава, които Ñа хванати в капана. Така че, ако хареÑвате езика Джава, каним ви да помогнете при разработването на GNU КлаÑпат. Също би било полезно изпробването на програмите ви Ñ ÐºÐ¾Ð¼Ð¿Ð¸Ð»Ð°Ñ‚Ð¾Ñ€Ð° GCJ и GNU КлаÑпат и докладването на вÑÑкакви проблеми, на които Ñте Ñе натъкнали при вече реализираните клаÑове. Ð’Ñе пак, завършването на GNU КлаÑпат ще отнеме време — ако поÑтоÑнно продължават да Ñе добавÑÑ‚ неÑвободни библиотеки, може винаги да ни липÑват поÑледните от Ñ‚ÑÑ…. Така че, Ð¼Ð¾Ð»Ñ Ð²Ð¸, не оковавайте ÑÐ²Ð¾Ð±Ð¾Ð´Ð½Ð¸Ñ Ñи Ñофтуер. ДнеÑ, когато пишете Ñвободна приложна програма, пишете Ñ Ñ‚Ð°ÐºÐ°, че от Ñамото начало да Ñе изпълнÑва върху Ñвободни ÑредÑтва.
ЛюбопитниÑÑ‚ инцидент ÑÑŠÑ â€žÐ¡ÑŠÐ½â€œ в къÑна доба