Moviento 0deps: લોકલ ડિપેન્ડન્સીઝ અને સુરક્ષા

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

આ ઇકોસિસ્ટમ ડેવલપમેન્ટની ગતિ વધારે છે. તે સપ્લાય ચેઇન (supply chain) ના મોટા જોખમો પણ ઊભા કરે છે.

0deps મૂવમેન્ટ એક સરળ પ્રશ્ન પૂછે છે: જો તમારું એપ્લિકેશન ફક્ત એ જ કોડ ચલાવે જે તમે ખરેખર નિયંત્રિત કરો છો, તો શું થાય?

દરેક ડિપેન્ડન્સી એક નવું એટેક સરફેસ (attack surface) ઉમેરે છે. એક ડિપેન્ડન્સી:

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

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

આ અભિગમ નીચે મુજબના ફાયદા આપે છે:

  • રિપ્રોડ્યુસિબલ બિલ્ડ્સ (Reproducible builds).
  • બાહ્ય પેકેજ રજિસ્ટ્રીઝ પર ઓછી નિર્ભરતા.
  • કેન્દ્રીય સુરક્ષા ઓડિટ.
  • અનુમાનિત પરિણામો.

ધ્યેય કોડને સ્ટેટિક બનાવવાનો નથી. બગ્સને સુધારવા અને સુરક્ષિત રહેવા માટે ઇમ્પ્લીમેન્ટેશન અને અલ્ગોરિધમ્સ વિકસિત થવા જોઈએ. ધ્યેય પબ્લિક કોન્ટ્રાક્ટને સ્થિર રાખવાનો છે.

દરેક લાઇબ્રેરી એક ચોક્કસ ઇન્ટરફેસ પ્રદાન કરે છે. ઉદાહરણ તરીકે:

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

આ ફંક્શન્સ એક કોન્ટ્રાક્ટ બનાવે છે. જો તમે અન્ડરલાઇ