javascript-trap.html (19003B)
1 <!--#set var="PO_FILE" 2 value='<a href="/philosophy/po/javascript-trap.pl.po"> 3 https://www.gnu.org/philosophy/po/javascript-trap.pl.po</a>' 4 --><!--#set var="ORIGINAL_FILE" value="/philosophy/javascript-trap.html" 5 --><!--#set var="DIFF_FILE" value="/philosophy/po/javascript-trap.pl-diff.html" 6 --><!--#set var="OUTDATED_SINCE" value="2016-03-27" --> 7 8 <!--#include virtual="/server/header.pl.html" --> 9 <!-- Parent-Version: 1.77 --> 10 11 <!-- This file is automatically generated by GNUnited Nations! --> 12 <title>Pułapka JavaScript'u</title> 13 14 <!--#include virtual="/philosophy/po/javascript-trap.translist" --> 15 <!--#include virtual="/server/banner.pl.html" --> 16 <!--#include virtual="/server/outdated.pl.html" --> 17 <h2>Pułapka JavaScript'u</h2> 18 19 <p><a href="http://www.stallman.org/">Richard Stallman</a></p> 20 21 <p><strong>Możliwe, że korzystasz z niewolnych programów 22 na swoim komputerze każdego dnia — przez przeglądarkę 23 internetową</strong></p> 24 25 <p>W społeczności wolnego oprogramowania, znana jest idea tego, 26 że niewolne programy źle traktują użytkowników. Niektórzy z nas 27 całkowicie odmawiają instalacji prawnie zastrzeżonego oprogramowania, 28 a wielu innych fakt bycia niewolnym uważa za wadę programu. Wielu 29 użytkowników jest świadomych tego, że kwestia ta ma zastosowanie 30 do wtyczek oferowanych do instalacji przez przeglądarki, jako 31 że mogą one być wolne bądź niewolne.</p> 32 33 <p>Jednak przeglądarki uruchamiają inne niewolne programy, o co nie pytają 34 użytkowników ani nawet ich o tym nie informują — programy zawarte 35 bezpośrednio bądź przez odnośnik na stronach internetowych. Te 36 programy najczęściej napisane są w JavaScript, choć wykorzystywane 37 są także i inne języki.</p> 38 39 <p>JavaScript (oficjalnie nazywany ECMAScript, choć niewielu korzysta 40 z tej nazwy) był dawniej wykorzystywany do drobnych upiększeń 41 na stronach internetowych, takich jak ładne, lecz nieistotne 42 elementy nawigacji bądź wyświetlania. Dopuszczalnym było traktowanie 43 ich jedynie jako rozszerzenia znaczników HTML, raczej niż prawdziwe 44 oprogramowanie; nie stanowiły one znaczącej kwestii.</p> 45 46 <p>Wiele stron korzysta z JavaScript w ten sposób, 47 jednak niektóre wykorzystują go do większych programów 48 wykonujących duże zadania. Przykładowo, Google Docs próbuje pobrać 49 na maszynę użytkownika program JavaScript o objętości pół megabajta, 50 upakowany w formie, którą nazwać można Obfuscriptem (celowo 51 nieczytelnie napisany kod) ponieważ nie posiada żadnych komentarzy 52 i prawie żadnych białych znaków, a nazwy metod są 53 jednoliterowe. Kod źródłowy programu jest preferowaną formą do jego 54 modyfikacji; upakowany kod nie jest kodem źródłowym, 55 natomiast prawdziwy kod źródłowy tego programu nie jest dostępny dla 56 użytkownika.</p> 57 58 <p>Przeglądarki normalnie nie informują użytkownika kiedy ładują programy 59 JavaScript. Niektóre przeglądarki ma możliwość by wyłączyć JavaScript 60 całkowicie, jednak nawet jeśli o tym wiesz, jest nieoczywiste jak 61 rozróżnić nietrywialne niewolne oprogramowanie i je zablokować. Jednak, 62 nawet w społeczności wolnego oprogramowania, większość użytkowników nie 63 jest świadoma tej kwestii; milczenie przeglądarek sprzyja zaś zatajaniu 64 tego.</p> 65 66 <p>Jest możliwym wydanie programu JavaScript jako wolnego oprogramowania, przez 67 dystrybucję kodu objętego licencją wolnego oprogramowania. Jeśli program 68 jest samowystarczalny – jeśli jego funkcja czy cel są 69 niezależne od strony na której jest – to jest 70 w porządku; możecie skopiować program do pliku na komputerze, 71 zmodyfikować go i odwiedzić w przeglądarce aby go 72 uruchomić. Ale to nietypowy przypadek.</p> 73 74 <p>Zwykle programy JavaScript są zaprojektowane aby działać 75 z konkretną stroną czy witryną i strona czy witryna 76 wymaga ich do funkcjonowania. Wtedy jest dodatkowy problem: nawet jeśli 77 jest kod źródłowy programu, przeglądarki nie oferują udogodnień 78 umożliwiających uruchomienie własnej zmodyfikowanej wersji zamiast tej 79 dostarczanej na stronie. Efekt jest porównywalny do tivoizacji 80 (ang. tivoization - od urządzenia TiVo), jednak nie jest on aż tak 81 trudny do obejścia.</p> 82 83 <p>JavaScript nie jest jedynym językiem w którym strony przesyłają 84 programy. Flash umożliwia programowanie poprzez rozszerzony wariant 85 JavaScript; jeśli kiedykolwiek będziemy mieli wystarczająco kompletny, 86 wolny, program do odtwarzania Flash, będziemy musieli się uporać 87 z niewolnymi programami Flash. Silverlight wydaje się stwarzać problemy 88 podobne do Flasha, jedynie gorsze, skoro Microsoft używa go jako 89 platformy do niewolnych kodeków. Wolne zastępstwo Silverlight nie 90 byłoby wystarczające dla wolnego świata chyba, że standardowo zawiera 91 wolne zastępcze kodeki.</p> 92 93 <p>Aplety Java także są uruchamiane w przeglądarce i wzbudzają 94 podobne kłopoty. Ogólnie rzecz biorąc, każdy typ systemu apletów stanowi 95 tego typu zagrożenie. Posiadanie wolnego środowiska wykonawczego dla apletu 96 jedynie przybliża nas aby bezpośrednio zetknąć się z sednem 97 sprawy.</p> 98 99 <p>Teoretycznie jest możliwe aby programować w HTML i CSS, 100 ale w praktyce jest to ograniczone i niewygodne; 101 aby cokolwiek zrobiło to już dobre przedsięwzięcie. Takie programy 102 powinny być wolne, ale CSS nie jest poważnym problemem dla wolności 103 użytkowników w roku 2016.</p> 104 105 <p>Powstał silny ruch który domaga się od stron internetowych by 106 komunikowały się jedynie przez formaty i protokoły, które są wolne 107 (niektórzy powiedzą „otwarte”); a więc takich, których 108 dokumentacja została opublikowana i które każdy może 109 zaimplementować. Z obecnością programów na stronach internetowych, 110 takie kryterium jest konieczne, lecz nie wystarczające. JavaScript sam 111 w sobie, jako format, jest wolny, a wykorzystanie JavaScript 112 w na stronie internetowej samo w sobie nie jest złe. Jednak, jak 113 widać po powyższych przykładach, nie jest to automatycznie 114 w porządku. Kiedy strona przesyła program do użytkowanika, nie 115 jest wystarczającym by program był napisany w udokumentowanym 116 i nieobciążonym języku; taki program musi być także 117 wolny. „Jedynie wolne programy przesyłane do użytkownika” 118 mogą stać się częścią kryterium dla poprawnego zachowania się stron 119 internetowych.</p> 120 121 <p>Ciche ładowanie i uruchamianie niewolnych programów jest jedną 122 z wielu kwestii wnoszonych przez „aplikacje 123 sieciowe”. Termin „aplikacji sieciowych” został 124 zaprojektowany by ignorować fundamentalne różnice między oprogramowaniem 125 dostarczonym do użytkowników, a oprogramowaniem działającym 126 na serwerze. Może się on odnosić do wyspecjalizowanego programu 127 uruchamianego bezpośrednio w przeglądarce; może się on odnosić 128 do wyspecjalizowanego oprogramowania serwera; może się on odnosić 129 do wyspecjalizowanego programu w przeglądarce działającego 130 wspólnie z wyspecjalizowanym oprogramowaniem serwera. Strony klienta 131 i serwera podnoszą różne kwestie etyczne, nawet jeśli są tak mocno 132 zintegrowane, że w efekcie tworzą części jednego programu. To 133 opracowanie dotyczy tylko oprogramowanie po stronie 134 klienta. Oprogramowanie na serwerach omawiamy osobno.</p> 135 136 <p>W kwestiach praktycznych, jak możemy sobie radzić z problemem 137 niewolnych programów JavaScript na stronach internetowych? Pierwszym 138 krokiem jest aby go nie uruchamiać.</p> 139 140 <p>Po pierwsze, co mamy na myśli przez „nietrywialne”? 141 Skoro pojęcie „nietrywialności” jest stopniowane, jest kwestią 142 zaprojektowania prostego kryterium dającego dobre rezultaty, raczej niż 143 ustalania jednej poprawnej odpowiedzi.</p> 144 <p> 145 Nasza wstępna zasada jest aby program JavaScript był nietrywialny 146 jeśli:</p> 147 148 <ul> 149 <li>robi żądania AJAX lub jest ładowany ze skryptami, które robią żądania 150 AJAX,</li> 151 152 <li>ładuje dynamicznie zewnętrzne skrypty lub jest ładowany razem ze 153 skryptami, które to robią,</li> 154 155 <li>definiuje funkcje i albo ładuje zewnętrzny skrypt (z wnętrza html) 156 lub jest ładowany jako taki,</li> 157 158 <li>używa dynamiczne struktury JavaScript, które są trudne do analizowania 159 bez uruchamiania programu, lub jest ładowany razem ze skryptami, 160 które używają takich struktur. Te struktury to: 161 <ul> 162 <li>używanie funkcji eval,</li> 163 <li>wywoływanie funkcji za pomocą kwadratowych nawiasów,</li> 164 <li>Używanie konstrukcji innych niż ciąg znaków z niektórymi funkcjami 165 (Obj.write, Obj.createElement, ...).</li> 166 </ul> 167 </li> 168 </ul> 169 170 <p>Jak rozróżnić czy dany kod JavaScript jest wolny? Na zakończenie 171 tego artykułu proponujemy konwencję, według której nietrywialne programy 172 JavaScript na stronie internetowej mogłyby podać URL pod którym 173 znajduje się ich kod źródłowy, a także przy wykorzystaniu stylizowanych 174 komentarzy określać swoją licencję.</p> 175 176 <p>W końcu musimy zmienić wolne przeglądarki aby rozpoznawały 177 i blokowały nietrywialny JavaScript na stronach 178 internetowych. Program <a href="/software/librejs/">LibreJS</a> wykrywa 179 niewolny, nietrywialny JavaScript na stronach, które odwiedzacie 180 i go blokuje. LibreJS jest dodatkiem dla IceCat i IceWeasel (i dla 181 Firefoksa).</p> 182 183 <p>Użytkownicy przeglądarek potrzebują wygodnej metody określenia kodu 184 JavaScript, którego chcą użyć <em>zamiast</em> JavaScript na wybranej 185 stronie. (Określony kod może być całkowitym zastąpieniem, 186 bądź zmodyfikowaną wersją wolnego programu JavaScript obecnego 187 na wybranej stronie.) Greasemonkey jest bliskie umożliwienia tego, 188 jednak nie do końca, gdyż nie gwarantuje modyfikacji kodu 189 JavaScript na stronie zanim ten zacznie się wykonywać. Wykorzystanie 190 lokalnego proxy działa, jednak jest zbyt niedogodne by być realnym 191 rozwiązaniem. Potrzebujemy rozwiązania, które jest niezawodne 192 i wygodne, jak i witryny gdzie można się dzielić zmianami. Projekt 193 GNU zarekomenduje strony, które są dedykowane jedynie wolnym zmianom.</p> 194 195 <p>Takie możliwości umożliwią programom JavaScript zawartym na stronach 196 internetowych bycie wolnymi w rzeczywistym i praktycznym 197 sensie. JavaScript nie będzie nadal szczególną przeszkodą do naszej 198 wolnośći — nie bardziej niż C i Java są nimi teraz. Będziemy 199 mogli odrzucić a nawet podmienić niewolne, nietrywialne programy 200 JavaScript, tak samo jak możemy podmienić niewolne pakiety normalnie 201 oferowane nam do instalacji. Nasza kampania dla stron internetowych by 202 uwolnić ich JavaScript może się wtedy zacząć.</p> 203 204 <p>W międzyczasie jest jeden przypadek gdzie jest dopuszczalne uruchamiać 205 niewolny program JavaScript: aby wysłać zażalenie do operatorów 206 witryn internetowych, że powinni uwolnić lub usunąć JavaScript ze 207 stron. Nie wahajcie się włączyć JavaScript tymczasowo aby to zrobić, 208 ale pamiętajcie go potem wyłączyć.</p> 209 210 <p><strong>Podziękowania dla <a href="/people/people.html#mattlee">Matta 211 Lee</a> i <a href="http://ejohn.org">Johna Resiga</a> za ich pomoc 212 w definiowaniu naszej propozycji kryterium, oraz dla Davida 213 Parunakiana za pomoc w uświadomieniu mi problemu.</strong></p> 214 215 <h3 id="AppendixA">Załącznik A: konwencja dla wypuszczania wolnych programów JavaScript.</h3> 216 217 <p>Odnośniki do kodu źródłowego proponujemy oznaczać</p> 218 <pre dir="ltr"> 219 220 // @source: 221 222 </pre> 223 224 <p>a następnie URL. To spełnia wymóg GNU GPL aby rozprowadzać kod 225 źródłowy. Jeśli kod jest na innej stronie, musicie zwrócić uwagę 226 aby <a href="/licenses/gpl-faq.html#SourceAndBinaryOnDifferentSites">o 227 to właściwie zadbać</a>. Kod źródłowy jest konieczny aby program był 228 wolny. 229 </p> 230 231 <p>By wskazać licencję kodu JavaScript zawartego na stronie, proponujemy 232 umieszczenie licencji między dwoma komentarzami w tej formie:</p> 233 <pre dir="ltr"> 234 <!--TRANSLATORS: Do not translate these license notices. The <pre> 235 236 elements have dir="ltr" explicitly set to cater for RTL languages.--> 237 238 @licstart The following is the entire license notice for the 239 JavaScript code in this page. 240 ... 241 @licend The above is the entire license notice 242 for the JavaScript code in this page. 243 </pre> 244 <p>Oczywiście, wszystko to powinno być zawarte w wielowierszowym 245 komentarzu.</p> 246 247 <p><a href="/licenses/gpl.html">GNU GPL</a>, tak jak wiele innych licencji 248 wolnego oprogramowania wymaga dystrybucji kopii licencji zarówno 249 z kodem jak i binariami programu. Jednakże, GNU GPL jest 250 na tyle długie, że załączanie go do strony zawierającej 251 JavaScript może być uciążliwe. Można pominąć to wymaganie, dla kodu 252 do którego posiada się prawa autorskie, taką notatką licencyjną:</p> 253 <pre dir="ltr"> 254 255 Copyright (C) YYYY Developer 256 257 Kod JavaScript na tej stronie jest wolnym oprogramowaniem: można 258 go rozprowadzać oraz modyfikować go zgodnie z warunkami GNU 259 General Public License (GNU GPL) opublikowanym przez Free Software 260 Foundation, licencji w wersji 3, bądź (opcjonalnie) każdą późniejszą wersją 261 Kod dystrybuowany jest BEZ JAKIEJKOLWIEK GWARANCJI; 262 nawet bez domniemanej gwarancji ZDATNOŚCI DO HANDLU 263 czy ZDATNOŚCI DO OKREŚLONEGO CELU. Proszę odwołać się 264 do GNU GPL po szczegóły. 265 266 Jako dodatkowe zezwolenie zgodne z GNU GPL wersji 3 sekcji 7, 267 można dystrybuować nie-źródłowe (np., zminimalizowane bądź upakowane) 268 formy tego kodu bez kopii GNU GPL normalnie wymaganej 269 w sekcji 4, pod warunkiem załączenia tej notatki licencyjnej i URL 270 przez które odbiorcy mogą dotrzeć do Właściwego Źródła 271 272 </pre> 273 274 <p>Dziękuje Jaffarowi Rumithowi za zwrócenie mojej uwagi na tę 275 kwestię.</p> 276 277 <h3 id="AppendixB">Załącznik B: konwencja dla wypuszczania wolnych programów JavaScript.</h3> 278 279 <p>Jeśli jesteście webmasterem rozprowadzającym wolne oprogramowanie JavaScript 280 na Waszej stronie, to jasne i konsekwentne umieszczanie informacji 281 o licencjach i kodzie źródłowym pomaga odwiedzającym upewnić się, 282 że uruchamiają wolne oprogramowanie i pomogą Wam przestrzegać 283 warunki licencji.</p> 284 285 <p>Jedną z metod przedstawiania licencji jest ta opisana wyżej w <a 286 href="#AppendixA">Dodatku A</a>. Druga metoda, <a 287 href="/licenses/javascript-labels.html">JavaScript license web labels</a>, 288 może być wygodniejsza dla bibliotek z-minifi-owanym kodem JavaScript, 289 szczególnie gdy to nie Wy go napisaliście.</p> 290 291 <div class="translators-notes"> 292 293 <!--TRANSLATORS: Use space (SPC) as msgstr if you don't have notes.--> 294 </div> 295 </div> 296 297 <!-- for id="content", starts in the include above --> 298 <!--#include virtual="/server/footer.pl.html" --> 299 <div id="footer"> 300 <div class="unprintable"> 301 302 <p>Wszelkie pytania dotyczące GNU i FSF prosimy kierować na adres <a 303 href="mailto:gnu@gnu.org"><gnu@gnu.org></a>. Inne metody kontaktu 304 z FSF można znaleźć na stronie <a 305 href="/contact/contact.html">kontakt</a> <br /> Informacje o niedziałających 306 odnośnikach oraz inne poprawki (lub propozycje) prosimy wysyłać 307 na adres <a 308 href="mailto:web-translators@gnu.org"><web-translators@gnu.org></a>.</p> 309 310 <p> 311 <!-- TRANSLATORS: Ignore the original text in this paragraph, 312 replace it with the translation of these two: 313 314 We work hard and do our best to provide accurate, good quality 315 translations. However, we are not exempt from imperfection. 316 Please send your comments and general suggestions in this regard 317 to <a href="mailto:web-translators@gnu.org"> 318 319 <web-translators@gnu.org></a>.</p> 320 321 <p>For information on coordinating and submitting translations of 322 our web pages, see <a 323 href="/server/standards/README.translations.html">Translations 324 README</a>. --> 325 Staramy się, aby tłumaczenia były wierne i wysokiej jakości, 326 ale nie jesteśmy zwolnieni z niedoskonałości. Komentarze odnośnie 327 tłumaczenia polskiego oraz zgłoszenia dotyczące chęci współpracy 328 w tłumaczeniu prosimy kierować na adres <a 329 href="mailto:www-pl-trans@gnu.org">www-pl-trans@gnu.org</a>. <br /> Więcej 330 informacji na temat koordynacji oraz zgłaszania propozycji 331 tłumaczeń artykułów znajdziecie na <a 332 href="/server/standards/README.translations.html">stronie tłumaczeń</a>.</p> 333 </div> 334 335 <!-- Regarding copyright, in general, standalone pages (as opposed to 336 files generated as part of manuals) on the GNU web server should 337 be under CC BY-ND 4.0. Please do NOT change or remove this 338 without talking with the webmasters or licensing team first. 339 Please make sure the copyright date is consistent with the 340 document. For web pages, it is ok to list just the latest year the 341 document was modified, or published. 342 343 If you wish to list earlier years, that is ok too. 344 Either "2001, 2002, 2003" or "2001-2003" are ok for specifying 345 years, as long as each year in the range is in fact a copyrightable 346 year, i.e., a year in which the document was published (including 347 being publicly visible on the web or in a revision control system). 348 349 There is more detail about copyright years in the GNU Maintainers 350 Information document, www.gnu.org/prep/maintain. --> 351 <p>Copyright © 2009-2013, 2016 Richard Stallman</p> 352 353 <p>Ta strona jest dostępna na <a rel="license" 354 href="http://creativecommons.org/licenses/by-nd/4.0/deed.pl">licencji 355 Creative Commons Uznanie autorstwa – Bez utworów zależnych 356 4.0 Międzynarodowe</a>.</p> 357 358 <!--#include virtual="/server/bottom-notes.pl.html" --> 359 <div class="translators-credits"> 360 361 <!--TRANSLATORS: Use space (SPC) as msgstr if you don't want credits.--> 362 Tłumaczenie: Jan Owoc 2012, 2016, Jan Wieremjewicz 2010, 2012; poprawki Jan 363 Owoc 2010, 2011, 2013.</div> 364 365 <p class="unprintable"><!-- timestamp start --> 366 Aktualizowane: 367 368 $Date: 2016/11/18 07:32:45 $ 369 370 <!-- timestamp end --> 371 </p> 372 </div> 373 </div> 374 </body> 375 </html>