A Node.js futtatási környezet egyre népszerűbb a dinamikus, kiszolgálóoldali webes alkalmazásokat építő csapatok körében. A jelenleg az OpenJS Foundation által karbantartott Node.js közel 2500 közreműködővel rendelkezik, és az eddigi több mint 1 milliárd letöltéssel a leggyorsabban növekvő nyílt forráskódú projekt.
A 2009-es megjelenése óta számos nagy szervezet használja a Node.js-t vállalati alkalmazások építésére és az alkalmazások teljesítményének javítására. Ezek egyike a PayPal, amely a Node.js telepítésével mintegy 35%-kal csökkentette oldalának válaszidejét. A Node.js további felhasználói közé tartozik az IBM, a NASA, az Uber, a Netflix és még a Microsoft is.
Noha egyre inkább a webszerver-fejlesztés preferált nyelvévé válik, a felhasználóknak tisztában kell lenniük a Node.js licencelési és biztonsági szempontjaival.
Milyen a Node.js licencelése?
A Node.js egy megengedő MIT licencet használ a fő könyvtárra. Az MIT licenc a Node.js modul minden olyan részére vonatkozik, amely nem külső karbantartású.
A többi, harmadik féltől származó könyvtárra vonatkozó további licencek közé tartozik a Zero Clause BSD licenc és az ISC licenc, a teljes licencfájl elérhető itt.
Ezek a licencek lehetővé teszik, hogy bárki bármikor felhasználhassa, módosíthassa és továbbterjeszthesse a szoftvert, és csak az attribúciót kell megadni, miközben a közreműködőket kártalanítja. A GNU GPL-hez képest az MIT licenc nem követeli meg a fejlesztőktől, hogy saját forráskódjukat tegyék elérhetővé a szoftverük újraelosztásakor.
Melyek a Node.js licencelési és biztonsági kockázatai?
A Node.js egy csomagkezelőt (npm) használ, amely több mint 1 000 000 csomaggal rendelkezik. A Node.js fejlesztői közössége az egyik legtermékenyebb, és 2019-re az npm platform 250%-kal nőtt. A fejlesztők számára a Node.js biztonságával kapcsolatos egyik kihívás annak biztosítása, hogy a termelésben használt minden csomag és az összes kapcsolódó függőség rendszeres frissítéseket és javításokat kapjon.
A fejlesztőknek gyakran kell auditálniuk az összes csomagfüggőséget, hogy megtalálják az újonnan felfedezett sebezhetőségeket. Új funkciók készítésekor a fejlesztőknek biztosítaniuk kell, hogy biztonságos csomagokat használjanak, és a kódjuk kiadása előtt be kell foltozniuk minden ismert sebezhetőséget.
Mennyire nyílt forráskódú a Node.js licencelése?
A vállalatok szeretik a Node.js licencmodelljét, mivel lehetővé teszi számukra, hogy elágazással használják a kódbázist, saját szerveroldali részleteket építsenek, és csak szükség esetén frissítsék a kapcsolt csomagokat. A megengedő licencek lehetőséget adnak a csapatoknak arra, hogy a jövőben a GNU GPL copyleft elvével szemben saját tulajdonúvá tegyék a kódbázisukat.
A licencelés szempontjából a fejlesztőknek tudniuk kell, hogy a csomagjaik milyen szoftverlicenceket használnak, mivel az npm-en rengeteg GPL-köteles csomag érhető el. Bizonyos esetekben a fejlesztők ugyanazt a csomagot kereskedelmi licenc alatt nyújtják, ami megakadályozza a GPLv3-ban foglalt kölcsönösségi záradék kiváltását.
Milyen előnyei vannak a Node.js licencmodelljének?
A megengedő kontra copyleft licencelés viták folytatódni fognak, de a Node.js bebizonyítani látszik, hogy a kereskedelmi érdekeknek nem kell akadályozniuk az együttműködést. A szigorúan titkos környezetben dolgozó csapatok számára (mint például a NASA) a Node.js és az npm ökoszisztéma értékes erőforrásnak bizonyult. A Node.js egy olyan modellel, amely lehetővé teszi az egyes csapatok számára, hogy eldöntsék, hogy az összes forráskódjuk elérhető legyen-e vagy sem, maximális szabadságot biztosít a felhasználóknak.
A Node.js fejlesztési előnyei közé tartozik még:
- Kiszolgálóoldali JavaScript programozási megoldást kínál
- Magas fokú skálázhatóságot biztosít horizontális és vertikális irányban egyaránt
- Egyetlen programozási nyelvet biztosít a fejlesztőknek a front- és back-end alkalmazásokhoz
- Növeli az alkalmazások teljesítményét a nem blokkoló I/O műveletekkel
- Az iparág vezetőinek támogatása a Node.js Foundation
A Node.js licencelt csomagok felhasználhatók kereskedelmi szoftverekben?
Mihelyt egy csapat letölti és módosítja a Node.js-t, bármikor szabadon szerzői jogot szerezhet a szoftver saját verziójára, és szigorúbb licencet alkalmazhat saját munkájára.
A Node.js projektek többsége nyílt forráskódú marad, és a vállalatok keretrendszerekhez, könyvtárakhoz és eszközökhöz használják. Minden olyan csapat esetében, amely npm forrásból származó csomagokat használ, a modulok egyik modulban sem tartalmazhatnak kölcsönös licenceket (hacsak nem szándékosan). Minden összekapcsolt csomagnak és modulnak a MIT licenc vagy bármelyik BSD-stílusú licenc alá kell tartoznia, beleértve az ISC licencet is.
Hogyan használható a Node.js licenc?
A Node.js könyvtárra épülő bármely komponens a terjesztéskor bármelyik elérhető szoftverlicencet használhatja. A hozzájárulók előnyben részesítik a megengedő licencek használatát, mivel ez biztosítja a későbbi felhasználók számára a szabadságot, hogy a jövőben maguk dönthessenek a szoftverükről. Amint a csapat elkezd más csomagokra támaszkodni, biztosítaniuk kell, hogy munkájuk megfeleljen az ezekben a modulokban foglalt egyéb korlátozásoknak.
A npm-ben van egy külön parancs a licencszöveg hozzáadására minden projektfájlhoz. A fejlesztők megadhatják a licenc nevét és a szerző nevét, a kompatibilis licencek teljes listája itt érhető el.
Hogyan kezeli a Node.js a csomagok biztonsági kockázatait?
Amikor egy fejlesztő vagy egy biztonsági csapat új sebezhetőséget fedez fel, a Node.js kiad egy biztonsági frissítést tartalmazó verziót. Bizonyos esetekben kézi javításra lesz szükség. A fejlesztőknek gyakran át kell nézniük a csomagjaik sebezhetőségét az audit parancs segítségével, amely megadja a biztonsági hiba ajánlott javítását.
Karbantartja a kódbázis függőségeit a Snykkel
A termelésben futó minden projektet rendszeres sebezhetőségi és licencellenőrzésnek kell alávetni az összes függőségre vonatkozóan.
A Snyk segít a csapatoknak abban, hogy az összes függőséget átvizsgálják, és biztosítsák, hogy az egész projekt során kezelni tudják a licenceknek való megfelelést. A Node.js fejlesztőcsapatok számára az összes csomag egyértelmű felügyelete és a licenceknek való megfelelés biztosítása a projekt minden szakaszában segíthet megelőzni a kódbázisba bekúszó nagyobb problémák kialakulását.
Hogy megtudja, hogyan segíthet a Snyk a csapatának a licenceknek való megfelelés kezelésében – ütemezzen be egy bemutatót még ma.