javascript-trap.html (18261B)
1 <!--#set var="ENGLISH_PAGE" value="/philosophy/javascript-trap.en.html" --> 2 3 <!--#include virtual="/server/header.sq.html" --> 4 <!-- Parent-Version: 1.96 --> 5 <!-- This page is derived from /server/standards/boilerplate.html --> 6 <!--#set var="TAGS" value="essays licensing traps" --> 7 <!--#set var="DISABLE_TOP_ADDENDUM" value="yes" --> 8 9 <!-- This file is automatically generated by GNUnited Nations! --> 10 <title>Kurthi JavaScript - Projekti GNU - Free Software Foundation</title> 11 12 <!--#include virtual="/philosophy/po/javascript-trap.translist" --> 13 <!--#include virtual="/server/banner.sq.html" --> 14 <!--#include virtual="/philosophy/ph-breadcrumb.sq.html" --> 15 <!--GNUN: OUT-OF-DATE NOTICE--> 16 <!--#include virtual="/server/top-addendum.sq.html" --> 17 <div class="article reduced-width"> 18 <h2>Kurthi JavaScript</h2> 19 20 <address class="byline">nga <a href="https://www.stallman.org/">Richard Stallman</a></address> 21 22 <p><strong>Mund të jeni duke xhiruar programe jo të lirë në kompjuterin tuaj 23 çdo ditë, pa e ditur - përmes shfletuesit tuaj.</strong></p> 24 25 <!-- any links that used to point to the appendices should point to 26 free-your-javascript.html instead. --> 27 <div class="announcement"> 28 <hr class="no-display" /> 29 <p>Webmasters: ka <a href="/software/librejs/free-your-javascript.html">disa 30 rrugë</a> për të treguar licencën e programeve JavaScript në një sajt.</p> 31 <hr class="no-display" /> 32 </div> 33 34 <p>Ideja se <a href="/philosophy/free-software-even-more-important.html"> 35 cilido program jo i lirë keqtrajton përdoruesit e tij</a> është familjare 36 për bashkësinë e software-it të lirë. Disa nga ne e mbrojnë lirinë tonë 37 duke hedhur poshtë krejt programet jo të lira në kompjuterat tanë. Mjaft të 38 tjerë e shohin të qenët jo të lirë si një goditje ndaj programit.</p> 39 40 <p>Mjaft përdorues janë në dijeni se ky problem aplikohet te shtojcat që 41 shfletuesi ofron të instalohet, ngaqë ato mund të jenë të lira ose jo të 42 lira. Por shfletuesi xhiron programe të tjera jo të lira, për të cilat nuk 43 ju pyesin, ose madje nuk ua tregojnë - programe të cilat i përmbajnë ose te 44 të cilat lidhen faqe web. Këto programe në shumicën e rasteve janë të 45 shkruar në JavaScript, por përdoren edhe gjuhë të tjera.</p> 46 47 <p>JavaScript-i (i quajtur zyrtarisht ECMAScript, pro pak vetë e përdorin këtë 48 emër) dikur përdorej për fru-fru të vockla në faqe web, bie fjala, për 49 elementë të hijshëm, por jothelbësorë, lëvizjeje dhe shfaqjeje. Qe e 50 pranueshme të konsideroheshin këto si zgjerime të thjeshta të gjuhës HTML, 51 në vend se <em>software</em> i njëmendtë dhe të hidhej tej ajo punë.</p> 52 53 <p>Disa sajte ende e përdorin JavaScript-in në këtë mënyrë, por shumë prej tyre 54 e përdorin për programe të rëndësishme, që kryejnë punë të mëdha. Për 55 shembull, Google Docs provon të instalojë në shfletuesin tuaj një program 56 JavaScript që është gjysmë megabajt i madh, në një format të ngjeshur që 57 mund ta quanim Obfuscript. Kjo formë e ngjeshur është krijuar nga kodi 58 burim, duke fshirë hapësira ekstra që e bëjnë kodin të lexueshëm dhe 59 shënimet shpjeguese, që e bëjnë të kuptueshëm, si dhe duke zëvendësuar te 60 kodi çdo emër me kuptim me një emër arbitrar të shkurtër, që të mos mund të 61 themi se ç’do të thotë.</p> 62 63 <p>Pjesë e <a href="/philosophy/free-sw.html">kuptimit të software-it të 64 lirë</a> është se përdoruesit kanë mundësi të hyjnë te kodi burim i 65 programit (plani i tij). Kodi burim i një programi do të thotë forma e 66 parapëlqyer për programuesit për ta ndryshuar - përfshi hapësira të 67 dobishme, shënime shpjeguese dhe emra të kuptimtë. Kodi i ngjeshur është një 68 zëvendësim i gabuar, i padobishëm i kodit burim; kodi i vërtetë burim i 69 këtyre programeve nuk mund të kihet nga përdoruesit, që përdoruesit të mund 70 ta kuptojnë; ndaj programet nuk janë të lirë.</p> 71 72 <p>Përveç të qenit jo të lirë, mjaft prej këtyre programeve janë 73 <em>malware</em>, ngaqë <a 74 href="https://github.com/w3c/fingerprinting-guidance/issues/8">përgjojnë 75 përdoruesin</a>. Edhe më të shpifur, disa sajte përdorin shërbime të cilat 76 regjistrojnë <a 77 href="https://freedom-to-tinker.com/2017/11/15/no-boundaries-exfiltration-of-personal-data-by-session-replay-scripts/">krejt 78 veprimet e përdoruesit teksa shohin një faqe</a>. Këto shërbime gjoja “i 79 redaktojnë” regjistrimet, për të përjashtuar të dhëna rezervat që sajti 80 s’duhet t’i marrë. Por edhe nëse kjo bëhet si duhet, qëllimi i këtyre 81 shërbimeve është t’u japin sajteve të tjera të dhëna personale që këta 82 s’duhet t’i marrin.</p> 83 84 <p>Zakonisht shfletuesit nuk ju thonë kur ngarkojnë programe JavaScript. Disa 85 shfletues kanë një mënyrë për të çaktivizuar krejtësisht JavaScript-in, por 86 edhe nëse jeni i ndërgjegjshëm për këtë pikë, do t’ju duhej mundim i madh 87 për të identifikuar programe jo të lirë, jo trivialë dhe t’i bllokoni. 88 Megjithatë, madje edhe në bashkësinë e software-it të lirë, shumica e 89 përdoruesve nuk e dinë këtë problem; heshtja e shfletuesve priret ta fshehë.</p> 90 91 <p>Për të qenë të qartë, gjuha JavaScript në vetvete s’është më e mirë a më e 92 keqe për lirinë e përdoruesit, se sa cilado gjuhë tjetër. Është e mundur të 93 hidhet në qarkullim një program JavaScript si <em>software</em> i lirë, duke 94 dhënë kodin e tij burim nën një licencë software-i të lirë. Nëse programi 95 është “self-contained” - funksionimi dhe qëllimi i tij janë të pavarur nga 96 faqja prej nga erdh - kjo është në rregull; mund ta kopjoni në një kartelë 97 në makinën tuaj, ta ndryshoni dhe ta hapni atë kartelë me një shfletues, për 98 ta xhiruar. Madje është e mundur të paketohet për instalim mu si programet 99 e tjerë të lirë dhe për ta përdorur me një urdhër shelli. Këto programe 100 s’përfaqësojnë problem special moral të ndryshëm nga ato të programeve C.</p> 101 102 <p>Problemi i kurthit JavaScript del kur programi JavaScript vjen tok me një 103 faqe që vizitoni përdoruesi. Këto programe JavaScript janë shkruar për të 104 funksionuar me një faqe apo sajt të caktuar dhe funksionimi i faqes apo 105 sajtit varet prej tyre.</p> 106 107 <p>Le të supozojmë se ju e kopjoni dhe ndryshoni kodin JavaScript të faqes. 108 Mandej del një problem tjetër: edhe nëse mund të kihet burimi i programit, 109 shfletuesit nuk ofrojnë ndonjë mënyrë për të xhiruar versionin e ndryshuar 110 në vend të origjinalit, kur vizitohet faqja apo sajti. Efekti është i 111 krahasueshëm me tivoizimin, edhe pse, në parim, jo dhe aq i zorshëm për t’u 112 tejkaluar.</p> 113 114 <p>JavaScript-i s’është gjuha e vetme që sajtet përdorin për programe dërguar 115 përdoruesit. Flash-i mbulonte programim përmes një varianti të zgjeruar të 116 JavaScript-it, por kjo i takon të kaluarës. Silverlight duket se krijon një 117 problem të ngjashëm me Flash-i, vetëm se më keq, ngaqë Microsoft-i e përdor 118 si platformë për kodekë jo të lirë. Një zëvendësim i lirë për 119 Silverlight-in nuk bën punë për botën e programeve të lira, veç në ardhtë me 120 kodekë zëvendësimi të lirë.</p> 121 122 <p>Aplikacionthet Java xhirojnë gjithashtu në shfletues dhe nxjerrin probleme 123 të ngjashme. Në përgjithësi, ky lloj problemi shtrohet për çfarëdo sistemi 124 aplikacionthesh. Pasja e një mjedisi të lirë ekzekutimi vetëm se na shpie 125 larg nga trajtimi i problemit.</p> 126 127 <p>Teorikisht është e mundshme të programohet në HTML dhe CSS, por në praktikë 128 kjo aftësi është e kufizuar dhe jo e leverdishme; thjesht për të arritur të 129 bëjë diçka do punë mbresëlënëse. Programe të tillë duhet të jenë të lira, 130 por CSS-ja s’është problem serioz për lirinë e përdoruesi, më 2019-n.</p> 131 132 <p>Është zhvilluar një lëvizje e fuqishme që u bën thirrje sajteve të 133 komunikojnë vetëm përmes formatesh dhe protokollesh që janë të lirë (ndonjë 134 thotë “të hapët”); që do të thotë, dokumentimi i të cilave është i botuar 135 dhe të cilat gjithkush është i lirë t’i vërë në përdorim. Por prania e 136 programeve JavaScript në faqe web e bën të pamjaftueshëm këtë kriter. Gjuha 137 JavaScript në vetvete, si një format, është e lirë dhe përdorimi i 138 JavaScript-it në një sajt s’është medoemos gjë e keqe. Por, siç e kemi parë 139 më sipër, mund të jetë e keqe - nëse programi JavaScript është jo i lirë. 140 Kur sajti i transmeton një program përdoruesit, nuk mjafton që programi të 141 jetë shkuar në një gjuhë të dokumentuar dhe jo të koklavitur; ai program 142 duhet të jetë gjithashtu i lirë. “I kalon përdoruesit vetëm programe të 143 lira” duhet të bëhet pjesë e kriterit për një sajt etik.</p> 144 145 <p>Ngarkimi dhe xhirimi heshtazi i programeve jo të lira është një nga disa 146 problemet e lindura me “aplikacionet web”. Termi “aplikacione web” qe 147 konceptuar për të anashkaluar parjen e dallimit thelbësor mes software-i 148 dhënë përdoruesit dhe software-i që xhiron në një shërbyes. Mund t’i 149 referohet një programi klient të specializuar që xhiron në një shfletues; 150 mund t’i referohet një software-i të specializuar shërbyesi; mund t’i 151 referohet një programi klient të specializuar që funksionon krah për krah me 152 software-in e specializuar të shërbyesit. Klienti dhe shërbyesi nxjerrin 153 probleme të ndryshme etike, edhe nëse janë të integruar kaq ngushtë, saqë 154 mund të thuhet se formojnë pjesë të një programi të vetëm. Ky artikull 155 trajton vetëm problemin e software-it më anë të klientit. Problemin e 156 shërbyesit e trajtojmë ndarazi prej tij.</p> 157 158 <p>Nga ana praktike, si mund të trajtojmë problemin e programeve JavaScript jo 159 trivialë, jo të lirë, në sajte? Hapi i parë është të shmanget xhirimi i tij.</p> 160 161 <p>Ç’duam të themi me “jo trivial”? Është çështje që varet nga shkalla, pra 162 është çështje e hartimit të një kriteri të thjeshtë që jep përfundime të 163 mira, në vend se gjetje e përgjigjes së saktë.</p> 164 <p> 165 Kriteri ynë i tanishëm është të konsiderohet jo trivial një program 166 JavaScript, nëse plotësohet cilido prej këtyre kushteve:</p> 167 168 <ul> 169 <li>i referohen si një programth i jashtëm (nga një faqe tjetër).</li> 170 171 <li>deklaron një varg më të gjatë se 50 elementë.</li> 172 173 <li>përkufizon një njësi të emërtuar (funksion ose metodë) që kryen thirrje ndaj 174 çfarëdo gjëje tjetër nga një primitiv.</li> 175 176 <li>përkufizon një njësi të emërtuar me më shumë se tre konstrukte kushtore dhe 177 konstrukt qerthull.</li> 178 179 <li>kod jashtë përkufizimesh të emërtuara thërret çfarëdo hiq primitivë dhe 180 funksione të përkufizuar më sipër te faqja.</li> 181 182 <li>kod jashtë përkufizimesh të emërtuara përmban më shumë se tre konstrukte 183 kushtore dhe konstrukt qerthull, gjithsej.</li> 184 185 <li>kryen thirrje ndaj <b>eval</b>.</li> 186 187 <li>kryen thirrje Ajax.</li> 188 189 <li>përdor shkrim kllapash për përdorim vetish objektesh dinamikë, që duket si 190 <b><em>objekt</em>[<em>veti</em>]</b>.</li> 191 192 <li>ndryshon DOM-in.</li> 193 194 <li>përdor konstrukte dinamike JavaScript që janë të vështirë për t’u analizuar 195 pa interpretuar programin, ose ngarkohet tok me programthe që përdorin 196 konstrukte të tillë. Në mënyrë specifike, duke përdorur çfarëdo konstrukti 197 tjetër nga një varg literal me disa metoda (<b>Obj.write</b>, 198 <b>Obj.createElement</b>, dhe të tjerë).</li> 199 </ul> 200 201 <p>Si e marrim vesh nëse kodi JavaScript është apo jo i lirë? Në një <a 202 href="/licenses/javascript-labels.html">artikull më vete</a>, propozojmë një 203 metodë me të cilën një program JavaScript jo trivial në një faqe web mund të 204 deklarojë URL-në ku gjendet kodi burim dhe mund të deklarojë edhe licencën 205 për të, duke përdorur komente të stilizuar.</p> 206 207 <p>Së fundi, na duhet të ndryshojmë shfletues të lirë që të pikasin dhe 208 bllokojnë JavaScript jo trivial dhe jo të lirë në faqe web. Programi <a 209 href="/software/librejs/">LibreJS</a> pikas JavaScript jo të lirë, jo 210 trivial në faqe që vizitoni dhe e bllokon. LibreJS-i përfshihet në IceCat 211 dhe mund të kihet si shtesë për Firefox.</p> 212 213 <p>Përdoruesit e shfletuesve kanë gjithashtu nevojë për një mjet të 214 përshtatshëm për të specifikuar kod JavaScript për t’u përdorur <em>në 215 vend</em> të JavaScript-it në një faqe të dhënë. (Kodi i dhënë mund të jetë 216 zëvendësim tërësor, ose një version i ndryshuar i programit të lirë 217 JavaScript në atë faqe.) Greasemonkey është afër të qenit i aftë për ta 218 bërë këtë, por jo dhe aq, ngaqë nuk garanton të ndryshojë kodin JavaScript 219 në një faqe, përpara se programi fillon të ekzekutohet. Përdorimi i një 220 ndërmjetësi vendor bën punë, por është shumë i papërshtatshëm tani për të 221 qenë një zgjidhje reale. Na duhet të ndërtojmë një zgjidhje që është e 222 qëndrueshme dhe me leverdi, si dhe sajte për të ndarë me të tjerët 223 ndryshimet. Projekti GNU do të donte të rekomandonte sajte që u 224 përkushtohen vetëm ndryshimeve të lira.</p> 225 226 <p>Këto veçori do t’i bëjnë të mundur një programi JavaScript të përfshirë në 227 një faqe web të jetë i lirë në një kuptim real dhe praktik. JavaScript-i 228 s’do të jetë më një pengesë e veçantë drejt lirisë tonë - jo më tepër se sa 229 janë C-ja dhe Java. Do të jemi në gjendje të hedhim poshtë dhe madje të 230 zëvendësojmë programe të lirë jo trivialë JavaScript, ashtu siç hedhim 231 poshtë dhe zëvendësojmë paketa jo të lira që ofrohem për instalim në rrugën 232 e zakonshme. Mandej mund të fillojë fushata jonë që sajte të çlirojnë 233 JavaScript-in e tyre.</p> 234 235 <p>Ndërkohë, ka një rast kur është e pranueshme të xhirohet një program 236 JavaScript jo i lirë: për të dërguar një ankesë te operatorët e sajtit për 237 t’u thënë se duhet të bëjnë të lirë ose ta heqin fare kodin JavaScript. Ju 238 lutemi, mos ngurroni ta aktivizoni përkohësisht JavaScript-in për të bërë 239 këtë - por mos harroni ta çaktivizoni më pas.</p> 240 241 <!-- any links that used to point to the appendices should point to 242 free-your-javascript.html instead. --> 243 <div class="announcement"> 244 <hr class="no-display" /> 245 <p>Webmasters: ka <a href="/software/librejs/free-your-javascript.html">disa 246 rrugë</a> për të treguar licencën e programeve JavaScript në një sajt.</p> 247 <hr class="no-display" /> 248 </div> 249 250 <p><strong>Falënderime:</strong> Falënderoj <a 251 href="/people/people.html#mattlee">Matt Lee-në</a> dhe <a 252 href="http://ejohn.org">John Resig-un</a> për ndihmën e tyre në përkufizimin 253 e kriterit tonë të propozuar, si dhe David Parunakian-in që më tërhoqi 254 vëmendjen te problemi.</p> 255 </div> 256 257 <div class="translators-notes"> 258 259 <!--TRANSLATORS: Use space (SPC) as msgstr if you don't have notes.--> 260 </div> 261 </div> 262 263 <!-- for id="content", starts in the include above --> 264 <!--#include virtual="/server/footer.sq.html" --> 265 <div id="footer" role="contentinfo"> 266 <div class="unprintable"> 267 268 <p>Ju lutemi, pyetjet dhe kërkesat e përgjithshme rreth FSF-së & GNU-së 269 dërgojini te <a href="mailto:gnu@gnu.org"><gnu@gnu.org></a>. Ka 270 gjithashtu <a href="/contact/">mënyra të tjera për t’u lidhur me</a> 271 FSF-në. Njoftimet për lidhje të dëmtuara dhe ndreqje apo këshilla të tjera 272 mund të dërgohen te <a 273 href="mailto:webmasters@gnu.org"><webmasters@gnu.org></a>.</p> 274 275 <p> 276 <!-- TRANSLATORS: Ignore the original text in this paragraph, 277 replace it with the translation of these two: 278 279 We work hard and do our best to provide accurate, good quality 280 translations. However, we are not exempt from imperfection. 281 Please send your comments and general suggestions in this regard 282 to <a href="mailto:web-translators@gnu.org"> 283 284 <web-translators@gnu.org></a>.</p> 285 286 <p>For information on coordinating and contributing translations of 287 our web pages, see <a 288 href="/server/standards/README.translations.html">Translations 289 README</a>. --> 290 Përpiqemi fort dhe bëjmë sa mundemi për të ofruar përkthime me cilësi të 291 mirë dhe të përpikta. Megjithatë, nuk jemi të përjashtuar nga 292 papërsosmëritë. Ju lutemi, komentet dhe këshillat e përgjithshme lidhur me 293 këtë dërgojini te <a 294 href="mailto:web-translators@gnu.org"><web-translators@gnu.org></a>.</p><p>Për 295 të dhëna mbi bashkërendimin dhe parashtrimin e përkthimeve të faqeve tona 296 web, shihni <a href="/server/standards/README.translations.html">README për 297 përkthimet</a>.</p> 298 </div> 299 300 <!-- Regarding copyright, in general, standalone pages (as opposed to 301 files generated as part of manuals) on the GNU web server should 302 be under CC BY-ND 4.0. Please do NOT change or remove this 303 without talking with the webmasters or licensing team first. 304 Please make sure the copyright date is consistent with the 305 document. For web pages, it is ok to list just the latest year the 306 document was modified, or published. 307 308 If you wish to list earlier years, that is ok too. 309 Either "2001, 2002, 2003" or "2001-2003" are ok for specifying 310 years, as long as each year in the range is in fact a copyrightable 311 year, i.e., a year in which the document was published (including 312 being publicly visible on the web or in a revision control system). 313 314 There is more detail about copyright years in the GNU Maintainers 315 Information document, www.gnu.org/prep/maintain. --> 316 <p>Të drejta kopjimi © 2009-2013, 2016-2019, 2021 Richard Stallman</p> 317 318 <p>Kjo faqe mund të përdoret sipas një licence <a rel="license" 319 href="http://creativecommons.org/licenses/by-nd/4.0/">Creative Commons 320 Attribution-NoDerivatives 4.0 International License</a>.</p> 321 322 <!--#include virtual="/server/bottom-notes.sq.html" --> 323 <div class="translators-credits"> 324 325 <!--TRANSLATORS: Use space (SPC) as msgstr if you don't want credits.--> 326 </div> 327 328 <p class="unprintable"><!-- timestamp start --> 329 U përditësua më: 330 331 $Date: 2021/12/01 23:30:29 $ 332 333 <!-- timestamp end --> 334 </p> 335 </div> 336 </div> 337 <!-- for class="inner", starts in the banner include --> 338 </body> 339 </html>