Movimiento 0deps: ਸਥਾਨਕ ਨਿਰਭਰਤਾਵਾਂ ਅਤੇ ਅਟੱਲ ਸਮਝੌਤੇ

ਸਾਫਟਵੇਅਰ ਡਿਵੈਲਪਰ ਅਕਸਰ ਸੈਂਕੜੇ ਬਾਹਰੀ ਲਾਇਬ੍ਰੇਰੀਆਂ ਇੰਸਟਾਲ ਕਰਦੇ ਹਨ। ਆਧੁਨਿਕ ਫਰੇਮਵਰਕ ਹਜ਼ਾਰਾਂ ਟ੍ਰਾਂਜ਼ਿਟਿਵ ਨਿਰਭਰਤਾਵਾਂ (transitive dependencies) 'ਤੇ ਨਿਰਭਰ ਕਰਦੇ ਹਨ। ਇਸਦਾ ਮਤਲਬ ਹੈ ਕਿ ਤੁਹਾਡੀ ਐਪ ਅਜਿਹੇ ਅਣਜਾਣ ਲੋਕਾਂ ਦਾ ਕੋਡ ਚਲਾਉਂਦੀ ਹੈ ਜਿਨ੍ਹਾਂ ਨੂੰ ਤੁਸੀਂ ਨਹੀਂ ਜਾਣਦੇ।

ਇਹ ਤੇਜ਼ੀ ਇੱਕ ਕੀਮਤ ਦੇ ਨਾਲ ਆਉਂਦੀ ਹੈ। ਤੁਹਾਨੂੰ ਸਾਫਟਵੇਅਰ ਸਪਲਾਈ ਚੇਨ ਦੇ ਜੋਖਮਾਂ ਦਾ ਸਾਹਮਣਾ ਕਰਨਾ ਪੈਂਦਾ ਹੈ।

ਹਰ ਨਿਰਭਰਤਾ ਤੁਹਾਡੀ ਹਮਲੇ ਦੀ ਸਤ੍ਹਾ (attack surface) ਨੂੰ ਵਧਾਉਂਦੀ ਹੈ। ਨਿਰਭਰਤਾਵਾਂ ਇਹ ਕਰ ਸਕਦੀਆਂ ਹਨ:

  • ਸੁਰੱਖਿਆ ਕਮੀਆਂ ਪੈਦਾ ਕਰਨਾ।
  • ਸਪਲਾਈ ਚੇਨ ਹਮਲਿਆਂ ਲਈ ਨਿਸ਼ਾਨਾ ਬਣਨਾ।
  • ਲੇਖਕਾਂ ਦੁਆਰਾ ਛੱਡ ਦਿੱਤੀਆਂ ਜਾਣਾ।
  • ਆਪਣੀ ਪਬਲਿਕ API ਨੂੰ ਬਦਲਣਾ।
  • ਪਿਛਲੀ ਅਨੁਕੂਲਤਾ (backward compatibility) ਨੂੰ ਤੋੜਨਾ।

0deps ਅੰਦੋਲਨ ਇਸਨੂੰ ਬਦਲਦਾ ਹੈ। ਇਹ ਪੁੱਛਦਾ ਹੈ: ਕੀ ਹੋਵੇਗਾ ਜੇਕਰ ਤੁਹਾਡੀ ਐਪ ਸਿਰਫ਼ ਉਸ ਕੋਡ 'ਤੇ ਨਿਰਭਰ ਕਰੇ ਜਿਸ ਨੂੰ ਤੁਸੀਂ ਕੰਟਰੋਲ ਕਰਦੇ ਹੋ?

0deps ਮਾਡਲ ਵਿੱਚ, ਤੁਸੀਂ ਸਾਰਾ ਲੋੜੀਂਦਾ ਕੋਡ ਸਿੱਧਾ ਆਪਣੇ ਪ੍ਰੋਜੈਕਟ ਰਿਪੋਜ਼ਟਰੀ ਵਿੱਚ ਲਿਆਉਂਦੇ ਹੋ। ਤੁਸੀਂ ਇੰਸਟਾਲੇਸ਼ਨ ਜਾਂ ਬਿਲਡ ਸਮੇਂ ਪੈਕੇਜ ਡਾਊਨਲੋਡ ਨਹੀਂ ਕਰਦੇ। ਜਦੋਂ ਤੁਸੀਂ ਰੈਪੋ (repo) ਨੂੰ ਕਲੋਨ ਕਰਦੇ ਹੋ, ਤਾਂ ਤੁਹਾਨੂੰ ਸਭ ਕੁਝ ਉੱਥੇ ਹੀ ਮਿਲ ਜਾਂਦਾ ਹੈ।

ਇਹ ਕਈ ਫਾਇਦੇ ਪ੍ਰਦਾਨ ਕਰਦਾ ਹੈ:

  • ਰੀਪ੍ਰੋਡਿਊਸਿਬਲ ਬਿਲਡਸ (Reproducible builds)।
  • ਬਾਹਰੀ ਪੈਕੇਜ ਰਜਿਸਟਰੀਆਂ 'ਤੇ ਕੋਈ ਨਿਰਭਰਤਾ ਨਹੀਂ।
  • ਕੇਂਦਰੀਕ੍ਰਿਤ ਸੁਰੱਖਿਆ ਆਡਿਟ।
  • ਵਧੇਰੇ ਅਨੁਮਾਨਯੋਗਤਾ।
  • ਘੱਟ ਸਪਲਾਈ ਚੇਨ ਜੋਖਮ।

ਮਕਸਦ ਕੋਡ ਨੂੰ ਬਦਲਣ ਤੋਂ ਰੋਕਣਾ ਨਹੀਂ ਹੈ। ਐਲਗੋਰਿਦਮ ਅਤੇ ਸੁਰੱਖਿਆ ਫਿਕਸਾਂ ਨੂੰ ਵਿਕਸਿਤ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ। ਜੋ ਚੀਜ਼ ਉਹੀ ਰਹਿੰਦੀ ਹੈ, ਉਹ ਹੈ ਪਬਲਿਕ ਕੰਟਰੈਕਟ (public contract)।

ਤੁਸੀਂ ਹਰੇਕ ਲਾਇਬ੍ਰੇਰੀ ਲਈ ਇੱਕ ਸਥਿਰ ਇੰਟਰਫੇਸ ਡਿਜ਼ਾਈਨ ਕਰਦੇ ਹੋ। ਉਦਾਹਰਨ ਲਈ:

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

ਇਹਨਾਂ ਫੰਕਸ਼ਨਾਂ ਦੇ ਪਿੱਛੇ ਦੀ ਇੰਪਲੀਮੈਂਟੇਸ਼ਨ (implementation) ਪੂਰੀ ਤਰ੍ਹਾਂ ਬਦਲ ਸਕਦੀ ਹੈ। ਤੁਸੀਂ ਲੌਜਿਕ ਨੂੰ ਦੁਬਾਰਾ ਲਿਖ ਸਕਦੇ ਹੋ ਜਾਂ ਲਾਇਬ੍ਰੇਰੀ ਨੂੰ ਬਦਲ ਸਕਦੇ ਹੋ। ਤੁਹਾਡੀ ਐਪ ਦੇ ਬਾਕੀ ਹਿੱਸੇ ਨੂੰ ਇਸ ਫਰਕ ਦਾ ਕਦੇ ਪਤਾ ਨਹੀਂ ਲੱਗਦਾ।

ਇਹ ਅਪਡੇਟਾਂ ਦੌਰਾਨ ਸਭ ਤੋਂ ਵੱਡੀ ਮੁਸ਼ਕਲ ਨੂੰ ਹੱਲ ਕਰਦਾ ਹੈ। ਆਮ ਤੌਰ 'ਤੇ, ਤੁਸੀਂ ਇੱਕ ਬੱਗ ਨੂੰ ਠੀਕ ਕਰਨ ਅਤੇ ਨਾਲ ਹੀ ਆਪਣੀ ਐਪ ਨੂੰ ਖਰਾਬ ਕਰਨ ਬਾਰੇ ਚਿੰਤਤ ਹੁੰਦੇ ਹੋ। 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