GitHub 트렌딩 딥다이브 · 2026-06-24 · TrendShift

free-programming-books 딥다이브
— 전 세계 무료 프로그래밍 책·강의·치트시트를 언어별·주제별로 모은, GitHub 최상위 스타 레포

EbookFoundation/free-programming-books. 무료 학습 자원 — 프로그래밍 책 · 온라인 강의 · 치트시트 · 인터랙티브 튜토리얼 · 코딩 놀이터 · 팟캐스트 · 알고리즘 문제집여러 언어로 모은 거대한 큐레이션 목록이다. 비영리 단체 Free Ebook Foundation이 관리하며, 전부 평범한 Markdown 파일로 돼 있다. 오랫동안 GitHub 전체에서 가장 많은 별을 받은 레포로 꼽혀 왔다(집계 시점에 따라 순위는 바뀔 수 있음). 실행되는 앱이 아니라, 1만 3천여 개의 링크를 사람 손으로 선별·검증·다국어화해 온 awesome 리스트의 정점이다. (저장소: EbookFoundation/free-programming-books · 형식 Markdown 큐레이션(Jekyll 사이트) · 라이선스 CC BY 4.0 · ★ 약 391k · 기여자 2,000+ · 관리 Free Ebook Foundation)

목차
  1. 프로젝트 한줄 요약
  2. 왜 주목받는가
  3. 기술 스택 — 어떻게 만들어·검증·발행되나
  4. 아키텍처 — 내용은 어떻게 조직돼 있나
  5. 디렉토리 구조 해부
  6. 학습 포인트 (활용 + 운영)
  7. 시스템 요구사항
  8. 직접 해볼 수 있는 실습 과제
  9. 관련 기술 심화 학습 로드맵
  10. 핵심 키워드 사전
  11. 참고 링크

1프로젝트 한줄 요약

"전 세계 개발자가 함께 채워 온, '무료로 배울 수 있는 모든 것'의 다국어 도서관 목록."

한 줄로

free-programming-books는 무료 프로그래밍 책·강의·치트시트·팟캐스트언어별·주제별·읽는이의 모국어별로 정리한, 비영리 재단이 관리하는 거대한 무료 학습 도서관 카탈로그다.

프로그래밍을 배우고 싶은데 돈은 없을 때, 어디서 무료 자료를 찾을까요? 이 레포가 그 답입니다. 1만 개가 넘는 무료 자원을 자원 종류(책·강의·치트시트·놀이터…), 프로그래밍 언어(파이썬·러스트·고…), 그리고 읽는 사람의 언어(한국어·중국어·스페인어…)로 분류해 두었습니다. 전부 평범한 텍스트(Markdown) 파일이라 누구나 GitHub에서 읽거나, 발행된 웹사이트에서 검색할 수 있습니다. 그리고 이 목록 자체가 전 세계 2,000명 넘는 자원봉사자가 함께 키워 온, 비영리 재단의 공공재입니다.

용어
Free Ebook Foundation (자유 전자책 재단)
자유롭게 쓸 수 있는 전자책의 창작·배포·보존·지속가능성을 돕는 미국 비영리 단체입니다. 이 레포의 공식 관리 주체로, 기부도 받습니다. 원래는 한 사람이 Stack Overflow에 올린 글에서 시작했지만, 지금은 재단이 체계적으로 운영해 '개인 프로젝트'가 아니라 '공공 인프라'로 자리 잡았습니다.
용어
CC BY 4.0 (크리에이티브 커먼즈 저작자표시 4.0)
콘텐츠를 위한 자유 이용 라이선스입니다 — 출처(저작자)만 밝히면 누구나 복사·배포·수정해 쓸 수 있습니다. MIT·Apache 같은 코드 라이선스와 달리, 이 레포는 '코드'가 아니라 '정리된 글(목록)'이 본체라서 콘텐츠 라이선스인 CC BY를 택한 것 — 그 자체로 올바른 선택의 사례입니다.

핵심을 한 번 더 — 이 레포에는 실행할 애플리케이션이 없습니다(최상위에 package.json조차 없습니다). 그래서 이 문서도 "코드 아키텍처"가 아니라, "이 거대한 목록이 어떻게 조직·검증·발행되는가""어떻게 활용해 공부하는가"를 파고듭니다. 특히 1만 개 링크를 자동화로 관리하는 방식은 대규모 오픈소스 협업의 훌륭한 교본입니다.

2왜 주목받는가

"압도적 규모, 비영리 재단의 신뢰, 그리고 'Stack Overflow 글 → GitHub 1위 레포'라는 전설적 역사."

먼저, '흩어진 무료 자료'의 문제

인터넷에는 무료 학습 자료가 넘치지만, 흩어져 있어 찾기 어렵고, 링크는 시간이 지나면 죽습니다. "정말 무료인지", "내 언어로 된 게 있는지", "최신인지"를 일일이 확인하기도 번거롭습니다. 개인이 북마크로 관리하기엔 양이 너무 많습니다.

함정
"검색하면 나오는데 목록이 왜 필요해?"

검색은 광고·유료·낚시 링크에 묻히기 쉽고, '진짜 무료이고 합법적인' 자료만 걸러 주지 않습니다. 또 비영어권 학습자에게 자기 모국어 자료를 찾아 주지도 못하죠. 무엇보다, 한 번 찾은 좋은 링크가 1년 뒤엔 404가 돼 있기 일쑤입니다(링크 로트).

해결
사람이 선별하고, 자동화가 지킨다

이 레포는 자원봉사자가 '진짜 무료'만 선별하고, 자동 검사기(linter + 링크 검사)가 형식·정렬·죽은 링크를 PR마다 점검합니다. 책은 언어별로도 주제별로도 찾을 수 있고, 학습자의 모국어 파일(한국어 -ko 등)도 따로 있습니다. 모두 CC BY로 공개돼 자유롭게 재사용됩니다.

숫자로 보는 규모

지표
총 링크12,991개(books·courses·casts·more 합산)
영어 '언어별 책'153개 섹션, ~1,868 링크 (-langs.md)
영어 '주제별 책'47개 주제 섹션 (-subjects.md)
책 번역본46개 비영어 언어(아랍어~베트남어)
스타 / 기여자391k ★ / 2,000+ 기여자 / 50,000+ 포크
라이선스CC BY 4.0
비유

이 레포 = 전 세계가 함께 만든 무료 도서관 + 사서 시스템. 책(자료)은 자원봉사자들이 기증·검수하고, 사서 로봇(자동 검사기)이 매일 서가를 돌며 "이 책 아직 있나(죽은 링크 아닌가)", "분류가 알파벳순으로 맞나"를 점검합니다. 게다가 각국 언어로 된 분관까지 운영하죠.

전설적인 역사

이 레포의 시작은 Stack Overflow의 한 글("List of Freely Available Programming Books")이었습니다. 그게 점점 커지자 Victor Felder가 협업을 위해 GitHub으로 옮겼고, 지금은 Free Ebook Foundation(비영리)이 관리합니다. 매년 Hacktoberfest에 참여해 신규 기여자를 받아들이고요. '질문 글 하나가 GitHub 최상위 레포가 된' 이 서사가, 오픈소스 협업의 힘을 보여 주는 상징으로 자주 회자됩니다.

3기술 스택 — 어떻게 만들어·검증·발행되나

"내용은 Markdown, 발행은 Jekyll(GitHub Pages), 품질은 PR마다 도는 3종 검사기(npm·Ruby·Python)."

앱 런타임은 없습니다. 이 레포의 '스택'은 문서 + 발행 + 검증 자동화 파이프라인입니다. 흥미롭게도 단순한 목록치고 엔지니어링이 꽤 진지합니다.

① 콘텐츠 & 발행

구성내용
형식100% Markdown. .editorconfig로 UTF-8·LF·4칸 들여쓰기 강제(단, .md의 줄끝 공백은 보존 — 마크다운 줄바꿈이기 때문).
정적 사이트Jekyll + GitHub Pages. remote_theme: pages-themes/minimal, kramdown 마크다운 엔진, jemoji·jekyll-relative-links 플러그인.
발행 주소ebookfoundation.github.io/free-programming-books
검색별도 자매 레포(free-programming-books-search)에서 제목·저자로 전체 검색 제공.
용어
Jekyll · GitHub Pages · kramdown
GitHub Pages는 깃허브가 무료로 웹사이트를 호스팅해 주는 기능입니다. Jekyll은 그 사이트를 Markdown → HTML로 변환해 주는 정적 사이트 생성기이고, kramdown은 그때 쓰는 마크다운 해석 엔진입니다. 즉 기여자가 .md만 고치면, Jekyll이 자동으로 보기 좋은 웹페이지로 바꿔 발행합니다 — 서버·DB 없이 텍스트 파일만으로 사이트가 돌아가는 구조입니다.

② 검증 자동화 — 이 레포의 '진짜 엔지니어링'

.github/workflows/에 정의된 GitHub Actions가 PR이 올라올 때마다 품질을 지킵니다.

워크플로하는 일
fpb-lintNode.js로 형식·알파벳 정렬 검사기(free-programming-books-lint npm 패키지) 실행. 이 레포만의 맞춤 린터.
check-urlsRuby 젬 awesome_bot으로 바뀐 파일의 죽은 링크를 병렬(최대 10) 검사(--allow-redirect 등).
rtl-ltr-linter저장소 안 Python 스크립트(scripts/rtl_ltr_linter.py)로 아랍어·히브리어 등 양방향(BIDI) 텍스트가 깨지지 않는지 검사.
comment-pr린트가 끝나면 결과를 PR에 자동 댓글로 달고 linter error 라벨을 붙임(고치면 제거).
stale / dependabot오래된 PR 자동 정리, Actions 의존성 주간 업데이트.
용어
linter(린터) · CI · RTL/BIDI
린터는 코드/문서가 정해진 규칙(형식·정렬)을 지키는지 자동으로 검사하는 도구입니다. CI(Continuous Integration)는 변경이 올라올 때마다 이런 검사를 자동 실행하는 체계고요. RTL(Right-to-Left)은 아랍어·히브리어처럼 오른쪽→왼쪽으로 쓰는 글자, BIDI는 그런 글자와 영어가 섞일 때 순서가 꼬이지 않게 다루는 규칙입니다. 이 레포는 50개 가까운 언어를 다루다 보니 BIDI 전용 검사기까지 직접 만들었습니다.

참고로 최상위에 package.json은 없습니다. 형식 린터(fpb-lint)는 별도 npm 패키지로 분리돼 있고, 링크 검사는 Ruby, BIDI 검사는 Python — 검증이 로컬 git 훅이 아니라 'PR마다 서버에서 도는' 방식이라는 게 핵심입니다.

4아키텍처 — 내용은 어떻게 조직돼 있나

"세 개의 축 — ① 자원 종류(책·강의·치트시트), ② 언어별 vs 주제별, ③ 읽는이의 모국어."

전체 구조 한 장

free-programming-books/ │ ├── books/ ── 책 │ ├── ...-langs.md ① 프로그래밍 언어별 (153 섹션) │ ├── ...-subjects.md ② 주제별 (47 섹션) │ └── ...-<lang>.md ③ 읽는이 언어별 번역 (46개: ko·zh·es·ja…) │ ├── courses/ ── 무료 강의 (free-courses-<lang>.md, 41개) ├── casts/ ── 팟캐스트·스크린캐스트 (21개) ├── more/ ── 그 외: 치트시트 · 인터랙티브 튜토리얼 │ · 코딩 놀이터 · 알고리즘 문제집 │ ├── docs/ ── 운영 문서(CONTRIBUTING·HOWTO·행동강령, 20~35개 언어로 번역) └── scripts/ ── 검증 스크립트(Python BIDI 린터)

축 ① — 책: '언어별'과 '주제별' 두 색인

같은 책 더미를 두 가지 방식으로 색인합니다. free-programming-books-langs.md프로그래밍 언어별(C·Python·Rust… 153개 섹션)이고, free-programming-books-subjects.md주제별(알고리즘·AI·블록체인·데이터과학·OS·보안·프롬프트 엔지니어링… 47개 섹션)입니다. "파이썬 책"을 찾는 사람과 "머신러닝 책"을 찾는 사람의 길이 다르기 때문입니다.

축 ② — 자원 종류: 책만이 아니다

폴더담는 것
books/책(언어별 + 주제별 + 46개 번역)
courses/무료 온라인 강의(영어 free-courses-en.md만 ~174KB)
casts/팟캐스트 · 스크린캐스트
more/치트시트(~389) · 인터랙티브 튜토리얼 · 코딩 놀이터(~245) · 알고리즘 문제집(~135)

축 ③ — 다국어(i18n): 목록도, 운영 문서도 번역

각 자원 종류는 로케일 접미사(-en·-ko·-zh·-pt_BR…)로 갈라집니다. 놀라운 건 목록뿐 아니라 운영 문서까지 번역된다는 점 — 기여 안내(CONTRIBUTING) 24개, 사용법(HOWTO) 36개, 행동강령 33개 언어. 전 세계 자원봉사자를 조율하기 위한 진짜 i18n 사례입니다.

한 줄의 '문법' — 기계가 검사할 수 있는 형태

# 모든 항목은 알파벳순, 정해진 형식
* [제목](URL) - 저자 (포맷) (라이선스) *(비고)*

# 실제 예시 (Ada 섹션)
* [Ada for the C++ or Java Developer](https://...) - Quentin Ochem (PDF) (CC BY-NC-SA)

엄격한 문법 덕분에 fpb-lint(형식·정렬)와 awesome_bot(링크)이 자동 검사를 할 수 있습니다 — 구성의 규칙성과 자동화가 한 몸으로 움직입니다.

5디렉토리 구조 해부

"내용 폴더(books·courses·casts·more) + 운영 폴더(docs·scripts·.github)로 깔끔히 나뉜다."

free-programming-books/ ├── README.md # 랜딩 페이지(모든 목록으로 가는 색인) ├── LICENSE # CC BY 4.0 전문 ├── _config.yml # Jekyll 사이트 설정(remote minimal 테마, kramdown) ├── _includes/head-custom.html # 파비콘·분석 슬롯 ├── .editorconfig # UTF-8/LF/4칸 (md 줄끝 공백 보존) ├── books/ # 48개 파일 │ ├── free-programming-books-langs.md # 언어별 (153 섹션) │ ├── free-programming-books-subjects.md # 주제별 (47 섹션) │ └── free-programming-books-<lang>.md # 번역 46개 ├── courses/ # 41개: free-courses-<lang>.md ├── casts/ # 21개: 팟캐스트·스크린캐스트 ├── more/ # 치트시트·인터랙티브·놀이터·문제집 ├── docs/ # CONTRIBUTING·HOWTO·CODE_OF_CONDUCT (+다국어) ├── scripts/ # rtl_ltr_linter.py (Python BIDI 린터) └── .github/ ├── dependabot.yml ├── PULL_REQUEST_TEMPLATE.md └── workflows/ # fpb-lint·check-urls·rtl-ltr·comment-pr·stale …
경로역할
books/ · courses/
casts/ · more/
내용 본체. 자원 종류별 폴더, 그 안에서 언어/주제/번역으로 분기.
docs/운영 문서(기여·사용법·행동강령), 20~35개 언어로 번역.
scripts/이 레포의 유일한 '실행 코드' — Python BIDI 린터.
.github/workflows/PR마다 도는 검증 자동화(형식·링크·BIDI·댓글봇·stale).
_config.ymlJekyll 정적 사이트 발행 설정.

6학습 포인트 (활용 + 운영)

"두 가지로 배운다 — ① 무료 자료를 찾아 공부, ② '대규모 협업 자동화'의 본보기로 연구."

활용법 ①

무료 자료를 찾는 세 갈래 길

언어별: books/free-programming-books-langs.md에서 색인으로 내 언어(Python·Rust·Go…) 점프 → 포맷(PDF/HTML) 보고 책 선택. 주제별: ...-subjects.md로 알고리즘·ML·보안 같은 테마 학습. 모국어별: 한국어 -ko 등 번역 파일. 책 너머로 치트시트·놀이터·팟캐스트·문제집까지 있고, 자매 검색 사이트로 전체를 빠르게 찾을 수 있습니다.

활용법 ② — 운영 연구

대규모 오픈소스 + 자동화의 마스터클래스

이 레포는 "1만 개 링크와 2,000명 기여자를 어떻게 봇으로 관리하나"의 산 교재입니다. 기여 깔때기(비-Git 사용자는 이슈, Git 사용자는 PR), 자동 품질 게이트(fpb-lint 형식 검사 → awesome_bot 링크 검사 → BIDI 검사 → 실패 시 봇이 자동 댓글·라벨), 그리고 충돌 라벨링·stale 종료·dependabot까지 — 첫 검수의 대부분을 사람 없이 처리합니다.

규칙을 코드로

큐레이션 정책 = 기여 규칙(CONTRIBUTING)

편집 규칙이 문서로 못 박혀 있습니다 — 진짜 무료만, Google Drive/Dropbox/Mega 같은 파일 호스트 금지, 가장 권위 있는 출처 우선, http보다 https, 추적 파라미터·단축 URL 제거, 그리고 (PDF)·( :card_file_box: archived)·CC BY-SA 같은 표준 표기. '품질을 규칙으로 만든' 좋은 사례입니다.

7시스템 요구사항

"읽기엔 아무것도 필요 없다. 기여해서 검사기를 돌려 보려면 Node/Ruby/Python."

대상요구사항
읽는 사람없음. GitHub이나 발행된 Pages 사이트를 브라우저로 보면 끝(계정·설치 불필요).
기여 최소GitHub 계정 + 기본 Markdown 지식. 브라우저만으로도 기여 가능.
형식 린터(선택)Node.js: npm i -g free-programming-books-lintfpb-lint books casts courses more
링크 검사(선택)Ruby: gem install awesome_botawesome_bot <파일>.md
BIDI 검사(선택)Python 3.11 + python-bidi + PyYAML (RTL 언어 파일을 건드릴 때만)

8직접 해볼 수 있는 실습 과제

"써 보기 → 문법 뜯어보기 → 죽은 링크 고쳐 첫 PR → 린터 돌리기 → 자료 추가 → 자동화 연구."

실습 1 난이도 ★☆☆ 입문

의도대로 써 보기

지금 배우는 언어를 ...-langs.md에서 찾아 무료 책 한 권을 열어 한 챕터를 읽고, 같은 주제를 courses/free-courses-en.md에서도 찾아보세요. 언어별 vs 주제별 내비게이션 감각을 익히는 게 목표입니다.

실습 2 난이도 ★☆☆ 입문

항목 '문법' 해부

아무 5개 항목을 골라 제목 / URL / 저자 / 포맷 / 라이선스 / 비고로 쪼개 보세요. 그리고 형식이 어긋난 한 줄을 CONTRIBUTING 규칙에 맞게 고쳐 쓰면, 린터가 무엇을 검사하는지 체득됩니다.

실습 3 난이도 ★★☆ 중급

죽은 링크 고쳐 진짜 PR 보내기

gem install awesome_bot && awesome_bot books/free-programming-books-langs.md로 404를 찾아, Wayback Machine 보관 URL로 교체하고 ( :card_file_box: archived) 표기를 달아 Pull Request를 올려 보세요. 실제 기여 + CI 루프를 경험합니다.

실습 4 난이도 ★★☆ 중급

fpb-lint 로컬에서 돌리기

npm i -g free-programming-books-lint 후, 일부러 한 항목의 알파벳 순서를 어긋나게 만들고 fpb-lint books로 에러를 확인·수정해 보세요. CI가 잡기 전에 정렬·형식 게이트를 이해하게 됩니다.

실습 5 난이도 ★★☆ 중급

새 무료 자료 추가

목록에 없는 진짜 무료 책/강의를 (검색 사이트로 먼저 중복 확인 후) 알파벳 위치에 맞춰 전체 메타데이터와 함께 추가하고, 템플릿의 "왜 무료인지" 근거를 달아 PR을 보내 보세요.

실습 6 난이도 ★★★ 고급

자동화 읽고 확장 설계

scripts/rtl_ltr_linter.pycheck-urls.yml를 읽고, PR이 열림 → 린트 → 자동 댓글 → 라벨로 흐르는 과정을 그려 보세요. 그다음 "https 대체가 있는 http 링크를 경고"하는 새 검사를 어떻게 추가할지 스케치해 봅니다.

9관련 기술 심화 학습 로드맵

"활용자 트랙과 '오픈소스 운영' 트랙, 두 갈래로."

주차주제학습 내용
1주차활용 마스터언어별·주제별·모국어 내비게이션, 검색 사이트로 자료 빠르게 찾기. 내 학습 자료 셋업.
2주차Markdown · Git 협업GFM 문법, 포크→브랜치→PR 흐름, CONTRIBUTING 규칙. 첫 PR(죽은 링크 수정).
3주차CI · 린팅GitHub Actions 구조, fpb-lint/awesome_bot 로컬 실행, 린터 에러 읽기. 자료 추가 PR.
4주차대규모 협업 · i18n봇 자동화(stale·dependabot·conflict 라벨), 다국어 운영, BIDI 처리. 자동화 스크립트 정독.

10핵심 키워드 사전

"큐레이션 + 발행 + 자동화 용어를 한자리에."

용어의미
큐레이션 / awesome 리스트사람이 선별·검수한 자료 모음. 이 레포는 공식 Awesome 배지 보유.
CC BY 4.0출처만 밝히면 자유 재사용 가능한 콘텐츠 라이선스(코드용 MIT/Apache와 구분).
fpb-lint이 레포 전용 npm 린터 — 형식·알파벳 정렬을 PR마다 검사.
awesome_bot마크다운의 모든 링크를 두드려 죽은 URL(링크 로트)을 찾는 Ruby 젬.
GitHub Pages / Jekyll / kramdown깃허브 무료 호스팅 / 정적 사이트 생성기 / 마크다운 엔진. Markdown을 웹페이지로 발행.
i18n / 현지화언어별 적응. 목록도 운영 문서도 로케일 접미사(-ko·-pt_BR)로 번역.
링크 로트(link rot)시간이 지나며 URL이 죽어 가는 현상. 큰 목록의 최대 유지보수 과제.
CI / 린팅변경마다 자동 검사(형식·링크·BIDI)를 돌려 PR을 통과시키는 체계.
RTL / BIDI오른쪽→왼쪽 문자(아랍어·히브리어)와 그 혼용 시 순서를 다루는 규칙. 전용 Python 린터로 검사.
Free Ebook Foundation이 레포를 관리하는 비영리 단체. 자유 전자책의 창작·배포·보존을 지원.

11참고 링크

"발행 사이트와 검색 사이트를 함께 보면 활용도가 올라간다."