├── .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 |
--------------------------------------------------------------------------------