summaryrefslogtreecommitdiff
path: root/talermerchantdemos/blog/articles/sq/javascript-trap.html
blob: f17711f1da199c9cd32de8692b47686591edfadc (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
<!--#set var="ENGLISH_PAGE" value="/philosophy/javascript-trap.en.html" -->

<!--#include virtual="/server/header.sq.html" -->
<!-- Parent-Version: 1.96 -->
<!-- This page is derived from /server/standards/boilerplate.html -->
<!--#set var="TAGS" value="essays licensing traps" -->
<!--#set var="DISABLE_TOP_ADDENDUM" value="yes" -->

<!-- This file is automatically generated by GNUnited Nations! -->
<title>Kurthi JavaScript - Projekti GNU - Free Software Foundation</title>

<!--#include virtual="/philosophy/po/javascript-trap.translist" -->
<!--#include virtual="/server/banner.sq.html" -->
<!--#include virtual="/philosophy/ph-breadcrumb.sq.html" -->
<!--GNUN: OUT-OF-DATE NOTICE-->
<!--#include virtual="/server/top-addendum.sq.html" -->
<div class="article reduced-width">
<h2>Kurthi JavaScript</h2>

<address class="byline">nga <a href="https://www.stallman.org/">Richard Stallman</a></address>

<p><strong>Mund të jeni duke xhiruar programe jo të lirë në kompjuterin tuaj
çdo ditë, pa e ditur - përmes shfletuesit tuaj.</strong></p>

<!-- any links that used to point to the appendices should point to
     free-your-javascript.html instead.  -->
<div class="announcement">
<hr class="no-display" />
<p>Webmasters: ka <a href="/software/librejs/free-your-javascript.html">disa
rrugë</a> për të treguar licencën e programeve JavaScript në një sajt.</p>
<hr class="no-display" />
</div>

<p>Ideja se <a href="/philosophy/free-software-even-more-important.html">
cilido program jo i lirë keqtrajton përdoruesit e tij</a> është familjare
për bashkësinë e software-it të lirë.  Disa nga ne e mbrojnë lirinë tonë
duke hedhur poshtë krejt programet jo të lira në kompjuterat tanë.  Mjaft të
tjerë e shohin të qenët jo të lirë si një goditje ndaj programit.</p>

<p>Mjaft përdorues janë në dijeni se ky problem aplikohet te shtojcat që
shfletuesi ofron të instalohet, ngaqë ato mund të jenë të lira ose jo të
lira.  Por shfletuesi xhiron programe të tjera jo të lira, për të cilat nuk
ju pyesin, ose madje nuk ua tregojnë - programe të cilat i përmbajnë ose te
të cilat lidhen faqe web.  Këto programe në shumicën e rasteve janë të
shkruar në JavaScript, por përdoren edhe gjuhë të tjera.</p>

<p>JavaScript-i (i quajtur zyrtarisht ECMAScript, pro pak vetë e përdorin këtë
emër)  dikur përdorej për fru-fru të vockla në faqe web, bie fjala, për
elementë të hijshëm, por jothelbësorë, lëvizjeje dhe shfaqjeje.  Qe e
pranueshme të konsideroheshin këto si zgjerime të thjeshta të gjuhës HTML,
në vend se <em>software</em> i njëmendtë dhe të hidhej tej ajo punë.</p>

<p>Disa sajte ende e përdorin JavaScript-in në këtë mënyrë, por shumë prej tyre
e përdorin për programe të rëndësishme, që kryejnë punë të mëdha.  Për
shembull, Google Docs provon të instalojë në shfletuesin tuaj një program
JavaScript që është gjysmë megabajt i madh, në një format të ngjeshur që
mund ta quanim Obfuscript.  Kjo formë e ngjeshur është krijuar nga kodi
burim, duke fshirë hapësira ekstra që e bëjnë kodin të lexueshëm dhe
shënimet shpjeguese, që e bëjnë të kuptueshëm, si dhe duke zëvendësuar te
kodi çdo emër me kuptim me një emër arbitrar të shkurtër, që të mos mund të
themi se ç’do të thotë.</p>

<p>Pjesë e <a href="/philosophy/free-sw.html">kuptimit të software-it të
lirë</a> është se përdoruesit kanë mundësi të hyjnë te kodi burim i
programit (plani i tij).  Kodi burim i një programi do të thotë forma e
parapëlqyer për programuesit për ta ndryshuar - përfshi hapësira të
dobishme, shënime shpjeguese dhe emra të kuptimtë. Kodi i ngjeshur është një
zëvendësim i gabuar, i padobishëm i kodit burim; kodi i vërtetë burim i
këtyre programeve nuk mund të kihet nga përdoruesit, që përdoruesit të mund
ta kuptojnë; ndaj programet nuk janë të lirë.</p>

<p>Përveç të qenit jo të lirë, mjaft prej këtyre programeve janë
<em>malware</em>, ngaqë <a
href="https://github.com/w3c/fingerprinting-guidance/issues/8">përgjojnë
përdoruesin</a>.  Edhe më të shpifur, disa sajte përdorin shërbime të cilat
regjistrojnë <a
href="https://freedom-to-tinker.com/2017/11/15/no-boundaries-exfiltration-of-personal-data-by-session-replay-scripts/">krejt
veprimet e përdoruesit teksa shohin një faqe</a>.  Këto shërbime gjoja “i
redaktojnë” regjistrimet, për të përjashtuar të dhëna rezervat që sajti
s’duhet t’i marrë.  Por edhe nëse kjo bëhet si duhet, qëllimi i këtyre
shërbimeve është t’u japin sajteve të tjera të dhëna personale që këta
s’duhet t’i marrin.</p>

<p>Zakonisht shfletuesit nuk ju thonë kur ngarkojnë programe JavaScript.  Disa
shfletues kanë një mënyrë për të çaktivizuar krejtësisht JavaScript-in, por
edhe nëse jeni i ndërgjegjshëm për këtë pikë, do t’ju duhej mundim i madh
për të identifikuar programe jo të lirë, jo trivialë dhe t’i bllokoni.
Megjithatë, madje edhe në bashkësinë e software-it të lirë, shumica e
përdoruesve nuk e dinë këtë problem; heshtja e shfletuesve priret ta fshehë.</p>

<p>Për të qenë të qartë, gjuha JavaScript në vetvete s’është më e mirë a më e
keqe për lirinë e përdoruesit, se sa cilado gjuhë tjetër.  Është e mundur të
hidhet në qarkullim një program JavaScript si <em>software</em> i lirë, duke
dhënë kodin e tij burim nën një licencë software-i të lirë.  Nëse programi
është “self-contained” - funksionimi dhe qëllimi i tij janë të pavarur nga
faqja prej nga erdh - kjo është në rregull; mund ta kopjoni në një kartelë
në makinën tuaj, ta ndryshoni dhe ta hapni atë kartelë me një shfletues, për
ta xhiruar.  Madje është e mundur të paketohet për instalim mu si programet
e tjerë të lirë dhe për ta përdorur me një urdhër shelli.  Këto programe
s’përfaqësojnë problem special moral të ndryshëm nga ato të programeve C.</p>

<p>Problemi i kurthit JavaScript del kur programi JavaScript vjen tok me një
faqe që vizitoni përdoruesi.  Këto programe JavaScript janë shkruar për të
funksionuar me një faqe apo sajt të caktuar dhe funksionimi i faqes apo
sajtit varet prej tyre.</p>

<p>Le të supozojmë se ju e kopjoni dhe ndryshoni kodin JavaScript të faqes.
Mandej del një problem tjetër: edhe nëse mund të kihet burimi i programit,
shfletuesit nuk ofrojnë ndonjë mënyrë për të xhiruar versionin e ndryshuar
në vend të origjinalit, kur vizitohet faqja apo sajti.  Efekti është i
krahasueshëm me tivoizimin, edhe pse, në parim, jo dhe aq i zorshëm për t’u
tejkaluar.</p>

<p>JavaScript-i s’është gjuha e vetme që sajtet përdorin për programe dërguar
përdoruesit.  Flash-i mbulonte programim përmes një varianti të zgjeruar të
JavaScript-it, por kjo i takon të kaluarës.  Silverlight duket se krijon një
problem të ngjashëm me Flash-i, vetëm se më keq, ngaqë Microsoft-i e përdor
si platformë për kodekë jo të lirë.  Një zëvendësim i lirë për
Silverlight-in nuk bën punë për botën e programeve të lira, veç në ardhtë me
kodekë zëvendësimi të lirë.</p>

<p>Aplikacionthet Java xhirojnë gjithashtu në shfletues dhe nxjerrin probleme
të ngjashme.  Në përgjithësi, ky lloj problemi shtrohet për çfarëdo sistemi
aplikacionthesh.  Pasja e një mjedisi të lirë ekzekutimi vetëm se na shpie
larg nga trajtimi i problemit.</p>

<p>Teorikisht është e mundshme të programohet në HTML dhe CSS, por në praktikë
kjo aftësi është e kufizuar dhe jo e leverdishme; thjesht për të arritur të
bëjë diçka do punë mbresëlënëse.  Programe të tillë duhet të jenë të lira,
por CSS-ja s’është problem serioz për lirinë e përdoruesi, më 2019-n.</p>

<p>Është zhvilluar një lëvizje e fuqishme që u bën thirrje sajteve të
komunikojnë vetëm përmes formatesh dhe protokollesh që janë të lirë (ndonjë
thotë “të hapët”); që do të thotë, dokumentimi i të cilave është i botuar
dhe të cilat gjithkush është i lirë t’i vërë në përdorim.  Por prania e
programeve JavaScript në faqe web e bën të pamjaftueshëm këtë kriter.  Gjuha
JavaScript në vetvete, si një format, është e lirë dhe përdorimi i
JavaScript-it në një sajt s’është medoemos gjë e keqe.  Por, siç e kemi parë
më sipër, mund të jetë e keqe - nëse programi JavaScript është jo i lirë.
Kur sajti i transmeton një program përdoruesit, nuk mjafton që programi të
jetë shkuar në një gjuhë të dokumentuar dhe jo të koklavitur; ai program
duhet të jetë gjithashtu i lirë.  “I kalon përdoruesit vetëm programe të
lira” duhet të bëhet pjesë e kriterit për një sajt etik.</p>

<p>Ngarkimi dhe xhirimi heshtazi i programeve jo të lira është një nga disa
problemet e lindura me “aplikacionet web”.  Termi “aplikacione web” qe
konceptuar për të anashkaluar parjen e dallimit thelbësor mes software-i
dhënë përdoruesit dhe software-i që xhiron në një shërbyes.  Mund t’i
referohet një programi klient të specializuar që xhiron në një shfletues;
mund t’i referohet një software-i të specializuar shërbyesi; mund t’i
referohet një programi klient të specializuar që funksionon krah për krah me
software-in e specializuar të shërbyesit.  Klienti dhe shërbyesi nxjerrin
probleme të ndryshme etike, edhe nëse janë të integruar kaq ngushtë, saqë
mund të thuhet se formojnë pjesë të një programi të vetëm.  Ky artikull
trajton vetëm problemin e software-it më anë të klientit.  Problemin e
shërbyesit e trajtojmë ndarazi prej tij.</p>

<p>Nga ana praktike, si mund të trajtojmë problemin e programeve JavaScript jo
trivialë, jo të lirë, në sajte? Hapi i parë është të shmanget xhirimi i tij.</p>

<p>Ç’duam të themi me “jo trivial”? Është çështje që varet nga shkalla, pra
është çështje e hartimit të një kriteri të thjeshtë që jep përfundime të
mira, në vend se gjetje e përgjigjes së saktë.</p>
<p>
Kriteri ynë i tanishëm është të konsiderohet jo trivial një program
JavaScript, nëse plotësohet cilido prej këtyre kushteve:</p>

<ul>
  <li>i referohen si një programth i jashtëm (nga një faqe tjetër).</li>

  <li>deklaron një varg më të gjatë se 50 elementë.</li>

  <li>përkufizon një njësi të emërtuar (funksion ose metodë) që kryen thirrje ndaj
çfarëdo gjëje tjetër nga një primitiv.</li>

  <li>përkufizon një njësi të emërtuar me më shumë se tre konstrukte kushtore dhe
konstrukt qerthull.</li>

  <li>kod jashtë përkufizimesh të emërtuara thërret çfarëdo hiq primitivë dhe
funksione të përkufizuar më sipër te faqja.</li>

  <li>kod jashtë përkufizimesh të emërtuara përmban më shumë se tre konstrukte
kushtore dhe konstrukt qerthull, gjithsej.</li>

  <li>kryen thirrje ndaj <b>eval</b>.</li>

  <li>kryen thirrje Ajax.</li>

  <li>përdor shkrim kllapash për përdorim vetish objektesh dinamikë, që duket si
<b><em>objekt</em>[<em>veti</em>]</b>.</li>

  <li>ndryshon DOM-in.</li>
  
  <li>përdor konstrukte dinamike JavaScript që janë të vështirë për t’u analizuar
pa interpretuar programin, ose ngarkohet tok me programthe që përdorin
konstrukte të tillë.  Në mënyrë specifike, duke përdorur çfarëdo konstrukti
tjetër nga një varg literal me disa metoda (<b>Obj.write</b>,
<b>Obj.createElement</b>, dhe të tjerë).</li>
</ul>

<p>Si e marrim vesh nëse kodi JavaScript është apo jo i lirë? Në një <a
href="/licenses/javascript-labels.html">artikull më vete</a>, propozojmë një
metodë me të cilën një program JavaScript jo trivial në një faqe web mund të
deklarojë URL-në ku gjendet kodi burim dhe mund të deklarojë edhe licencën
për të, duke përdorur komente të stilizuar.</p>

<p>Së fundi, na duhet të ndryshojmë shfletues të lirë që të pikasin dhe
bllokojnë JavaScript jo trivial dhe jo të lirë në faqe web.  Programi <a
href="/software/librejs/">LibreJS</a> pikas JavaScript jo të lirë, jo
trivial në faqe që vizitoni dhe e bllokon.  LibreJS-i përfshihet në IceCat
dhe mund të kihet si shtesë për Firefox.</p>

<p>Përdoruesit e shfletuesve kanë gjithashtu nevojë për një mjet të
përshtatshëm për të specifikuar kod JavaScript për t’u përdorur <em>në
vend</em> të JavaScript-it në një faqe të dhënë.  (Kodi i dhënë mund të jetë
zëvendësim tërësor, ose një version i ndryshuar i programit të lirë
JavaScript në atë faqe.)  Greasemonkey është afër të qenit i aftë për ta
bërë këtë, por jo dhe aq, ngaqë nuk garanton të ndryshojë kodin JavaScript
në një faqe, përpara se programi fillon të ekzekutohet.  Përdorimi i një
ndërmjetësi vendor bën punë, por është shumë i papërshtatshëm tani për të
qenë një zgjidhje reale.  Na duhet të ndërtojmë një zgjidhje që është e
qëndrueshme dhe me leverdi, si dhe sajte për të ndarë me të tjerët
ndryshimet.  Projekti GNU do të donte të rekomandonte sajte që u
përkushtohen vetëm ndryshimeve të lira.</p>

<p>Këto veçori do t’i bëjnë të mundur një programi JavaScript të përfshirë në
një faqe web të jetë i lirë në një kuptim real dhe praktik.  JavaScript-i
s’do të jetë më një pengesë e veçantë drejt lirisë tonë - jo më tepër se sa
janë C-ja dhe Java.  Do të jemi në gjendje të hedhim poshtë dhe madje të
zëvendësojmë programe të lirë jo trivialë JavaScript, ashtu siç hedhim
poshtë dhe zëvendësojmë paketa jo të lira që ofrohem për instalim në rrugën
e zakonshme.  Mandej mund të fillojë fushata jonë që sajte të çlirojnë
JavaScript-in e tyre.</p>

<p>Ndërkohë, ka një rast kur është e pranueshme të xhirohet një program
JavaScript jo i lirë: për të dërguar një ankesë te operatorët e sajtit për
t’u thënë se duhet të bëjnë të lirë ose ta heqin fare kodin JavaScript.  Ju
lutemi, mos ngurroni ta aktivizoni përkohësisht JavaScript-in për të bërë
këtë - por mos harroni ta çaktivizoni më pas.</p>

<!-- any links that used to point to the appendices should point to
     free-your-javascript.html instead.  -->
<div class="announcement">
<hr class="no-display" />
<p>Webmasters: ka <a href="/software/librejs/free-your-javascript.html">disa
rrugë</a> për të treguar licencën e programeve JavaScript në një sajt.</p>
<hr class="no-display" />
</div>

<p><strong>Falënderime:</strong> Falënderoj <a
href="/people/people.html#mattlee">Matt Lee-në</a> dhe <a
href="http://ejohn.org">John Resig-un</a> për ndihmën e tyre në përkufizimin
e kriterit tonë të propozuar, si dhe David Parunakian-in që më tërhoqi
vëmendjen te problemi.</p>
</div>

<div class="translators-notes">

<!--TRANSLATORS: Use space (SPC) as msgstr if you don't have notes.-->
 </div>
</div>

<!-- for id="content", starts in the include above -->
<!--#include virtual="/server/footer.sq.html" -->
<div id="footer" role="contentinfo">
<div class="unprintable">

<p>Ju lutemi, pyetjet dhe kërkesat e përgjithshme rreth FSF-së &amp; GNU-së
dërgojini te <a href="mailto:gnu@gnu.org">&lt;gnu@gnu.org&gt;</a>.  Ka
gjithashtu <a href="/contact/">mënyra të tjera për t’u lidhur me</a>
FSF-në.  Njoftimet për lidhje të dëmtuara dhe ndreqje apo këshilla të tjera
mund të dërgohen te <a
href="mailto:webmasters@gnu.org">&lt;webmasters@gnu.org&gt;</a>.</p>

<p>
<!-- TRANSLATORS: Ignore the original text in this paragraph,
        replace it with the translation of these two:

        We work hard and do our best to provide accurate, good quality
        translations.  However, we are not exempt from imperfection.
        Please send your comments and general suggestions in this regard
        to <a href="mailto:web-translators@gnu.org">

        &lt;web-translators@gnu.org&gt;</a>.</p>

        <p>For information on coordinating and contributing translations of
        our web pages, see <a
        href="/server/standards/README.translations.html">Translations
        README</a>. -->
Përpiqemi fort dhe bëjmë sa mundemi për të ofruar përkthime me cilësi të
mirë dhe të përpikta.  Megjithatë, nuk jemi të përjashtuar nga
papërsosmëritë. Ju lutemi, komentet dhe këshillat e përgjithshme lidhur me
këtë dërgojini te <a
href="mailto:web-translators@gnu.org">&lt;web-translators@gnu.org&gt;</a>.</p><p>Për
të dhëna mbi bashkërendimin dhe parashtrimin e përkthimeve të faqeve tona
web, shihni <a href="/server/standards/README.translations.html">README për
përkthimet</a>.</p>
</div>

<!-- Regarding copyright, in general, standalone pages (as opposed to
     files generated as part of manuals) on the GNU web server should
     be under CC BY-ND 4.0.  Please do NOT change or remove this
     without talking with the webmasters or licensing team first.
     Please make sure the copyright date is consistent with the
     document.  For web pages, it is ok to list just the latest year the
     document was modified, or published.
     
     If you wish to list earlier years, that is ok too.
     Either "2001, 2002, 2003" or "2001-2003" are ok for specifying
     years, as long as each year in the range is in fact a copyrightable
     year, i.e., a year in which the document was published (including
     being publicly visible on the web or in a revision control system).
     
     There is more detail about copyright years in the GNU Maintainers
     Information document, www.gnu.org/prep/maintain. -->
<p>Të drejta kopjimi &copy; 2009-2013, 2016-2019, 2021 Richard Stallman</p>

<p>Kjo faqe mund të përdoret sipas një licence <a rel="license"
href="http://creativecommons.org/licenses/by-nd/4.0/">Creative Commons
Attribution-NoDerivatives 4.0 International License</a>.</p>

<!--#include virtual="/server/bottom-notes.sq.html" -->
<div class="translators-credits">

<!--TRANSLATORS: Use space (SPC) as msgstr if you don't want credits.-->
 </div>

<p class="unprintable"><!-- timestamp start -->
U përditësua më:

$Date: 2021/12/01 23:30:29 $

<!-- timestamp end -->
</p>
</div>
</div>
<!-- for class="inner", starts in the banner include -->
</body>
</html>