Farorna med tredjeparts kodberoende

Det finns några riktigt bra saker med hur programvaran fungerar på Internet. Till att börja med finns det ett enormt inofficiellt nätverk av miljoner människor som bidrar till ett enormt arkiv av kodfragment som hjälper till att driva många fler miljoner applikationer.

Varje gång du ser en liten länk längst ner på en webbsida som säger "Powered by So-And-So", bevittnar du denna samarbetseffekt i aktion.

Och naturligtvis den främsta anledningen till att människor gillar denna delning och samarbete från tredje part är att det kan spara många timmar i utvecklingstid, eftersom du inte uppfinner något som redan finns. Men även med dessa stora fördelar med tredjeparts koddelningssystemet finns det många anledningar till att du kanske vill undvika att använda dessa kodfragment, som vi ska se ...

1. Potentiella säkerhetsrisker

Eftersom nästan all kod som driver någonting på webben är öppen källkod är det en rättvis satsning att om det finns någon skadlig nyttolast i en given applikation, kommer den snabbt att upptäckas av utvecklargruppen och snabbt korrigeras.

Men många av dessa kodfragment laddas ner hundratals eller till och med tusentals gånger per dag, och inte alla administrativa team gör ett bra jobb med att upprätthålla ett säkert koddelningssystem.

Ju större och mer komplex en applikation är, desto lättare är det att infektera det genom att lägga till några kodrader på någon obskur plats. Nästan ingen tar sig tid att granska varje kodrad i en applikation eftersom de i allmänhet antar att koden kan lita på.

En mycket skicklig programmerare kan vanligtvis göra ett bra jobb med att fördunkla kodens skadliga karaktär, och bara en annan mycket skicklig programmerare kommer att ta reda på vad syftet är ... om det skadliga kodfragmentet upptäcks.

2. Du äger inte den

Detta är faktiskt en kombination av problem. Den första är att du kan bli föremål för olika licensvillkor. När du har flera kodfragment som används på en enda webbsida eller applikation kan du faktiskt vara föremål för flera olika licensvillkor och vissa av dessa kan faktiskt vara i konflikt med varandra.

Naturligtvis stör inte någon att läsa dessa tråkiga listor med villkor, men det kan potentiellt vara ett misstag. I synnerhet skulle det vara ett misstag om något villkor i licensavtalet orsakade att du bryter mot någon lag i ditt hemland eller i det land där servern är belägen.

Det andra problemet är att om du inte äger kod har du ingen kontroll över den och du kanske inte nödvändigtvis förstår allt den gör eller hur den fungerar. Det innebär att om någon gör någon ändring av koden, kan du hålla fast vid den ändringen, särskilt om du troget installerar uppdateringar, korrigeringar, uppgraderingar och nya versioner så snart de släpps som stabila eller om du litar helt på innehållsleverans nätverk för dina tredjepartslösningar.

3. Du får ofta mycket mer än du behöver

Tredjepartskod fungerar vanligtvis för att göra det jobb du vill, men ibland innehåller det alla typer av extrafunktioner som du inte behöver och som förmodligen aldrig kommer att använda. I vissa fall kan du inte ta bort dessa extrafunktioner enkelt eller ens. Du kanske också måste kompromissa. Funktionen kan göra något mycket nära det du tänker, men inte exakt vad du tänker. Du handlar awesomeness för att ha mindre arbete att göra, och det är inte alltid en bra handel.

4. Flera nivåer av tredjepartsberoende kan leda till verkliga problem

Många öppna källkodsprojekt använder samma kod från tredje part på olika sätt för att producera sin programvara. För det mesta är det inte en dålig sak, men det kan leda till problem. Idag installerar många utvecklare inte ens fragmenten som de använder, utan drar dem vid körtid från innehållsleveransnät på begäran. Faran med detta illustrerades spektakulärt av Left-Pad Incidenten 2016.

Varje kedja är bara lika stark som dess svagaste länk. Denna kedja av beroenden betyder att om någon länk någonstans längs kedjan bryts eller komprometteras riskerar hela kedjan att fungera. I vissa situationer kan det vara ganska dyrt. Ingen skulle ha misstänkt kraften i de 11 kodraderna som finns i den godartade lilla funktionen som kallas Left-Pad, men när den specifika kedjelänken misslyckades stoppade det många stora webbplatser som skrikade. Huvuddelen av det var att de flesta som använde Left-Pad hade ingen aning om att de använde det, vad det gjorde eller hur man löser problemet. Som anges i punkt 2, kanske du inte nödvändigtvis förstår det om du inte äger det.

Left-Pad var en mycket enkel funktion som bara lägger till några få mellanslag på vänster sida av en linje för att se till att linjen har rätt längd. Nu är problemet att alla behöriga programmerare lätt kan kopiera den funktionen. Det finns absolut inget behov av att någon applikation beror på denna tredje parts funktion, och ändå använde tusentals webbplatser mjukvara som inkluderade den, inklusive Netflix, Facebook och Reddit. Det var bara en lycka att det i detta fall var en mycket enkel funktion som bröt kedjan, och inte någon riktigt komplicerad funktion som hade sin egen beroendekedja.

I första hand är det om du kan bygga det själv, borde du förmodligen!

I slutändan beslutet om att använda tredjeparts kodblock i ditt projekt beror på en serie komplicerade beslut som aldrig bör tas lätt. De faktorer du måste tänka på är säkerhet, laglighet, kostnad, tid och stabilitet.

För att göra beslutsprocessen enklare, kommer följande testvillkor förmodligen att hjälpa.

OM någon av dessa faktorer är sanna:

  • funktionen du vill ha är enkel
  • du (eller ditt team) har förmågan att skapa funktionen
  • det finns gott om tid att skapa funktionen
  • din ansökan behöver bra säkerhet
  • du har oro för potentiella juridiska problem i samband med licensiering från tredje part
  • Det är viktigt att din ansökan aldrig misslyckas

DÅ borde du bygga det själv,

ELSE kan det vara mer effektivt att använda tredjepartsfunktioner, förutsatt att du är medveten om de potentiella problemen och att du har en strategi för vad du kommer att göra om dessa problem uppstår.

header image med tillstånd av Stephanie Tucker

Bogdan Rancea

Bogdan är en av grundarna i Inspired Mag och har samlat nästan 6 års erfarenhet under denna period. På fritiden gillar han att studera klassisk musik och utforska bildkonst. Han är ganska besatt av fixies också. Han äger redan 5.