Movimiento 0deps: સ્થાનિક નિર્ભરતાઓ અને અપરિવર્તનીય કરારો

સોફ્ટવેર ડેવલપર્સ ઘણીવાર સેંકડો બાહ્ય લાઇબ્રેરીઓ ઇન્સ્ટોલ કરે છે. આધુનિક ફ્રેમવર્ક હજારો ટ્રાન્ઝિટિવ નિર્ભરતાઓ (transitive dependencies) પર આધારિત હોય છે. આનો અર્થ એ છે કે તમારું એપ એવા અજાણ્યા લોકોના કોડ પર ચાલે છે જેને તમે જાણતા નથી.

આ ઝડત એક કિંમત સાથે આવે છે. તમારે સોફ્ટવેર સપ્લાય ચેઇન જોખમોનો સામનો કરવો પડે છે.

દરેક નિર્ભરતા તમારી એટેક સરફેસ (attack surface) વધારે છે. નિર્ભરતાઓ આ કરી શકે છે:

  • સુરક્ષા ખામીઓ લાવી શકે છે.
  • સપ્લાય ચેઇન હુમલાઓ માટે લક્ષ્ય બની શકે છે.
  • લેખકો દ્વારા છોડી દેવામાં આવી શકે છે.
  • તેમની પબ્લિક API બદલી શકે છે.
  • બેકવર્ડ કમ્પેટીબિલિટી (backward compatibility) તોડી શકે છે.

0deps મૂવમેન્ટ આને બદલે છે. તે પૂછે છે: જો તમારું એપ ફક્ત તમે નિયંત્રિત કરતા કોડ પર જ આધાર રાખે તો?

0deps મોડેલમાં, તમે તમામ જરૂરી કોડ સીધો તમારા પ્રોજેક્ટ રિપોઝિટરીમાં લાવો છો. તમે ઇન્સ્ટોલેશન અથવા બિલ્ડ સમય દરમિયાન પેકેજો ડાઉનલોડ કરતા નથી. જ્યારે તમે રિપો ક્લોન કરો છો ત્યારે તમને જે કંઈ પણ જોઈએ છે તે ત્યાં જ હોય છે.

આનાથી ઘણા ફાયદા થાય છે:

  • રિપ્રોડ્યુસિબલ બિલ્ડ્સ (Reproducible builds).
  • બાહ્ય પેકેજ રજિસ્ટ્રીઓ પર કોઈ નિર્ભરતા નથી.
  • કેન્દ્રીય સુરક્ષા ઓડિટ્સ.
  • વધુ અનુમાનિતતા (predictability).
  • ઓછું સપ્લાય ચેઇન જોખમ.

ધ્યેય કોડને બદલાતો અટકાવવાનો નથી. અલ્ગોરિધમ્સ અને સુરક્ષા સુધારાઓ (security fixes) વિકસિત થવા જ જોઈએ. જે વસ્તુ સમાન રહે છે તે છે પબ્લિક કોન્ટ્રાક્ટ (public contract).

તમે દરેક લાઇબ્રેરી માટે એક સ્થિર ઇન્ટરફેસ ડિઝાઇન કરો છો. ઉદાહરણ તરીકે:

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

આ ફંક્શન્સ પાછળનું અમલીકરણ (implementation) સંપૂર્ણપણે બદલાઈ શકે છે. તમે લોજિક ફરીથી લખી શકો છો અથવા લાઇબ્રેરી બદલી શકો છો. તમારા એપના બાકીના ભાગને ક્યારેય આ તફાવત ખબર પડતી નથી.

આ અપડેટ્સ દરમિયાન સૌથી મોટો માથાનો દુખાવો દૂર કરે છે. સામાન્ય રીતે, તમે એકસાથે બગ (bug) સુધારવા અને તમારી એપને બગડતી અટકાવવા વિશે ચિંતા કરો છો. 0deps સાથે, પબ્લિક API સમાન રહે છે. તમારું એપ્લિકેશન કોડમાં ફેરફાર કર્યા વિના કામ કરવાનું ચાલુ રાખે છે.

તમે આંતરિક એડેપ્ટર્સ (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