Mediul de execuție Node.js devine din ce în ce mai popular în rândul echipelor care trebuie să construiască aplicații web dinamice, de tip server-side. Întreținut în prezent de OpenJS Foundation, Node.js are aproape 2.500 de colaboratori și este proiectul open-source cu cea mai rapidă creștere, cu peste 1 miliard de descărcări până în prezent.
De la lansarea sa în 2009, multe organizații importante folosesc acum Node.js pentru a construi aplicații de întreprindere și pentru a îmbunătăți performanța aplicațiilor. Una dintre acestea este PayPal, care a redus timpii de răspuns pentru pagina sa cu aproximativ 35% atunci când a implementat Node.js. Printre alți utilizatori ai Node.js se numără IBM, NASA, Uber, Netflix și chiar Microsoft.
Deși a devenit limbajul preferat pentru dezvoltarea de servere web, utilizatorii trebuie să fie conștienți de faptul că există considerente legate de licențierea și securitatea Node.js.
Ce este licența Node.js?
Node.js folosește o licență permisivă MIT pentru biblioteca principală. Licența MIT se aplică tuturor părților din modulul Node.js care nu sunt întreținute din exterior.
Licențele adiționale care se aplică bibliotecilor terțe rămase includ licența Zero Clause BSD și licența ISC, fișierul complet al licenței fiind disponibil aici.
Aceste licențe permit oricui să folosească, să modifice și să redistribuie software-ul în orice moment, fiind necesară doar atribuirea atribuției, despăgubindu-i în același timp pe cei care contribuie. În comparație cu GNU GPL, licența MIT nu cere dezvoltatorilor să pună la dispoziție propriul cod sursă atunci când își redistribuie software-ul.
Care sunt riscurile legate de licențierea și securitatea Node.js?
Node.js folosește un manager de pachete (npm) care are peste 1.000.000 de pachete disponibile. Comunitatea de dezvoltatori pentru Node.js este una dintre cele mai productive, iar până în 2019, platforma npm a crescut cu 250%. Una dintre provocările pentru dezvoltatorii cu securitatea Node.js este de a se asigura că orice pachet și toate dependențele conexe utilizate în producție primesc actualizări și patch-uri regulate.
Dezvoltatorii trebuie să auditeze frecvent toate dependențele pachetelor pentru a găsi orice vulnerabilități nou descoperite. Atunci când construiesc noi caracteristici, dezvoltatorii trebuie să se asigure că folosesc pachete sigure și că remediază orice vulnerabilități cunoscute înainte de a-și lansa codul.
Cât de mult din licențierea Node.js este open source?
Întreprinderile iubesc modelul de licență Node.js, deoarece le permite să bifurce baza de cod, să își construiască propriile fragmente pe partea de server și să își actualizeze pachetele legate doar atunci când este necesar. Licențele permisive oferă echipelor opțiunea de a-și face baza de cod proprietară în viitor, spre deosebire de principiul copyleft al GNU GPL.
În ceea ce privește licențele, dezvoltatorii trebuie să știe ce licențe software folosesc pachetele lor, deoarece există o mulțime de pachete cu licență GPL disponibile pe npm. În unele cazuri, dezvoltatorii vor oferi același pachet sub o licență comercială, ceea ce ar împiedica declanșarea clauzei de reciprocitate din GPLv3.
Care sunt beneficiile modelului de licență Node.js?
Dezbaterile privind licențele permisive versus copyleft vor continua, dar Node.js pare să dovedească faptul că interesele comerciale nu trebuie să împiedice colaborarea. Pentru echipele care lucrează în medii foarte secrete (cum ar fi NASA), Node.js și ecosistemul npm s-au dovedit a fi o resursă valoroasă. Cu un model care permite echipelor individuale să decidă dacă tot codul lor sursă trebuie să fie disponibil sau nu, Node.js oferă libertate maximă utilizatorilor.
Beneficiile de dezvoltare ale Node.js includ, de asemenea:
- Oferă o soluție de programare JavaScript pe partea serverului
- Rămâne extrem de scalabilă atât pe orizontală, cât și pe verticală
- Dă dezvoltatorilor un singur limbaj de programare pentru aplicațiile front-end și back-end
- Crește performanța aplicațiilor cu operații I/O care nu blochează
- Sprijin din partea liderilor din industrie, cu reprezentanți în cadrul Node.js Foundation
Puteți utiliza pachetele licențiate Node.js în software comercial?
După ce o echipă descarcă și modifică Node.js, aceasta are libertatea de a-și proteja drepturile de autor asupra versiunii sale de software în orice moment și de a aplica o licență mai restrictivă asupra propriei lucrări.
Majoritatea proiectelor Node.js rămân open source și întreprinderile îl folosesc pentru cadre, biblioteci și instrumente. Pentru toate echipele care utilizează pachete provenite de la npm, trebuie să existe zero licențe reciproce conținute în oricare dintre module (cu excepția cazului în care este intenționat). Fiecare pachet și modul legat trebuie să se încadreze în licența MIT sau în oricare dintre licențele de tip BSD, inclusiv în licența ISC.
Cum se utilizează o licență Node.js?
Care componentă construită pe biblioteca Node.js poate utiliza oricare dintre licențele software disponibile la distribuție. Contributorii preferă să utilizeze licențe permisive, deoarece oferă utilizatorilor ulteriori libertatea de a lua propriile decizii cu privire la software-ul lor în viitor. Odată ce echipa începe să se bazeze pe alte pachete, va trebui să se asigure că munca lor respectă orice alte restricții implicate în acele module.
În npm, există o comandă specifică pentru a adăuga textul licenței la toate fișierele proiectului. Dezvoltatorii pot specifica numele licenței și numele autorului, o listă completă a licențelor compatibile fiind disponibilă aici.
Cum abordează Node.js riscurile de securitate din pachete?
De fiecare dată când un dezvoltator sau o echipă de securitate descoperă o nouă vulnerabilitate, Node.js va lansa o versiune cu o actualizare de securitate. În unele cazuri, va fi necesar un patch manual. Dezvoltatorii trebuie să revizuiască frecvent vulnerabilitățile pachetului lor folosind comanda audit, care va oferi o soluție recomandată pentru deficiența de securitate.
Întrețineți dependențele bazei de cod cu Snyk
Care proiect care rulează în producție ar trebui să fie supus auditării regulate a vulnerabilităților și a licențelor pentru toate dependențele.
Snyk ajută echipele să scaneze toate dependențele și să se asigure că pot gestiona conformitatea licențelor pe tot parcursul proiectului. Pentru echipele de dezvoltare Node.js, faptul de a avea o supraveghere clară a tuturor pachetelor și de a asigura conformitatea cu licențele în fiecare etapă a proiectului poate ajuta la prevenirea problemelor majore care se strecoară în baza de cod.
Pentru a vedea cum Snyk poate ajuta echipa dvs. să gestioneze conformitatea licențelor – programați o demonstrație astăzi.