├── .github └── workflows │ └── update.yaml ├── 2022-survey.md ├── README.md ├── github.json ├── github.md ├── requirements.txt └── src ├── update-json.py └── update-markdown.py /.github/workflows/update.yaml: -------------------------------------------------------------------------------- 1 | name: update-companies 2 | on: 3 | schedule: 4 | # 하루에 한 번, 04:00 UTC => 13:00 (GMT+9)에 업데이트 5 | - cron: '0 4 * * *' 6 | push: 7 | branches: 8 | - main 9 | workflow_dispatch: 10 | 11 | jobs: 12 | update: 13 | runs-on: ubuntu-latest 14 | strategy: 15 | matrix: 16 | python-version: ['3.10'] 17 | steps: 18 | - uses: actions/checkout@master 19 | with: 20 | persist-credentials: false 21 | fetch-depth: 0 22 | 23 | - name: Set up Python ${{ matrix.python-version }} 24 | uses: actions/setup-python@v5 25 | with: 26 | python-version: ${{ matrix.python-version }} 27 | cache: pip 28 | 29 | - name: Install dependencies 30 | run: | 31 | python -m pip install -r requirements.txt 32 | 33 | - name: Run script 34 | run: | 35 | python3 ./src/update-json.py ${{ secrets.GITHUB_TOKEN }} 36 | python3 ./src/update-markdown.py 37 | 38 | - name: Set date in environment variable 39 | run: echo "DATE=$(date +'%Y-%m-%dT%H:%M:%SZ')" >> $GITHUB_ENV 40 | 41 | - name: Commit & Push changes 42 | uses: Andro999b/push@patch-1 43 | with: 44 | github_token: ${{ secrets.GITHUB_TOKEN }} 45 | branch: main 46 | message: > 47 | 🎉 기업별 GitHub 데이터 업데이트 완료 (${{ env.DATE }}) 48 | -------------------------------------------------------------------------------- /2022-survey.md: -------------------------------------------------------------------------------- 1 | # 2022 국내 IT 기업 개발 문화 설문 조사 2 | 2022년 6월 10일 부터 27일까지 2022년 국내 기업 개발자 문화 현황 조사를 실시하였습니다. 본 설문 조사는 총 415분이 응답해 주셨습니다. 직군별로 보면, 백엔드 엔지니어 (41.9%), 프론트엔드 엔지니어(26.6%), 데이터 엔지니어(7.3%), 시스템엔지니어 (6%), 풀스택 및 기타 엔지니어 (18.3%)입니다. 이 중에는 기업별로 중복된 분들도 계신데, 총 278개 기업에 재직중이었습니다. 3 | 4 | 아래 표는 총 10점 이상 받은 업체 목록입니다. 단, 본 조사에 응답한 재직자의 회사만 선택한 것이며, 한 명만 응답한 기업은 제외하고, 적어도 3명 이상이 응답한 회사 중에서 50% 이상이 동의한 항목 만을 고려했다는 점 다시 한번 말씀드립니다. (즉, 응답 안한 기업 재직자가 속한 업체 중 우수한 개발 문화를 가진 곳도 있을 것입니다.) 참고 - https://channy.creation.net/blog/1600 5 | 6 | | **회사명** | 1. 코딩테스트 인터뷰 | 2. 자율적 개인 개발 장비 선택 | 3. 자율적 팀 개발 환경 선택 | 4. 소스 코드 리뷰 및 테스트 | 5. 개발자 기여 로드맵/백로그 | 6. 지속적 통합 및 배포 | 7. 내부 소스 레포지터리 공유 | 8. API를 기반한 연동 및 소통 | 9. 기술을 이해하는 팀장/매니저 | 10. 개발자 레벨 혹은 경력 관리 | 11. 참여형 지식 공유 플랫폼 | 12. 개발자 관계 활동 | **총점** | 7 | |---|---|---|---|---|---|---|---|---|---|---|---|---|---| 8 | | 라인플러스 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 12 | 9 | | 래블업 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 12 | 10 | | 업스테이지 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 12 | 11 | | 우아한형제들 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 12 | 12 | | 카카오 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 12 | 13 | | 컴투스 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 12 | 14 | | 네이버 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | | 1 | 1 | 11 | 15 | | 데브시스터즈 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | | 1 | 1 | 11 | 16 | | 라인웍스 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | | 1 | 1 | 1 | 1 | 11 | 17 | | 에이비일팔공 | 1 | 1 | | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 11 | 18 | | 엔에이치엔 | 1 | 1 | 1 | 1 | 1 | | 1 | 1 | 1 | 1 | 1 | 1 | 11 | 19 | | 이제이엔 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | | 11 | 20 | | 크몽 | 1 | | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 11 | 21 | | 트렌비 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | | 1 | 1 | 11 | 22 | | 하이퍼커넥트 | 1 | | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 11 | 23 | | 11번가 | 1 | | 1 | 1 | 1 | 1 | 1 | 1 | 1 | | 1 | 1 | 10 | 24 | | NDREAM | 1 | 1 | 1 | 1 | | 1 | 1 | | 1 | 1 | 1 | 1 | 10 | 25 | | 당근마켓 | | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | | 10 | 26 | | 드림어스컴퍼니 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | | 1 | | 10 | 27 | | 디리토 | 1 | 1 | | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | | 10 | 28 | | 라인비즈플러스 | 1 | 1 | 1 | 1 | 1 | 1 | | 1 | 1 | | 1 | 1 | 10 | 29 | | 렌딧 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | | 1 | | 10 | 30 | | 마이리얼트립 | 1 | 1 | | 1 | 1 | 1 | 1 | 1 | 1 | | 1 | 1 | 10 | 31 | | 번개장터 | 1 | | 1 | 1 | | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 10 | 32 | | 시높시스 | 1 | | | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 10 | 33 | | 안랩 | 1 | | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | | 10 | 34 | | 원티드랩 | | | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 10 | 35 | | 이베이 재팬 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | | 1 | | 10 | 36 | | 지마켓글로벌 | 1 | 1 | 1 | | 1 | 1 | 1 | 1 | 1 | | 1 | 1 | 10 | 37 | | 카카오뱅크 | 1 | 1 | | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | | 10 | 38 | | 카카오스타일 | 1 | | 1 | 1 | 1 | 1 | 1 | 1 | 1 | | 1 | 1 | 10 | 39 | | 카카오페이 | 1 | 1 | 1 | 1 | | 1 | 1 | 1 | 1 | | 1 | 1 | 10 | 40 | | 크래프톤 | 1 | 1 | 1 | 1 | 1 | 1 | | 1 | 1 | 1 | 1 | | 10 | 41 | | 텀블벅 | 1 | | | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 10 | 42 | | 테크타카 | 1 | 1 | 1 | 1 | | 1 | | 1 | 1 | 1 | 1 | 1 | 10 | 43 | | 페이히어 | 1 | 1 | | 1 | 1 | 1 | 1 | 1 | 1 | | 1 | 1 | 10 | 44 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # 국내 IT 기업 소프트웨어 개발 문화 2 | 본 레포지터리는 국내 IT 기업의 소프트웨어 개발 문화에 대한 다양한 자료를 정리하고 있습니다. 3 | 4 | ## 상위 10개 IT 기업 Github 레포지터리 (숫자 기준) 5 | 6 | - 데이터는 매일 오후 1시에 자동으로 업데이트됩니다. `main` 브랜치에 새로운 커밋이 추가되었을 때도 업데이트가 시도됩니다. 7 | - 전체 목록은 [여기](./github.md)에서 확인하실 수 있습니다. 8 | 9 | > **Note**
10 | > 새로운 회사를 추가하고 싶거나, 오가니제이션 정보 수정이 필요한 경우 [`github.json`](./github.json) 파일을 변경한 뒤에, Pull Request를 올려 주세요. 11 | 12 | 13 | 14 | | **회사명** | **레포지터리 수** | **팔로워 수** | **Github 주소** | 15 | |:---|---:|---:|:---| 16 | | 티맥스클라우드 | 271 | 54 | https://github.com/tmax-cloud | 17 | | 네이버 | 266 | 2218 | https://github.com/naver | 18 | | 인베슘 | 194 | 65 | https://github.com/hamonikr | 19 | | 센드버드 | 191 | 318 | https://github.com/sendbird | 20 | | 플라네타리움 | 187 | 209 | https://github.com/planetarium | 21 | | 삼성전자 | 177 | 1214 | https://github.com/Samsung | 22 | | 데브시스터즈 | 177 | 221 | https://github.com/devsisters | 23 | | 라인 | 156 | 1215 | https://github.com/line | 24 | | 래블업 | 125 | 111 | https://github.com/lablup | 25 | | 리디 | 115 | 157 | https://github.com/ridi | 26 | 27 | 28 | -------------------------------------------------------------------------------- /github.json: -------------------------------------------------------------------------------- 1 | [ 2 | { 3 | "name": "티맥스클라우드", 4 | "organizations": [ 5 | { 6 | "followers": 54, 7 | "organization_id": "tmax-cloud", 8 | "public_repos": 271 9 | } 10 | ] 11 | }, 12 | { 13 | "name": "네이버", 14 | "organizations": [ 15 | { 16 | "followers": 2218, 17 | "organization_id": "naver", 18 | "public_repos": 266 19 | } 20 | ] 21 | }, 22 | { 23 | "name": "인베슘", 24 | "organizations": [ 25 | { 26 | "followers": 65, 27 | "organization_id": "hamonikr", 28 | "public_repos": 194 29 | } 30 | ] 31 | }, 32 | { 33 | "name": "삼성전자", 34 | "organizations": [ 35 | { 36 | "followers": 1214, 37 | "organization_id": "Samsung", 38 | "public_repos": 177 39 | } 40 | ] 41 | }, 42 | { 43 | "name": "센드버드", 44 | "organizations": [ 45 | { 46 | "followers": 318, 47 | "organization_id": "sendbird", 48 | "public_repos": 191 49 | } 50 | ] 51 | }, 52 | { 53 | "name": "데브시스터즈", 54 | "organizations": [ 55 | { 56 | "followers": 221, 57 | "organization_id": "devsisters", 58 | "public_repos": 177 59 | } 60 | ] 61 | }, 62 | { 63 | "name": "리디", 64 | "organizations": [ 65 | { 66 | "followers": 157, 67 | "organization_id": "ridi", 68 | "public_repos": 115 69 | } 70 | ] 71 | }, 72 | { 73 | "name": "라인", 74 | "organizations": [ 75 | { 76 | "followers": 1215, 77 | "organization_id": "line", 78 | "public_repos": 156 79 | } 80 | ] 81 | }, 82 | { 83 | "name": "당근마켓", 84 | "organizations": [ 85 | { 86 | "followers": 1089, 87 | "organization_id": "daangn", 88 | "public_repos": 114 89 | } 90 | ] 91 | }, 92 | { 93 | "name": "NHN", 94 | "organizations": [ 95 | { 96 | "followers": 728, 97 | "organization_id": "nhn", 98 | "public_repos": 105 99 | } 100 | ] 101 | }, 102 | { 103 | "name": "래블업", 104 | "organizations": [ 105 | { 106 | "followers": 111, 107 | "organization_id": "lablup", 108 | "public_repos": 125 109 | } 110 | ] 111 | }, 112 | { 113 | "name": "하이퍼커넥트", 114 | "organizations": [ 115 | { 116 | "followers": 40, 117 | "organization_id": "hyperconnect", 118 | "public_repos": 42 119 | } 120 | ] 121 | }, 122 | { 123 | "name": "삼성SDS", 124 | "organizations": [ 125 | { 126 | "followers": 21, 127 | "organization_id": "samsung-cnct", 128 | "public_repos": 76 129 | }, 130 | { 131 | "followers": 6, 132 | "organization_id": "SDSACT", 133 | "public_repos": 7 134 | }, 135 | { 136 | "followers": 3, 137 | "organization_id": "samsungsds-rnd", 138 | "public_repos": 7 139 | } 140 | ] 141 | }, 142 | { 143 | "name": "뤼이드", 144 | "organizations": [ 145 | { 146 | "followers": 56, 147 | "organization_id": "riiid", 148 | "public_repos": 47 149 | } 150 | ] 151 | }, 152 | { 153 | "name": "버즈빌", 154 | "organizations": [ 155 | { 156 | "followers": 17, 157 | "organization_id": "Buzzvil", 158 | "public_repos": 49 159 | } 160 | ] 161 | }, 162 | { 163 | "name": "카카오", 164 | "organizations": [ 165 | { 166 | "followers": 550, 167 | "organization_id": "kakao", 168 | "public_repos": 64 169 | } 170 | ] 171 | }, 172 | { 173 | "name": "네이버클라우드", 174 | "organizations": [ 175 | { 176 | "followers": 116, 177 | "organization_id": "NaverCloudPlatform", 178 | "public_repos": 56 179 | } 180 | ] 181 | }, 182 | { 183 | "name": "카카오브레인", 184 | "organizations": [ 185 | { 186 | "followers": 506, 187 | "organization_id": "kakaobrain", 188 | "public_repos": 40 189 | } 190 | ] 191 | }, 192 | { 193 | "name": "그린랩스", 194 | "organizations": [ 195 | { 196 | "followers": 66, 197 | "organization_id": "green-labs", 198 | "public_repos": 44 199 | } 200 | ] 201 | }, 202 | { 203 | "name": "직방", 204 | "organizations": [ 205 | { 206 | "followers": 39, 207 | "organization_id": "zigbang", 208 | "public_repos": 33 209 | } 210 | ] 211 | }, 212 | { 213 | "name": "우아한형제들", 214 | "organizations": [ 215 | { 216 | "followers": 192, 217 | "organization_id": "woowabros", 218 | "public_repos": 22 219 | } 220 | ] 221 | }, 222 | { 223 | "name": "쏘카", 224 | "organizations": [ 225 | { 226 | "followers": 73, 227 | "organization_id": "socar-inc", 228 | "public_repos": 28 229 | } 230 | ] 231 | }, 232 | { 233 | "name": "한글과컴퓨터", 234 | "organizations": [ 235 | { 236 | "followers": 16, 237 | "organization_id": "hancom-io", 238 | "public_repos": 31 239 | } 240 | ] 241 | }, 242 | { 243 | "name": "엔씨소프트", 244 | "organizations": [ 245 | { 246 | "followers": 136, 247 | "organization_id": "ncsoft", 248 | "public_repos": 40 249 | } 250 | ] 251 | }, 252 | { 253 | "name": "버켓플레이스", 254 | "organizations": [ 255 | { 256 | "followers": 84, 257 | "organization_id": "bucketplace", 258 | "public_repos": 10 259 | } 260 | ] 261 | }, 262 | { 263 | "name": "비바리퍼블리카", 264 | "organizations": [ 265 | { 266 | "followers": 1447, 267 | "organization_id": "toss", 268 | "public_repos": 31 269 | } 270 | ] 271 | }, 272 | { 273 | "name": "마이리얼트립", 274 | "organizations": [ 275 | { 276 | "followers": 34, 277 | "organization_id": "myrealtrip", 278 | "public_repos": 33 279 | } 280 | ] 281 | }, 282 | { 283 | "name": "쿠팡", 284 | "organizations": [ 285 | { 286 | "followers": 69, 287 | "organization_id": "coupang", 288 | "public_repos": 18 289 | } 290 | ] 291 | }, 292 | { 293 | "name": "LG전자", 294 | "organizations": [ 295 | { 296 | "followers": 87, 297 | "organization_id": "LGE-OSS", 298 | "public_repos": 20 299 | } 300 | ] 301 | }, 302 | { 303 | "name": "드라마앤컴퍼니", 304 | "organizations": [ 305 | { 306 | "followers": 36, 307 | "organization_id": "dramancompany", 308 | "public_repos": 13 309 | } 310 | ] 311 | }, 312 | { 313 | "name": "야놀자", 314 | "organizations": [ 315 | { 316 | "followers": 21, 317 | "organization_id": "yanolja", 318 | "public_repos": 2 319 | } 320 | ] 321 | }, 322 | { 323 | "name": "VCNC", 324 | "organizations": [ 325 | { 326 | "followers": 14, 327 | "organization_id": "VCNC", 328 | "public_repos": 21 329 | } 330 | ] 331 | }, 332 | { 333 | "name": "다나와", 334 | "organizations": [ 335 | { 336 | "followers": 8, 337 | "organization_id": "danawalab", 338 | "public_repos": 1 339 | } 340 | ] 341 | }, 342 | { 343 | "name": "뱅크샐러드", 344 | "organizations": [ 345 | { 346 | "followers": 94, 347 | "organization_id": "banksalad", 348 | "public_repos": 19 349 | } 350 | ] 351 | }, 352 | { 353 | "name": "카카오엔터프라이즈", 354 | "organizations": [ 355 | { 356 | "followers": 77, 357 | "organization_id": "kakaoenterprise", 358 | "public_repos": 18 359 | } 360 | ] 361 | }, 362 | { 363 | "name": "딜리셔스", 364 | "organizations": [ 365 | { 366 | "followers": 23, 367 | "organization_id": "dealicious-inc", 368 | "public_repos": 21 369 | } 370 | ] 371 | }, 372 | { 373 | "name": "몰로코", 374 | "organizations": [ 375 | { 376 | "followers": 119, 377 | "organization_id": "moloco", 378 | "public_repos": 17 379 | } 380 | ] 381 | }, 382 | { 383 | "name": "네이버제트", 384 | "organizations": [ 385 | { 386 | "followers": 56, 387 | "organization_id": "naverz", 388 | "public_repos": 10 389 | } 390 | ] 391 | }, 392 | { 393 | "name": "SK텔레콤", 394 | "organizations": [ 395 | { 396 | "followers": 32, 397 | "organization_id": "sktelecom", 398 | "public_repos": 4 399 | } 400 | ] 401 | }, 402 | { 403 | "name": "컬리", 404 | "organizations": [ 405 | { 406 | "followers": 93, 407 | "organization_id": "thefarmersfront", 408 | "public_repos": 10 409 | } 410 | ] 411 | }, 412 | { 413 | "name": "티몬", 414 | "organizations": [ 415 | { 416 | "followers": 1, 417 | "organization_id": "tmoncorp", 418 | "public_repos": 8 419 | } 420 | ] 421 | }, 422 | { 423 | "name": "메가존클라우드", 424 | "organizations": [ 425 | { 426 | "followers": 2, 427 | "organization_id": "megazone-devops", 428 | "public_repos": 8 429 | } 430 | ] 431 | }, 432 | { 433 | "name": "현대자동차", 434 | "organizations": [ 435 | { 436 | "followers": 46, 437 | "organization_id": "hkmc-airlab", 438 | "public_repos": 4 439 | }, 440 | { 441 | "followers": 99, 442 | "organization_id": "42dot", 443 | "public_repos": 6 444 | } 445 | ] 446 | }, 447 | { 448 | "name": "포스코ICT", 449 | "organizations": [ 450 | { 451 | "followers": 6, 452 | "organization_id": "poscoict-glueframework", 453 | "public_repos": 9 454 | } 455 | ] 456 | }, 457 | { 458 | "name": "요기요", 459 | "organizations": [ 460 | { 461 | "followers": 99, 462 | "organization_id": "yogiyo", 463 | "public_repos": 39 464 | } 465 | ] 466 | }, 467 | { 468 | "name": "가비아", 469 | "organizations": [ 470 | { 471 | "followers": 14, 472 | "organization_id": "gabia", 473 | "public_repos": 6 474 | } 475 | ] 476 | }, 477 | { 478 | "name": "힐링페이퍼", 479 | "organizations": [ 480 | { 481 | "followers": 17, 482 | "organization_id": "healingpaper", 483 | "public_repos": 3 484 | } 485 | ] 486 | }, 487 | { 488 | "name": "11번가", 489 | "organizations": [ 490 | { 491 | "followers": 20, 492 | "organization_id": "11st-corp", 493 | "public_repos": 10 494 | } 495 | ] 496 | }, 497 | { 498 | "name": "줌인터넷", 499 | "organizations": [ 500 | { 501 | "followers": 7, 502 | "organization_id": "zuminternet", 503 | "public_repos": 4 504 | } 505 | ] 506 | }, 507 | { 508 | "name": "네이버랩스", 509 | "organizations": [ 510 | { 511 | "followers": 32, 512 | "organization_id": "naverlabs", 513 | "public_repos": 4 514 | } 515 | ] 516 | }, 517 | { 518 | "name": "무신사", 519 | "organizations": [ 520 | { 521 | "followers": 168, 522 | "organization_id": "musinsa", 523 | "public_repos": 1 524 | } 525 | ] 526 | }, 527 | { 528 | "name": "SK", 529 | "organizations": [ 530 | { 531 | "followers": 0, 532 | "organization_id": "SK-HOLDINGS-CC", 533 | "public_repos": 0 534 | }, 535 | { 536 | "followers": 2, 537 | "organization_id": "cloudsvcdev", 538 | "public_repos": 2 539 | } 540 | ] 541 | }, 542 | { 543 | "name": "카카오페이", 544 | "organizations": [ 545 | { 546 | "followers": 15, 547 | "organization_id": "kakaopay", 548 | "public_repos": 1 549 | } 550 | ] 551 | }, 552 | { 553 | "name": "신한은행", 554 | "organizations": [ 555 | { 556 | "followers": 7, 557 | "organization_id": "Shinhan-Bank", 558 | "public_repos": 1 559 | } 560 | ] 561 | }, 562 | { 563 | "name": "크레프톤", 564 | "organizations": [ 565 | { 566 | "followers": 3, 567 | "organization_id": "Krafton", 568 | "public_repos": 0 569 | } 570 | ] 571 | }, 572 | { 573 | "name": "카카오뱅크", 574 | "organizations": [ 575 | { 576 | "followers": 57, 577 | "organization_id": "kakaobank", 578 | "public_repos": 2 579 | } 580 | ] 581 | }, 582 | { 583 | "name": "카카오헤어샵", 584 | "organizations": [ 585 | { 586 | "followers": 7, 587 | "organization_id": "kakaohairshop", 588 | "public_repos": 12 589 | } 590 | ] 591 | }, 592 | { 593 | "name": "플라네타리움", 594 | "organizations": [ 595 | { 596 | "followers": 209, 597 | "organization_id": "planetarium", 598 | "public_repos": 187 599 | } 600 | ] 601 | }, 602 | { 603 | "name": "큐브리드", 604 | "organizations": [ 605 | { 606 | "followers": 27, 607 | "organization_id": "CUBRID", 608 | "public_repos": 43 609 | } 610 | ] 611 | }, 612 | { 613 | "name": "코클", 614 | "organizations": [ 615 | { 616 | "followers": 22, 617 | "organization_id": "cochlearai", 618 | "public_repos": 14 619 | } 620 | ] 621 | }, 622 | { 623 | "name": "스켈터랩스", 624 | "organizations": [ 625 | { 626 | "followers": 11, 627 | "organization_id": "SkelterLabsInc", 628 | "public_repos": 10 629 | } 630 | ] 631 | } 632 | ] 633 | -------------------------------------------------------------------------------- /github.md: -------------------------------------------------------------------------------- 1 | # 국내 IT 기업 Github 레포지터리 목록 2 | 국내 주요 IT 기업의 Github Org 계정의 레포지터리 주소와 총 공개 레포지터리 숫자 및 팔로워를 모았습니다. 이러한 숫자가 절대적인 기준이 될 수는 없겠지만, 얼마나 오픈 소스 활동 및 투명한 정보 공개를 하고 있는지 알 수 있을 것입니다. 3 | 4 | 5 | 6 | | **회사명** | **레포지터리 수** | **팔로워 수** | **Github 주소** | 7 | |:---|---:|---:|:---| 8 | | 티맥스클라우드 | 271 | 54 | https://github.com/tmax-cloud | 9 | | 네이버 | 266 | 2218 | https://github.com/naver | 10 | | 인베슘 | 194 | 65 | https://github.com/hamonikr | 11 | | 삼성전자 | 177 | 1214 | https://github.com/Samsung | 12 | | 센드버드 | 191 | 318 | https://github.com/sendbird | 13 | | 데브시스터즈 | 177 | 221 | https://github.com/devsisters | 14 | | 리디 | 115 | 157 | https://github.com/ridi | 15 | | 라인 | 156 | 1215 | https://github.com/line | 16 | | 당근마켓 | 114 | 1089 | https://github.com/daangn | 17 | | NHN | 105 | 728 | https://github.com/nhn | 18 | | 래블업 | 125 | 111 | https://github.com/lablup | 19 | | 하이퍼커넥트 | 42 | 40 | https://github.com/hyperconnect | 20 | | 삼성SDS | 90 | 30 | https://github.com/samsung-cnct (76)
https://github.com/SDSACT (7)
https://github.com/samsungsds-rnd (7) | 21 | | 뤼이드 | 47 | 56 | https://github.com/riiid | 22 | | 버즈빌 | 49 | 17 | https://github.com/Buzzvil | 23 | | 카카오 | 64 | 550 | https://github.com/kakao | 24 | | 네이버클라우드 | 56 | 116 | https://github.com/NaverCloudPlatform | 25 | | 카카오브레인 | 40 | 506 | https://github.com/kakaobrain | 26 | | 그린랩스 | 44 | 66 | https://github.com/green-labs | 27 | | 직방 | 33 | 39 | https://github.com/zigbang | 28 | | 우아한형제들 | 22 | 192 | https://github.com/woowabros | 29 | | 쏘카 | 28 | 73 | https://github.com/socar-inc | 30 | | 한글과컴퓨터 | 31 | 16 | https://github.com/hancom-io | 31 | | 엔씨소프트 | 40 | 136 | https://github.com/ncsoft | 32 | | 버켓플레이스 | 10 | 84 | https://github.com/bucketplace | 33 | | 비바리퍼블리카 | 31 | 1447 | https://github.com/toss | 34 | | 마이리얼트립 | 33 | 34 | https://github.com/myrealtrip | 35 | | 쿠팡 | 18 | 69 | https://github.com/coupang | 36 | | LG전자 | 20 | 87 | https://github.com/LGE-OSS | 37 | | 드라마앤컴퍼니 | 13 | 36 | https://github.com/dramancompany | 38 | | 야놀자 | 2 | 21 | https://github.com/yanolja | 39 | | VCNC | 21 | 14 | https://github.com/VCNC | 40 | | 다나와 | 1 | 8 | https://github.com/danawalab | 41 | | 뱅크샐러드 | 19 | 94 | https://github.com/banksalad | 42 | | 카카오엔터프라이즈 | 18 | 77 | https://github.com/kakaoenterprise | 43 | | 딜리셔스 | 21 | 23 | https://github.com/dealicious-inc | 44 | | 몰로코 | 17 | 119 | https://github.com/moloco | 45 | | 네이버제트 | 10 | 56 | https://github.com/naverz | 46 | | SK텔레콤 | 4 | 32 | https://github.com/sktelecom | 47 | | 컬리 | 10 | 93 | https://github.com/thefarmersfront | 48 | | 티몬 | 8 | 1 | https://github.com/tmoncorp | 49 | | 메가존클라우드 | 8 | 2 | https://github.com/megazone-devops | 50 | | 현대자동차 | 10 | 145 | https://github.com/hkmc-airlab (4)
https://github.com/42dot (6) | 51 | | 포스코ICT | 9 | 6 | https://github.com/poscoict-glueframework | 52 | | 요기요 | 39 | 99 | https://github.com/yogiyo | 53 | | 가비아 | 6 | 14 | https://github.com/gabia | 54 | | 힐링페이퍼 | 3 | 17 | https://github.com/healingpaper | 55 | | 11번가 | 10 | 20 | https://github.com/11st-corp | 56 | | 줌인터넷 | 4 | 7 | https://github.com/zuminternet | 57 | | 네이버랩스 | 4 | 32 | https://github.com/naverlabs | 58 | | 무신사 | 1 | 168 | https://github.com/musinsa | 59 | | SK | 2 | 2 | https://github.com/SK-HOLDINGS-CC (0)
https://github.com/cloudsvcdev (2) | 60 | | 카카오페이 | 1 | 15 | https://github.com/kakaopay | 61 | | 신한은행 | 1 | 7 | https://github.com/Shinhan-Bank | 62 | | 크레프톤 | 0 | 3 | https://github.com/Krafton | 63 | | 카카오뱅크 | 2 | 57 | https://github.com/kakaobank | 64 | | 카카오헤어샵 | 12 | 7 | https://github.com/kakaohairshop | 65 | | 플라네타리움 | 187 | 209 | https://github.com/planetarium | 66 | | 큐브리드 | 43 | 27 | https://github.com/CUBRID | 67 | | 코클 | 14 | 22 | https://github.com/cochlearai | 68 | | 스켈터랩스 | 10 | 11 | https://github.com/SkelterLabsInc | 69 | 70 | 71 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | aiohttp==3.8.3 2 | aiosignal==1.3.1 3 | async-timeout==4.0.2 4 | attrs==22.1.0 5 | charset-normalizer==2.1.1 6 | frozenlist==1.3.3 7 | idna==3.4 8 | multidict==6.0.3 9 | yarl==1.8.2 10 | -------------------------------------------------------------------------------- /src/update-json.py: -------------------------------------------------------------------------------- 1 | # load json 2 | 3 | import json 4 | import asyncio 5 | import aiohttp 6 | import os.path 7 | import sys 8 | 9 | TOKEN = sys.argv[1] 10 | 11 | dir_path = os.path.dirname(os.path.realpath(__file__)) 12 | 13 | async def fetchStat(organization, session): 14 | url = f'https://api.github.com/orgs/{organization}' 15 | print(url) 16 | 17 | async with session.get(url) as response: 18 | data = await response.text() 19 | info = json.loads(data) 20 | 21 | try: 22 | return { 'organization_id': organization, 'public_repos': info['public_repos'], 'followers': info['followers'] } 23 | except: 24 | print(info) 25 | return { 'organization_id': organization } 26 | 27 | async def main(): 28 | file_path = os.path.join(dir_path, '../github.json') 29 | 30 | with open(file_path, 'r') as file: 31 | companies = json.load(file) 32 | 33 | items = [] 34 | async with aiohttp.ClientSession(headers={ 35 | 'Authorization': f'Bearer {TOKEN}' 36 | }) as session: 37 | for company in companies: 38 | await asyncio.sleep(0.3) 39 | stats = await asyncio.gather(*[fetchStat(item['organization_id'], session) for item in company['organizations']]) 40 | print(stats) 41 | 42 | for idx, stat in enumerate(stats): 43 | if len(list(stat.keys())) == 1 and stat['organization_id'] != "": 44 | for org in company['organizations']: 45 | if org['organization_id'] == stat['organization_id']: 46 | if len(list(org.keys())) != 3: 47 | stats[idx] = { 'organization_id': org['organization_id'], 'public_repos': 0, 'followers': 0 } 48 | else: 49 | stats[idx] = org 50 | 51 | items.append({ 'name': company['name'], 'organizations': stats }) 52 | 53 | with open(file_path, 'w') as file: 54 | json.dump(items, file, ensure_ascii=False, indent=2, sort_keys=True) 55 | 56 | # add newline to eof 57 | file.write('\n') 58 | 59 | asyncio.run(main()) 60 | -------------------------------------------------------------------------------- /src/update-markdown.py: -------------------------------------------------------------------------------- 1 | import os.path 2 | import json 3 | 4 | def render_table_header(): 5 | return '''| **회사명** | **레포지터리 수** | **팔로워 수** | **Github 주소** | 6 | |:---|---:|---:|:---| 7 | ''' 8 | 9 | def render_table_row(company): 10 | print(company) 11 | markdown = '|' 12 | markdown += f" {company['name']} |" 13 | 14 | total_public_repos = 0 15 | total_followers = 0 16 | 17 | stats = company['organizations'] 18 | for stat in stats: 19 | total_public_repos += stat['public_repos'] 20 | total_followers += stat['followers'] 21 | 22 | markdown += f" {total_public_repos} |" 23 | markdown += f" {total_followers} |" 24 | 25 | if len(stats) == 1: 26 | markdown += f" https://github.com/{stats[0]['organization_id']} |" 27 | else: 28 | markdown += " " 29 | for idx, stat in enumerate(stats): 30 | markdown += f"https://github.com/{stat['organization_id']} ({stat['public_repos']})" 31 | if idx != len(stats) - 1: 32 | markdown += '
' 33 | markdown += " |" 34 | 35 | markdown += "\n" 36 | return markdown 37 | 38 | START_TAG = '\n' 39 | END_TAG = '\n' 40 | 41 | def inject_result_to_readme(readme_path, injected_content): 42 | with open(readme_path) as readme: 43 | readme_content = readme.read() 44 | start_index = readme_content.find(START_TAG) 45 | end_index = readme_content.find(END_TAG) 46 | 47 | updated_content = (readme_content[0:start_index] 48 | + START_TAG + '\n' 49 | + injected_content 50 | + readme_content[end_index:]) 51 | 52 | with open(readme_path, 'w') as readme: 53 | readme.write(updated_content) 54 | 55 | dir_path = os.path.dirname(os.path.realpath(__file__)) 56 | file_path = os.path.join(dir_path, '../github.json') 57 | 58 | with open(file_path, 'r') as file: 59 | companies = json.load(file) 60 | 61 | # all companies 62 | readme_path = os.path.join(dir_path, '../github.md') 63 | markdown = render_table_header() 64 | 65 | for company in companies: 66 | markdown += render_table_row(company) 67 | 68 | inject_result_to_readme(readme_path, markdown) 69 | 70 | # top 10 companies 71 | readme_path = os.path.join(dir_path, '../README.md') 72 | markdown = render_table_header() 73 | 74 | top_10_companies = sorted(companies, key = lambda item: sum(org['public_repos'] for org in item['organizations']), reverse=True)[:10] 75 | for company in top_10_companies: 76 | markdown += render_table_row(company) 77 | 78 | inject_result_to_readme(readme_path, markdown) 79 | --------------------------------------------------------------------------------