Was It Never Collected, or Rewritten Away? A Commit-Provenance Dataset Separating Ingestion Gaps from Upstream History Edits across the World of Code
이 논문은 업스트림 히스토리 재작성(force-pushes)으로 인해 발생한 누락된 커밋과 글로벌 코드 미러의 실제 인제스션(ingestion) 격차로 인해 발생한 누락된 커밋을 구분하는 커밋-프로비넌스(commit-provenance) 데이터셋을 소개하며, 누락된 커밋의 약 6.5%가 유실된 것이 아니라 재작성된 것임을 밝히고 기여도 산정 및 미러 완전성 보고의 정확도를 향상시키기 위한 보정 계수를 제공한다.
원본 논문은 CC BY 4.0 (http://creativecommons.org/licenses/by/4.0/) 라이선스로 제공됩니다. 이것은 아래 논문에 대한 AI 생성 설명입니다. 저자가 작성하거나 승인한 것이 아닙니다. 기술적 정확성을 위해서는 원본 논문을 참조하세요. 전체 면책 조항 읽기
당신이 수천 명의 사람들이 서로의 작업물 위에 계속해서 그림을 그리고, 지우고, 다시 그리는 거대하고 글로벌한 예술 프로젝트의 모든 순간을 담은 완벽하고 완전한 사진 앨범을 만들려고 노력하고 있다고 상상해 보세요.
이 논문은 왜 우리 앨범에서 일부 사진이 사라졌는지를 이해하는 데 도움을 주는 새로운 도구에 관한 것입니다.
문제: "사라진 사진"의 미스터리
수년 동안 연구자들은 GitHub에서 발생하는 모든 커밋(코드 변경 사항이라는 하나의 "사진")을 **World of Code (WoC)**라는 거대한 데이터베이스로 수집하려고 노력해 왔습니다. 하지만 그들은 문제가 있다는 것을 발견했습니다. 앨범이 불완전하다는 것입니다. 그곳에 있어야 할 수백만 장의 "사진"이 보이지 않습니다.
이전에는 연구자들이 이 사라진 사진들을 단순히 영원히 손실된 것이라고 가정했습니다. 수집 시스템이 사진을 잡는 데 실패했기 때문이라고 생각한 것이죠. 그들은 *"아, 우리가 사진의 40%를 놓쳤구나; 우리의 수집 시스템이 고장 났어"*라고 생각했습니다.
하지만 이 논문은 다음과 같이 주장합니다: 잠깐만요. 사진이 사라진 게 아니라, 아마도 의도적으로 삭제된 것일 수도 있습니다.
두 명의 용의자
저자 오드리스 모커스(Audris Mockus)는 사진이 사라진 이유로 두 가지 서로 다른 원인을 식별했습니다.
- 수집 격차 (The Collection Gap - "놓친 샷"): 카메라(수집 시스템)가 깜빡였거나 파일 전송이 실패하여 사진이 저장되지 않은 경우입니다. 이것은 실제 오류입니다.
- 히스토리 재작성 (The History Rewrite - "삭제된 초안"): 예술가(프로젝트 소유자)가 특정 버전의 그림이 마음에 들지 않기로 결정한 경우입니다. 그들은 "강제 푸시(force-push)"라는 디지털 지우개를 사용하여 해당 버전을 기록에서 지우고 새로운 버전으로 대체했습니다. 그 사진은 최종 버전에 존재하지 않았던 것이 아니라, 예술가가 지워버린 것입니다.
기존의 계산 방식은 이 두 가지를 하나로 묶었습니다. 그것은 "우리는 46%의 사진을 놓쳤다!"라고 말했습니다. 이는 수집 상태를 실제보다 훨씬 더 나쁘게 보이게 만들었습니다.
탐정 작업: 두 가지 다른 관점
이 미스터리를 해결하기 위해 저자는 동일한 사건을 바라보는 두 가지 다른 "카메라"를 사용했습니다.
- 카메라 A (GHArchive): 이것은 사건이 일어난 순간 광고된 모든 것을 기록하는 보안 카메라와 같습니다. 나중에 사진이 삭제되든 상관하지 않고, 단지 "오후 2시에 누군가가 '커밋 X'라는 이름의 사진을 푸시했다"라고 기록합니다.
- 카메라 B (World of Code): 이것은 현재의 사진 앨범입니다. 지금까지 수집한 모든 것을 보유하고 있지만, 삭제된 사진은 보관하지 않습니다.
보안 카메라의 로그(무엇이 광고되었는가)와 현재 앨범(무엇이 보관되어 있는가)을 비교함으로써, 저자는 사라진 모든 사진을 세 가지 깔끔한 더미로 분류할 수 있었습니다.
- 존재함 (Present): 사진이 앨범에 있습니다. (53%의 경우)
- 재작성됨 (Rewritten): 사진이 광고되었지만, 예술가가 나중에 지웠습니다. 보안 카메라는 그것을 보았지만, 앨범에는 예술가가 삭제했기 때문에 들어있지 않습니다. (6.5%의 경우)
- 미수집 (Never-Ingested): 사진이 광고되었고 예술가가 삭제하지도 않았지만, 여전히 앨범에 없습니다. 이것이 진정한 수집 격차입니다. (40%의 경우)
놀라운 결과
결과는 충격적이었습니다. 이전에는 사람들이 "사라진" 비율이 거의 47%라고 생각했습니다.
- 현실: 실제로 **40%**만이 정말로 사라진 것(수집 격차)입니다.
- 반전: "사라진" 사진 중 약 **6.5%**는 사실 예술가 스스로가 지운 것이었습니다.
이는 15장의 사라진 사진 중 한 장은 수집가의 실수가 아니라, 프로젝트 측의 의도적인 편집이었다는 것을 의미합니다.
이것이 왜 중요한가 (쉬운 설명)
1. 정직한 보고
소프트웨어를 연구하는 연구자라면, 더 이상 "우리 데이터는 47% 불완전합니다"라고 말할 필요가 없습니다. 대신 "우리 데이터는 40% 불완전하며, 나머지 7%는 제작자에 의해 삭제되었습니다"라고 말할 수 있습니다. 이는 연구를 훨씬 더 정확하게 만듭니다.
2. 작업량을 올바르게 측정하기
어떤 작업자가 100줄의 코드를 작성한 후, 이를 삭제하고 새로운 100줄으로 다시 썼다고 상상해 보세요.
- 기존 계산: 당신은 새로운 100줄만 보게 됩니다. 당신은 그가 100줄의 일을 했다고 생각합니다.
- 새로운 계산: 이 도구는 그가 100줄을 썼고, 삭제했으며, 다시 100줄을 썼다는 것을 봅니다. 그는 숨겨진 작업이었던 '삭제된' 100줄도 실제로 수행했다는 것을 깨닫게 됩니다.
- 결과: 이 논문은 현재 보이는 것만 계산한다면, 총 생산성을 약 10.8% 과소평가하게 된다는 것을 보여줍니다. 이는 공장이 100대의 차를 만들었지만 10대를 폐기하고 다시 만들었기 때문에, 마치 90대만 만든 것처럼 보이는 것과 같습니다.
3. 중복 계산 방지
개발자가 커밋을 재작성하면(기존 것을 지우고 새로운 ID로 새 버전을 생성하면), 이는 동일한 "패치"입니다. 이 도구가 없다면 컴퓨터는 이전 버전과 새 버전을 두 개의 별개 기여로 계산할 수 있습니다. 이 도구는 이들을 중복으로 표시하여 혼란을 방지합니다.
결론
이 논문은 우리에게 탐정의 돋보기를 제공합니다. 그것은 "고장 난 카메라"(수집 격차)와 "삭제된 초안"(히스토리 재작성)을 구분해 줍니다.
이 논문은 World of Code가 우리가 생각했던 것보다 데이터 수집을 더 잘하고 있음을 알려주는 동시에(일부 "사라진" 데이터는 애초에 존재할 의도가 없었기 때문), 우리가 개발자들이 하는 작업량을 과소평가하고 있다는 점도 알려줍니다(우리가 지워진 작업을 볼 수 없기 때문입니다).
저자는 누구나 이 "탐정의 렌즈"를 사용하여 코드 세계에 대한 더 명확하고 정직한 그림을 얻을 수 있도록 모든 데이터와 도구를 공개했습니다.
연구 분야의 논문에 파묻히고 계신가요?
연구 키워드에 맞는 최신 논문의 일일 다이제스트를 받아보세요 — 기술 요약 포함, 당신의 언어로.