GN⁺: GitHub 지도
(github.com/anvaka)-
GitHub 프로젝트 지도
-
400,000개 이상의 GitHub 프로젝트를 시각화한 지도임. 각 점은 하나의 프로젝트를 나타내며, 공통의 stargazer가 많은 프로젝트일수록 서로 가까이 위치함.
-
어떻게 만들어졌는가?
-
첫 번째 단계에서는 GitHub 활동 이벤트의 공개 데이터 세트를 사용하여 어떤 사용자가 어떤 저장소에 별을 주었는지 데이터를 수집함. 2020년 1월부터 2023년 3월까지의 이벤트를 고려하여 3억 5천만 개 이상의 별 데이터를 얻음.
-
두 번째 단계에서는 각 저장소 간의 정확한 Jaccard 유사도를 계산함. 24GB RAM의 개인 컴퓨터로는 처리하기 어려웠으나, 512GB RAM의 AWS EC2 인스턴스를 사용하여 몇 시간 만에 처리함.
-
세 번째 단계에서는 몇 가지 클러스터링 알고리듬을 사용하여 저장소를 그룹화함. Leiden 클러스터링을 가장 선호하여 1000개 이상의 클러스터를 생성함.
-
네 번째 단계에서는 ngraph.forcelayout을 사용하여 클러스터 내 노드의 레이아웃을 계산하고, 별도의 설정으로 클러스터의 전역 레이아웃을 얻음.
-
다섯 번째 단계에서는 지도를 렌더링함. 이전 프로젝트와 달리 maplibre를 사용하여 데이터를 GeoJSON 형식으로 변환하고, tippecanoe로 타일을 생성하여 브라우징 환경을 구성함.
-
-
국가 이름
- 많은 국가 레이블은 ChatGPT의 도움을 받아 생성됨. 잘못된 부분이 있다면, 오른쪽 클릭하여 수정하고 풀 리퀘스트를 보내주면 감사하겠음.
-
지오코딩?
- 검색 상자를 구현하기 위해 모든 저장소를 단순히 덤프하여 첫 글자(또는 작성자의 이름)로 인덱싱함. 검색 상자에 'a'를 입력하면 'a'로 시작하는 모든 저장소를 찾아 클라이언트에서 퍼지 매처로 보여줌.
-
디자인
- 이 프로젝트의 데이터 표현을 지도 디자인보다 더 선호함. 지도 디자인에 경험이 있거나 멋진 디자인 비전을 가진 사람이라면 주저하지 말고 공유해주길 바람. 데이터에 맞는 스타일을 찾고 있음.
-
지원
-
이 프로젝트가 유용하다고 생각되면 지원 그룹에 참여해주길 바람. 프로젝트에 대한 도움이 필요하거나 질문이 있다면 이슈를 열거나 트위터로 연락해주길 바람.
-
프로젝트를 시작하는 데 도움을 준 친구들과 지지자들에게 감사함: Ryan, Andrey, Alex, Dmytro. 당신들은 대단함!
-
이 프로젝트의 로고를 만들어 준 사랑하는 딸 Louise에게 감사함. 사랑함!
-
이 프로젝트를 가능하게 한 모든 오픈 소스 기여자들에게 무한한 감사함. 거인의 어깨 위에 서 있음.
-
-
라이선스
- 이 저장소는 MIT 라이선스로 공개됨. 데이터를 자신의 작업에 사용할 경우, 이 프로젝트에 대한 출처를 표기해주길 바람.
Hacker News 의견
-
Rustland가 작고 Clouderra의 한 주에 불과한 것에 놀라움을 느끼는 의견이 있음
- Bevy와 Veloren이 Rustland에 있는 것이 흥미로움
- Rust 커뮤니티가 게임 개발 커뮤니티보다 더 많은 별을 주는 것 같음
- Rust 생태계가 아직 작고 많은 사람들이 Rust로 무언가를 하고 있는 느낌임
-
특정 프로젝트를 검색 기능 없이 지도만으로 찾는 미니게임이 재미있음
-
torvalds/linux가 Fronterra에 있으며, JS 프로젝트, awesome-X 리스트, 프론트엔드 체크리스트 옆에 있는 것이 흥미로움
- 커널 해커들이 프론트엔드를 좋아하는 것인지, 아니면 Github 프로젝트에 별을 주는 사람들이 코드 작성자와 많이 겹치지 않는 것인지 궁금함
-
Among Us 섹션의 이름이 "Sussex"인 것이 웃겼음
-
국가/지도 은유가 최선의 선택인지에 대해 혼란스러움
- 이름이 명확하지 않아 확대해야 이해할 수 있는 경우가 많음
- 계층적 클러스터링을 통해 (슈퍼)클러스터 간의 평균 연결성을 선으로 보여주는 것이 더 흥미로울 수 있음
- 각 클러스터에 대해 더 설명적이고 충실한 LLM 생성 레이블을 사용하는 것이 좋을 수 있음
-
"Homelabia"라는 독특한 이름 선택이 재미있음
-
이전 논의가 있었음
- 2023년의 논의 링크 제공
-
저장소 간의 연결이 어떻게 결정되는지 궁금함
- 자신의 저장소를 확인했을 때, 연결에 대한 참조가 양방향으로 보이지 않음