0deps ఉద్యమం: లోకల్ డిపెండెన్సీలు మరియు ఇమ్యూటబుల్ కాంట్రాక్టులు

సాఫ్ట్‌వేర్ డెవలపర్లు తరచుగా వందలాది బాహ్య లైబ్రరీలను ఇన్‌స్టాల్ చేస్తారు. ఆధునిక ఫ్రేమ్‌వర్క్‌లు వేలాది ట్రాన్సిటివ్ డిపెండెన్సీలపై (transitive dependencies) ఆధారపడతాయి. అంటే మీ యాప్ మీకు తెలియని వ్యక్తుల కోడ్‌ను రన్ చేస్తోంది అని అర్థం.

ఈ వేగం ఒక ఖర్చుతో కూడుకున్నది. మీరు సాఫ్ట్‌వేర్ సప్లై చైన్ రిస్క్‌లను (software supply chain risks) ఎదుర్కోవాల్సి ఉంటుంది.

ప్రతి డిపెండెన్సీ మీ అటాక్ సర్ఫేస్‌ను (attack surface) పెంచుతుంది. డిపెండెన్సీలు ఇవి చేయవచ్చు:

  • భద్రతా లోపాలను (security flaws) పరిచయం చేయవచ్చు.
  • సప్లై చైన్ దాడులకు లక్ష్యంగా మారవచ్చు.
  • రచయితల ద్వారా వదిలివేయబడవచ్చు (abandoned).
  • వాటి పబ్లిక్ APIలను మార్చవచ్చు.
  • బ్యాక్‌వర్డ్ కంపాటబిలిటీని (backward compatibility) దెబ్బతీయవచ్చు.

0deps ఉద్యమం దీనిని మారుస్తుంది. ఇది ఒక ప్రశ్న వేస్తుంది: మీ యాప్ కేవలం మీరు నియంత్రించే కోడ్‌పై మాత్రమే ఆధారపడితే ఎలా ఉంటుంది?

0deps మోడల్‌లో, మీరు అవసరమైన అన్ని కోడ్‌ను నేరుగా మీ ప్రాజెక్ట్ రిపోజిటరీలోకి తీసుకువస్తారు. ఇన్‌స్టాలేషన్ లేదా బిల్డ్ సమయంలో మీరు ప్యాకేజీలను డౌన్‌లోడ్ చేయరు. మీరు రిపోను క్లోన్ చేసినప్పుడు మీకు కావలసినవన్నీ అందులో ఉంటాయి.

ఇది అనేక ప్రయోజనాలను అందిస్తుంది:

  • రిప్రొడ్యూసిబుల్ బిల్డ్స్ (Reproducible builds).
  • బాహ్య ప్యాకేజీ రిజిస్ట్రీలపై ఆధారపడాల్సిన అవసరం లేదు.
  • కేంద్రీకృత భద్రతా ఆడిట్‌లు (Centralized security audits).
  • అధిక అంచనా వేయగలిగే సామర్థ్యం (Higher predictability).
  • తక్కువ సప్లై చైన్ రిస్క్.

కోడ్ మారకుండా ఆపడం దీని లక్ష్యం కాదు. అల్గారిథమ్‌లు మరియు భద్రతా పరిష్కారాలు (security fixes) పరిణామం చెందాలి. మారకుండా ఉండేది కేవలం పబ్లిక్ కాంట్రాక్ట్ (public contract) మాత్రమే.

మీరు ప్రతి లైబ్రరీ కోసం ఒక స్థిరమైన ఇంటర్‌ఫేస్‌ను రూపొందిస్తారు. ఉదాహరణకు:

  • authenticate()
  • createSession()
  • verifyPasskey()

ఈ ఫంక్షన్‌ల వెనుక ఉన్న ఇంప్లిమెంటేషన్ పూర్తిగా మారవచ్చు. మీరు లాజిక్‌ను తిరిగి వ్రాయవచ్చు లేదా లైబ్రరీని మార్చవచ్చు. మీ యాప్‌లోని మిగిలిన భాగాలకు ఆ తేడా తెలియదు.

ఇది అప్‌డేట్‌ల సమయంలో ఎదురయ్యే అతిపెద్ద సమస్యను పరిష్కరిస్తుంది. సాధారణంగా, ఒక బగ్‌ను సరిచేస్తూనే యాప్‌ను పాడుచేస్తామేమోనని మీరు ఆందోళన చెందుతారు. 0depsతో, పబ్లిక్ API ఒకేలా ఉంటుంది. కోడ్ మార్పులు లేకుండానే మీ అప్లికేషన్ పని చేస్తూనే ఉంటుంది.

మీరు బాహ్య సాధనాలను (external tools) అంతర్గత అడాప్టర్ల (internal adapters) వెనుక వేరు చేస్తారు. రేపు ఏదైనా లైబ్రరీ పని చేయకపోయినా, మీరు కేవలం అడాప్టర్‌ను మాత్రమే అప్‌డేట్ చేస్తే సరిపోతుంది. మీ సిస్టమ్‌లోని మిగిలిన భాగం సురక్షితంగా ఉంటుంది.

0deps ఓపెన్ సోర్స్‌ను వ్యతిరేకించదు. ఇది ఓపెన్ సోర్స్‌ను మరింత సురక్షితంగా ఉపయోగించాలని కోరుకుంటుంది. డైనమిక్ ఇన్‌స్టాల్స్‌కు బదులుగా, మీరు లైబ్రరీలను ఇంటిగ్రేటెడ్ కాంపోనెంట్‌లుగా పరిగణిస్తారు. మీరు వాటిని ఆడిట్ చేస్తారు. వాటికి వెర్షన్లు ఇస్తారు. వాటిని ఎన్‌క్యాప్సులేట్ (encapsulate) చేస్తారు.

సాఫ్ట్‌వేర్ దశాబ్దాల పాటు ఉంటుంది. లైబ్రరీలు మరియు ఫ్రేమ్‌వర్క్‌లు అంతరించిపోవచ్చు. 0deps మీ అప్లికేషన్ ఆ మార్పులన్నింటిలోనూ నిరంతరంగా నడుస్తూ ఉండేలా చూస్తుంది.

Source: https://dev.to/fullagenticstack/movimiento-0deps-dependencias-locales-contratos-inmutables-y-seguridad-por-diseno-1a6o

Optional learning community: https://t.me/GyaanSetuAi