본문 바로가기
Rev's/오픈소스

Google, Open Source Insights

by RevFactory 2021. 6. 5.

Google에서 Open Source Insights 서비스를 공개했습니다. 오픈소스 사용 비중이 매우 커져서 직접 작성한 코드뿐만 아니라 코드가 의존하는 오픈소스, 그리고 그 오픈소스의 의존성까지도 이해하는게 중요해졌습니다. 이에 Google은 기존에 아마존, MS등과 함께 협업하여 clearlydefined 서비스를 제공하고 있었는데요. 그들이 추구하는바는 명확했으나 실제 사용하기에는 다소 불편함이 많았습니다.

 

 

이번에 공개된 Open Source Insights 는 이러한 불편함이 해소된 것 같고, 보다 명확하게 구성된 UI 로 서비스가 구성된 것으로 보입니다. 보안 취약성 정보를 연결하고, 종속성 그래프도 제공합니다. 또한 오픈소스 선택에 도움을 줄 수 있는 Open SSF 스코어를 도입하여 그 결과를 함께 노출하고 있습니다.

 

 

 

https://deps.dev/faq

 

Open Source Insights 프로젝트는 무엇입니까?

 

Open Source Insights는 개발자가 오픈 소스 소프트웨어 패키지의 구조, 보안 및 구성을 더 잘 이해할 수 있도록 Google에서 개발하고 호스팅하는 실험적인 서비스입니다. 이 서비스는 각 패키지를 검사하고 종속성 및 속성에 대한 전체적이고 상세한 그래프를 구성하며 그 결과를 혜택을받을 수있는 모든 사람에게 제공합니다.

 

종속성 그래프는 버전 관리 및 라이선스 정보, 알려진 취약성, 기타 코드 상태 및 안전에 대한 중요한 시그널을 전달합니다.

 

데이터는 프로젝트 자체 코드뿐만 아니라 각 종속성의 개별 버전에 이르기까지 프로젝트의 모든 종속성에 대해 완전히 구성된 그래프의 모든 패키지에 대해 제공됩니다. 예를 들어 소프트웨어가 취약성이있는 종속 패키지 버전에 의존하는 경우 취약성이 프로젝트의 Insights 웹보기에서 최상위 수준에 표시됩니다.

 

Insights는 종속성 그래프 전체에서 사용 된 라이선스를 보여 주며, 충돌 또는 기타 라이선스 문제를 찾는 데 사용할 수 있습니다.

 

또한 종속성 그래프 시각화, 버전 비교, 종속성 필터링 등을위한 대화 형 도구를 제공합니다.

마지막으로 Insights에는 버전 기록 및 기타 관련 정보도 표시됩니다.

 

 

 

왜 이것을 만들었습니까?

 

우리는 모두가 생산적이고 안전하며 신뢰할 수 있고 신뢰할 수있는 오픈 소스 소프트웨어 환경을 갖기를 바랍니다. 프로젝트의 종속성을 이해하는 것은 해당 목표를 달성하는 데 중요한 부분입니다. 현명하게 선택하지 않은 종속성은 라이선스 또는 보안 문제를 유발할 수 있지만 너무 많은 종속성을 갖는 것은 유지 관리를 어렵게 만들 수 있습니다. 모든 곳의 개발자는 매일 코드를 업데이트하고 있으며 이는 예기치 않게 자신의 소프트웨어에 영향을 미칠 수 있습니다. 따라 잡기가 어려울 수 있습니다.

 

Insights 프로젝트는 개발자와 프로젝트 소유자에게 모든 종속성에 대한 정보를 통합하고 이들이 어떻게 함께 맞는지 확인할 수있는 방법을 제공하여 소프트웨어 상태에 대한 통찰력을 제공하는 것을 목표로합니다. 물론 기존 도구와 패키징 시스템은이 중 일부를 수행하지만 충분하지도 않고 균일하지도 않습니다.

 

오픈 소스 소프트웨어 프로젝트에 대한 고품질 정보 및 분석에 액세스하여 고품질 소프트웨어를보다 쉽게 ​​구축하고 유지 관리 할 수 ​​있기를 바랍니다.

 

 

 

npm과 같은 일반적인 도구 나 다른 서비스에서 제공하는 것과 어떻게 다른가요?

 

Insights는 표준 도구 세트를 대체하려는 시도가 아니라 각 패키징 모델에 대한 전체 에코 시스템에 대한 새롭고 통합 서비스로 이를 보강하는 것입니다.

 

주요 차이점은 Insights 데이터가 소프트웨어 및 패키징 정의를 살펴 보는 첫 번째 원칙에서 파생된다는 것입니다. 결과는 예를 들어 패키징 "잠금"파일의 선언 된 종속성과 실질적으로 다르거 나 더 완전 할 수 있습니다. 또한 Insights에서 제공하는 데이터는 최신 상태로 유지하기 위해 정기적으로 재평가되며, 이는 빠르게 변화하는 오픈 소스 개발 세계에서 중요합니다.

 

Insights 프로젝트에서 제공하는 정보 중 일부는 사용중인 패키징 시스템에 따라 크게 달라 지지만 일반 "기본"도구에서 사용할 수 있습니다. 그러나 어떤 시스템도 Insights가 제공하는 모든 정보를 제공하지 않습니다. 또한 여러 언어로 작업하지 않는 한 중요하지 않을 수 있지만 Insights 서비스는 모든 패키징 시스템에 대해 가능한 한 동일한 분석 및 사용자 경험을 제공하려고합니다.

 

이 사이트에는 패키지의 종속성에 대한 세부 정보뿐만 아니라 종속 항목, 전 이적으로 종속 된 패키지에 대한 정보도 포함되어 있습니다. 이는 패키지 작성자에게 정보를 제공 할뿐만 아니라 많은 패키지에 의해 직접 또는 간접적으로 의존하는 생태계에 특히 중요 할 수있는 패키지를 찾는 데 도움이됩니다.

 

마지막으로 Insights는 메타 데이터를 통합하여 라이선스 문제, 보안 취약성 및 기타 관련 문제가 프로젝트 자체뿐만 아니라 전체 시스템에 미치는 영향을 보여줍니다.

 

 

 

정보에 어떻게 액세스합니까?

 

Insights 포털은 각 프로젝트에 대한 웹 페이지를 제공합니다. 데이터를 조사하고 연구하고 발견 한 문제를 해결하는 방법을 이해하는 데 사용할 수 있습니다.

 

 

 

Insights는 어떻게 구현됩니까?

 

프로젝트는 Google Cloud Platform에서 호스팅됩니다. 공개 오픈 소스 패키징 시스템 및 리포지토리를 스캔하고 수신 된 데이터에서 종속성 그래프를 구성하고 라이선스 및 취약성 정보와 같은 다른 메타 데이터로 주석을 추가합니다.

 

대부분의 백엔드는 Go로 작성되었으며 각 패키징 시스템의 종속성 분석 알고리즘 (버전 확인)을 다시 구현합니다. 코드는 기본 도구와의 동의를 위해 테스트되었지만 패키지 설치에서 분리 되었기 때문에 더 빠릅니다. 실제로 소프트웨어를 빌드하고 설치하지 않고 그래프를 구성합니다.

프로젝트 작동 방식과 사용되는 용어에 대한 자세한 내용은 용어집을 참조하십시오 .

 

 

 

Insights에서 다루는 패키지는 무엇입니까?

 

프로젝트는 npm과 같은 시스템의 패키지 홈 사이트를 읽거나 GitHub 및 기타 저장소 호스팅 사이트를 스캔하여 발견 할 수있는 모든 사용 가능한 패키지를 스캔합니다.

 

이 프로젝트는 현재 Cargo (Rust), Go의 모듈 시스템, Maven (Java) 및 npm (Node.js)을 지원합니다. 현재 Insights는 종속성 그래프를 구성하기 위해 패키징 정보가 필요하기 때문에 알려진 패키징 모델을 사용하여 이와 같은 시스템 만 분석 할 수 있습니다. 이는 적어도 현재로서는 명확한 패키징 모델이없는 C 또는 C ++에 대한 데이터가 없음을 의미합니다.

 

 

 

앞으로 어떤 시스템을 다룰 예정입니까?

 

우리는 다른 여러 포장 시스템을 포함하기 위해 노력하고 있습니다. 하지만 우리가 추가하는 각 시스템에 대해해야 할 일이 상당히 많으므로 새로운 시스템이 언제 지원 될지 또는 어떤 것이 될지 예측할 수 없습니다.

 

 

 

오픈 소스인가요?

 

라이센스 확인 라이브러리 와 같은 일부 부분 을 사용할 수 있지만 기본 플랫폼은 오픈 소스가 아닙니다 .

 

 

 

정보가 얼마나 최신입니까?

 

Insights 서비스의 패키지보기는 두 개의 독립적 인 메커니즘에 의해 업데이트됩니다. 여러 피드는 업데이트중인 패키지에 대한 정보를 유지합니다. 한편 백그라운드 검색은 알려진 모든 패키지를 일정한 속도로 방문하여 누락 될 수있는 업데이트를 포착합니다.

 

결과적으로 일반적으로 사용되는 패키지의 데이터는 일반적으로 최신 상태이며 한 시간 정도 이내로 업데이트됩니다. 그러나 정지되거나 사용되지 않는 패키지는 오래된 데이터로 표시 될 수 있습니다.

사용자가 업데이트를 트리거하는 메커니즘은 없습니다.

 

 

 

 

정보는 얼마나 정확합니까?

 

Insights 팀은 패키지에 대한 종속성을 계산하는 해석 알고리즘의 독립적 인 구현을 가지고 있습니다. 이들은 "네이티브"구현에 대해 테스트되었으며 동일한 입력이 주어지면 결과는 99 % 이상, 종종 훨씬 더 높습니다. 버전 왜곡, 문서화되지 않았거나 모호한 패키징 모델 기능, 우리가 사용할 수없는 빌드 시스템의 입력 및 기타 요인으로 인해 차이가 발생할 수 있습니다.

 

또한 패키지에 대한 종속성 그래프는 테스트 또는 기타 종속성이 포함되는지 여부, 활성화 된 기능 등에 따라 달라질 수 있으므로 항상 고유 한 항목은 아닙니다. 그래프 계산은 전이 적이므로 종속성 사양의 세부 사항을 조금만 변경해도 전체 그래프에 영향을 미칠 수 있습니다.