Open-source project
EbookFoundation/free-programming-books avatar
EbookFoundation/free-programming-books

Free-Programming-Books: A Community-Maintained Index of Free Learning Resources

GitHub describes it as :books: Freely available programming books. The repository metadata lists Python as its primary language. The metadata lists the CC-BY-4.0 license. This article stays within the project description and details documented in the GitHub repository README.

401,593 stars67,850 forksPythonCC-BY-4.0

At a glance

What is it?
The EbookFoundation/free-programming-books repository is a large, multilingual index of freely available programming books and related resources. It is a curated list rather than a hosting service, and its value depends on continuous community contributions and the health of external links.
Who is it for?
Adopt this repository if you need a broad, multilingual starting point for finding free programming books and are willing to verify each link before relying on it. Avoid it if you require a curated, quality-assured collection with active editorial review, or if you need offline access or guaranteed availability.
Can I use it commercially?
Yes, with credit. CC-BY-4.0 allows commercial use as long as you credit the authors and indicate what you changed. It is written for creative content, so check how it applies to any code.
Is it still maintained?
Yes. The repository last received commits 2 days ago.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on November 14, 2026, and from our analysis. They are not legal advice.

From daily snapshots

Star history

  • EbookFoundation/free-programming-books401,593 ★ · +7,265
Star history
Repository2026-08-132026-11-14
EbookFoundation/free-programming-books394.3k401.6k

7,265 Stars in the last 93 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

A Community Index, Not a Book Host

The free-programming-books repository solves a specific problem: it aggregates links to freely available programming books and related learning materials in one place. The target audience is anyone who wants to find free learning resources without searching across dozens of websites. The project does not host books. It is a list of links, organized by language and subject. The README states that the list originated from a StackOverflow question and was moved to GitHub for collaborative updating. The Free Ebook Foundation, a not-for-profit, now administers the repository. This governance model matters because it gives the project a stable home and a clear mission, but it does not change the fundamental nature of the project: it is an index.

How the List Is Organized and Searched

The repository structure is straightforward. The main list is split into two English files: one sorted by programming language and one by subject. Then there are separate files for dozens of other languages, from Arabic to Ukrainian. Each file is a markdown document with links to books and other resources. There is also a search interface at a separate URL, which the README links to. The search page includes a form that accepts a book or author name and submits to the search site. This organization means that finding a resource requires either browsing the correct language file or using the search tool. The separation by language is a practical choice.

Getting Started and Contributing

There is no installation or setup for using the list. You simply visit the repository on GitHub or the associated website. To contribute, you follow the CONTRIBUTING.md file. The README points new users to a HOWTO.md file, which is aimed at people new to GitHub. There is also a code of conduct. The contribution process is the core of the project. Because the list is community-maintained, anyone can submit a pull request to add or remove links. The README shows badges for good first issues and help wanted, which indicates that the maintainers actively seek contributions. This is a low-barrier way to participate, but it also means that the quality of the list depends on the vigilance of reviewers.

Licensing and Legal Boundaries

The repository itself is licensed under CC-BY-4.0. That license applies to the list of links and the markdown files, not to the books themselves. Each linked book has its own license, which may or may not permit redistribution or modification. Users who want to reuse a book, not just read it, must verify the license on the target site. The CC-BY-4.0 license on the repository means you can reuse the list with attribution, but it does not grant any rights to the content of the linked books. This boundary is easy to miss, and the project would benefit from a clearer warning.

Maintenance and the Risk of Link Rot

The repository is actively maintained, with a last push on 2026-11-01 and no archived flag. However, the maintenance model is entirely dependent on community contributions. Over time, links can break as websites go down or move. The project has a large number of entries, which makes manual verification impractical. This is a genuine failure mode. A user who clicks a link may find a dead page. The project's reliance on external hosting means that the quality of the list degrades without constant attention. The search site lives at a separate address (free-programming-books-search), so its freshness is uncertain.

Alternatives and Different Approaches

A real alternative is a curated, editorially reviewed collection like O'Reilly's free content or a university's open courseware list. Those alternatives provide a smaller but more vetted set of resources, often with quality checks and stable hosting. The difference in approach is that free-programming-books relies on crowdsourcing and openness, while a curated collection relies on a central authority that selects and verifies. Another alternative is a search engine query, which gives you full coverage of the web but no curation. The repository sits between those two: it is more curated than a raw search, but less vetted than a professional list. For a user who wants a quick, broad list, the repository is useful. For a user who needs guaranteed quality, a curated alternative is safer.

A Practical Assessment for Engineers

For an engineer deciding whether to use this repository, the main question is whether the convenience of a large index outweighs the need to verify links. The list is useful for discovering titles you did not know existed. The multilingual coverage is a strength, especially for non-English speakers. The project's governance under the Free Ebook Foundation adds legitimacy. However, the lack of quality control and the risk of dead links are real. The repository is a tool, not a service. You must be willing to check each resource before investing time in it. The project is not a replacement for a library or a publisher. It is a starting point.

Editorial conclusion

Adopt this repository if you need a broad, multilingual starting point for finding free programming books and are willing to verify each link before relying on it. Avoid it if you require a curated, quality-assured collection with active editorial review, or if you need offline access or guaranteed availability. Before using any resource, check the link, the license, and the publication date. The repository is best used as a discovery tool, not a definitive library.

Frequently asked questions

What are some free books on programming?

The English titles live in two Markdown files: books/free-programming-books-langs.md groups them by programming language and books/free-programming-books-subjects.md groups them by subject. Other languages have their own files under books/, such as the Chinese, Japanese, German and Russian lists.

What are the best programming books for beginners?

The search form takes only a book or author name, with no difficulty filter, so there is no built-in beginner view. The practical route is books/free-programming-books-langs.md for a language you are starting from, then reading the entries to see which one fits.

What is the best way to learn programming for free?

The repository is a pointer list rather than a curriculum: it does not order the books or prescribe a path. Browsing happens at https://ebookfoundation.github.io/free-programming-books/, with a separate search site, and the top level also holds courses/, casts/ and more/ directories for resources that are not books.

Official sources

  1. Official documentation
  2. Official README
  3. Project repository
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/ebookfoundation-free-programming-books.svg)](https://hysenlabs.com/projects/ebookfoundation-free-programming-books)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/ebookfoundation-free-programming-books.svg)](https://hysenlabs.com/projects/ebookfoundation-free-programming-books)

Was this useful?