Ky është përkthim i një faqeje anglisht në origjinal.

Kurthi JavaScript

Ka dy lloje të keqeje morale që mund të bëjë një faqe web. Kjo faqe përshkruan të keqen e dërgimit në kompjuterin tuaj të programeve jo të lirë. Ka gjithashtu një të keqe tjetër, që ne e quajmë SaaSS, “Shërbim si Zëvendësim Software-i“; kur faqja ju fton të dërgoni të dhënat tuaja, që të mund të bëjë veprime kompjuterike me to te shërbyesi—veprime kompjuterike të cilat janë të padrejta, ngaqë s’keni kontroll mbi se ç’veprime po bëhen.

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

Ideja se cilido program jo i lirë keqtrajton përdoruesit e tij ë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.

Mjaft përdorues janë në dijeni se ky problem aplikohet te shtojcat që shfletuesit ofrojnë për instalim, 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 jua tregojnë - programe të cilët i përmbajnë faqe web, ose te të cilët këto të fundit lidhen. Këto programe në shumicën e rasteve janë të shkruar në JavaScript, por përdoren edhe gjuhë të tjera.

JavaScript-i (i quajtur zyrtarisht ECMAScript, por 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 software i njëmendtë dhe të hidhej tej ajo punë.

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 prej 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 dot se ç’do të thotë.

Pjesë e kuptimit të software-it të lirë ë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ërveç të qenit jo të lirë, mjaft prej këtyre programeve janë malware, ngaqë përgjojnë përdoruesin. Edhe më shpifur, disa sajte përdorin shërbime të cilat regjistrojnë krejt veprimet e përdoruesit teksa sheh një faqe. 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.

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ë, shumica e përdoruesve nuk e dinë këtë problem, madje edhe në bashkësinë e software-it të lirë; heshtja e shfletuesve priret ta fshehë.

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 software 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 erdhi - 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.

Problemi i kurthit JavaScript del kur programi JavaScript vjen tok me një faqe që vizitojnë përdoruesit. 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.

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.

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ë.

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 sjell afër me hasjen e problemit.

Teorikisht është e mundshme të programohet në HTML dhe CSS, por në praktikë kjo aftësi është e kufizuar dhe jo e leverdishme; thjesht të arrihet të bëhet 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.

Ë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ë cilëve është i botuar dhe të cilët 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.

Ngarkimi dhe xhirimi heshtazi i programeve jo të lira është njëri mes disa problemeve të 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. Termi 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.

Si mund të trajtojmë, nga ana praktike, problemin e programeve JavaScript jo trivialë, jo të lirë, në sajte? Hapi i parë është të shmanget xhirimi i tyre.

Ç’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ë.

Kriteri ynë i tanishëm është të konsiderohet jo trivial një program JavaScript, nëse plotësohet cilido prej këtyre kushteve:

  • atij i referohen si një programth i jashtëm (nga një faqe tjetër).
  • deklaron një varg më të gjatë se 50 elementë.
  • përkufizon një njësi të emërtuar (funksion ose metodë) që kryen thirrje ndaj çfarëdo gjëje tjetër nga një primitiv.
  • përkufizon një njësi të emërtuar me më shumë se tre konstrukte kushtore dhe konstrukt qerthull.
  • kod jashtë përkufizimesh të emërtuara s’thërret primitivë dhe funksione të përkufizuar më sipër te faqja.
  • kod jashtë përkufizimesh të emërtuara përmban më shumë se tre konstrukte kushtore dhe konstrukt qerthull, gjithsej.
  • kryen thirrje ndaj eval.
  • kryen thirrje Ajax.
  • përdor shkrim kllapash për përdorim vetish objektesh dinamikë, në trajtën objekt[veti].
  • ndryshon DOM-in.
  • 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 (Obj.write, Obj.createElement dhe të tjerë).

Si e marrim vesh nëse kodi JavaScript është apo jo i lirë? Në një artikull më vete, 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.

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 LibreJS 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ë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 në vend 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.

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ë ofrohen për instalim në rrugën e zakonshme. Mandej mund të fillojë fushata jonë që sajte të çlirojnë JavaScript-in e tyre.

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 ta 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ështu - por mos harroni ta çaktivizoni më pas.

Falënderime: Falënderoj Matt Lee-në dhe John Resig-un 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 për problemin.