Hacker News 의견
  • 가장 인기 있는 YAML 파서의 저자가 갑작스럽게 프로젝트를 포기하고, 이를 사용하지 않음(deprecated) 및 유지보수하지 않음(unmaintained)으로 표시함. 경고나 다른 유지보수자 지정 없이 이루어진 일로, 패키지는 여전히 기능적이지만 4000개 이상의 다른 크레이트에서 사용되고 있어, 감사 및 자동 업데이트 도구에서 유지보수되지 않는 크레이트 사용에 대해 경고할 것임.
  • CDO라는 약어에 혼란을 느낀 사람들을 위해, 이는 'collateralized debt obligation'을 의미함을 추측함. 여러 번 'collateralized'라는 단어가 사용되었기 때문임.
  • 코드가 취약한 경로가 외부 라이브러리에서 실행되거나 접근할 수 없다면, 그것은 안전한 코드 경로가 됨. 라이브러리를 가져오는(vendoring) 것은 코드를 공격하는 도구를 제공하며, 자체 라이브러리에 대한 테스트 커버리지가 충분하다면, 가져온 라이브러리에 대한 코드 커버리지 도구를 실행할 수 있음. 가져온 라이브러리를 수정하는 것은 도전적일 수 있지만, 필요하지 않은 부분을 삭제하는 것은 상대적으로 쉬울 수 있음. 물론, 가져온 라이브러리의 구조에 따라 다름.
  • 전직 양적 분석가이자 현재 경제학자는 저자가 'Collateralized Debt Obligation'이라는 용어를 올바르게 사용한 것을 칭찬함. '기술적 부채'에 대한 기사를 쓰고 싶은데, '부채'라는 비유는 그 개념에 적합하지 않다고 생각함. '고점도 코드'라는 표현이 더 나을 수 있음. 코드를 새로운 기능에 맞게 쉽게 변경할 수 없어서 마치 높은 유도성을 가진 것처럼 느껴짐.
  • 'junk tech debt'가 갑자기 'AAA' 등급으로 평가받는다는 것에 대해, 저자는 코드가 가져오기(vendoring) 되기 전과 후에 같은 코드가 더 나은 부채 등급을 가질 수 없다는 것을 의미하는 것 같음. 하지만 이것은 코드 자체의 가치만을 보는 것으로, 전체 가치 제안의 가장 중요한 부분을 놓치고 있음. 코드를 가져오는 유지보수자는 이제 그 코드를 소유하게 되며, 죽은 프로젝트에서 코드를 가져온 활동적인 유지보수자는 이슈에 대응하고, 풀 리퀘스트를 검토하며, 버그를 수정할 수 있는 인간이 있기 때문에 코드의 가치를 높임.
  • JS npm 생태계에서도 같은 패턴을 보았음. Npm audit은 주로 보안 문제에 대해 과장되게 경고하며, 라이선스가 허용하는 한, 사용자로부터 받는 터무니없는 문제들로부터 벗어나는 가장 신뢰할 수 있는 방법 중 하나임.
  • yaml-rust를 포크하고 순수 Rust로 다시 작성하여 yaml-rust2를 만든 것은 운이 좋았음. 이 포크는 YAML 테스트 스위트를 완전히 통과하며 벤치마크에서도 더 나은 성능을 보임. 마이그레이션도 간단해 보임. 결국 문제는 여전히 남아 있으며, 우리는 현재 무료로 노동을 제공하는 다른 사람들에게 의존하고 있지만, 그들이 영원히 그렇게 할 것이라는 보장은 없음.
  • 소스 기반 패키지 매니저가 레지스트리가 발행된 패키지의 유지보수를 강제로 인수할 법적 권리를 강제하지 않는다면, 무시무시한 문제에 직면할 것임: 방치, 악의적인 변경, 악의적인 제거, 사칭 등... 커뮤니티에 충분히 중요하다고 판단되는 패키지의 경우, 원래 소유자의 손에서 레지스트리 항목을 빼앗아 포크로 바꾸는 방법이 필요함.
  • 코드가 작동하고 수년간 그래왔다면, 유지보수되지 않는다고 해서 무슨 상관이 있을까? 수정할 필요가 없고 그 한계와 능력을 알고 있다면 문제가 되지 않음. 코드는 스스로 나빠지지 않음. 수십 년 전 코드를 여러 번 빌려오거나 통합하는 데 아무 문제가 없었음.
  • 의존성을 가져오는 것(vendoring)이 해결책임. 20년 동안 '완성'되어 개발 및 유지보수가 느려진 거의 모든 의존성에 대해 이를 수행함.