Open-source project
OpenLogicProject/OpenLogic avatar
OpenLogicProject/OpenLogic

Open Logic: a LaTeX textbook you compile into your own course reader

An open-source, customizable intermediate logic textbook

1,392 stars292 forksTeXCC-BY-4.0

At a glance

What is it?
The Open Logic Project is a CC-BY-4.0 licensed collection of LaTeX source for advanced logic, written mainly for philosophers and also usable by computer scientists and mathematicians, that can be rearranged and remixed into a custom textbook. It suits an instructor who wants to choose the chapters for a course and compile them locally rather than distribute a fixed PDF.
Who is it for?
Open Logic fits a philosophy or computer science instructor who teaches a logic course and wants to assemble the reader from chapters, and it suits a department that would rather keep a single LaTeX source of truth than a folder of PDFs.
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 85 days ago.
What is it written in?
Mainly TeX, according to GitHub's language statistics.

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

From daily snapshots

Star history

  • OpenLogicProject/OpenLogic1,392 ★ · +8
Star history
Repository2026-10-172026-11-06
OpenLogicProject/OpenLogic1.4k1.4k

8 Stars in the last 20 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

A source repository, not a book you download

The Open Logic Project is described as an open source, open access collection of texts on advanced logic, aimed mainly at philosophers, but also suitable for computer scientists and mathematicians.

The key sentence in the README is about what the text can be. The text can be rearranged and remixed. You can produce custom textbooks from it, so they take the aim of the course and the preferences of the instructor into account. It is written in LaTeX.

That last clause determines the shape of the whole project. This repository contains LaTeX source files only, and the README is explicit that you should head to the builds site to download PDFs. So the distribution model is inverted relative to a normal textbook: the canonical artefact is a source tree that you compile, and the pre-built PDFs are a convenience published elsewhere.

The audience follows from that. An instructor building a course reader is the primary user, because the ability to select and reorder chapters is the entire point of the project. A student who wants a book to read is a secondary user served by the builds site.

The project is hosted under the OpenLogicProject organisation, with a project website at openlogicproject.org and a wiki for the information that does not fit in the README. The README's own links point readers to both, and it is worth knowing that the README is a short orientation rather than the documentation.

The texts are open access under a Creative Commons Attribution 4.0 International License, and the README adds that permissions beyond the scope of that licence may be available from the project website. The author line is the project itself rather than an individual.

The directory layout is a table of contents you can edit

The repository layout shows how the text is organised, and it is the part that tells you what the project actually is.

At the top level there are the entry points for the LaTeX build: open-logic-complete.tex, open-logic-debug.tex, and the style files open-logic-complete-config.sty, open-logic-config.sty, open-logic-envs.sty and open-logic-locale.sty. Alongside them sit a content/ directory, which holds the chapters, an include/ directory, a sty/ directory for the project's own macros, a courses/ directory, a locale/ directory, a bib/ directory for bibliographies, an assets/ directory, a misc/ directory, a doc directory, and a Makefile.

The presence of a courses/ directory alongside content/ is the design decision that makes this project different from a single book. A course is a selection and ordering of content, and having a directory for course definitions means the same chapter source can appear in several differently shaped readers. The Makefile confirms it, with a courses target that iterates over the subdirectories and runs make in each one.

The two top-level tex files are for different jobs. open-logic-complete.tex is the whole book, and open-logic-debug.tex is the variant used during development and for per-chapter work, since its name and the Makefile's grep over content/.*/.*.tex suggest it is driven by the file list rather than a fixed table of contents.

The bib/ directory and the open-logic-locale.sty file point at two more dimensions of the project. A shared bibliography means citations are managed once and render consistently across every chapter, and a locale style file means the text is prepared for translation, which is a normal expectation for a textbook intended for open reuse.

The .gitmodules file is the last structural clue, and it is the important one. It means some of the content lives in other Git repositories, pulled in as submodules. That is how a chapter written by a different group can be included without being forked into this tree.

Compiling locally, and the two commands the Makefile offers

The Makefile is unusually candid about what it is for, and the first lines set the tone: you do not have to use this Makefile, and the advice is to just run pdflatex on whichever tex file you want to compile. The job of this makefile is to compile everything.

So there are two routes. The simple one is a direct pdflatex run on the file you care about, and the complex one is the Makefile, which requires latexmk and, for the configuration PDF, pandoc.

The main targets are visible in the file. The all target builds open-logic-debug.pdf and open-logic-complete.pdf, and everything additionally builds open-logic-config.pdf and index.html.

The branches target is the most interesting one and the one that explains the git layout. It checks out master, walks every branch other than master, runs latexmk twice for each, and copies the resulting PDFs into a branches/ subdirectory, then returns to master. The index.html target does the same traversal, copying misc/index.start.html and building a list of the branches and their PDFs. In other words, the project publishes a PDF of every branch, and an index page that links them, so a reader can see what a particular fork of the text contains without checking it out locally.

The pattern rule is the workhorse: for a .tex file it runs latexmk with the -pdf, -dvi-, -ps- and -cd flags. The -cd flag matters, because it tells latexmk to change into the directory of the source file, which is what makes the courses/ subdirectory builds work from the top level.

The configuration PDF is built differently, from the style file rather than from a tex file. The rule greps for comment lines in open-logic-config.sty, cuts them off, and pipes the result through pandoc as markdown, with the date taken from the last git commit touching that style file. So open-logic-config.sty carries its own documentation in comments, and that documentation is what the configuration PDF renders.

The clean and clean-all targets run latexmk with -c and -C respectively, the standard way to remove auxiliary files and then everything.

Where the customisation actually happens

The customisation is configured in the style files rather than in a separate build script, and understanding the split is what makes the project usable.

The file open-logic-config.sty is the one the Makefile treats as the configuration document, and the one whose comments become the configuration PDF. It is the natural place to set what goes into a build: which chapters are included, what metadata the book carries, and the per-course options. The existence of open-logic-complete-config.sty next to it tells you there is a variant for the complete volume.

The environment file, open-logic-envs.sty, holds the LaTeX environments and macros the chapters use, and the locale file handles the internationalisation. The sty/ directory holds additional style content, and include/ holds shared inclusions.

What makes the remixing claim work is that chapters are not written as one long document. They sit under content/ as separate files, which is why the debug build can be driven by a grep over content/.*/.*.tex, and why a course directory can list a subset. The Makefile's own advice, to just run pdflatex on whichever tex file you want, makes sense precisely because each course has its own entry point that pulls in the chapters it needs.

For an instructor, the practical workflow the project implies is this: fork the repository or a branch of it, edit the configuration to select and order the chapters, compile, and keep the result under your own course's name. The branches target and the index.html rule show that the project expects people to work this way, since the infrastructure for publishing per-branch PDFs exists.

The trade-off is worth stating. This is a text engine with a set of conventions rather than a tool with a user interface. There is no menu for picking chapters and no export button, and everything you change you change in TeX source. For a course that has settled on its readings, that is a one-off afternoon of work. For a course that is still moving, or for a student, it is a poor fit.

Licence, versions and a project that is quiet but alive

The licensing position is unusually clear for a textbook, and it is the strongest reason to look at this project.

The texts are released under the Creative Commons Attribution 4.0 International License, and the README embeds the licence with an explicit attribution statement for the text. Attribution 4.0 is the permissive end of the Creative Commons family: you may copy, distribute and adapt the text, including commercially, as long as you give credit, and the licence does not restrict derivative works the way the share-alike variants do. For a textbook that a university wants to print, translate, cut up or excerpt, that matters.

The README also points out that permissions beyond the scope of the licence may be available at the project website, which is the usual arrangement for a project that wants to accommodate institutional republication.

The version history is thin, and that reflects the nature of the artefact rather than a lack of work. The repository has a single release tag, v1.0-a, an Alpha, dated 2015-05-04. There is no semantic version series because a textbook does not have a compatibility contract with its users. The repository is not archived, and the last push was on 2026-08-14, on the master branch, so the source is still being edited even though the tag list stopped in 2015.

That combination, one alpha tag from a decade ago and commits continuing since, tells you how to read the version information. The tag is not a usable release point, because the text has changed a great deal since. What matters is the state of master, and the project website and wiki are where the current state is described.

The build status badge points at a GitHub Actions workflow named build.yml, so the continuous build that produces the published PDFs runs from the same repository, which is a good sign for a source-only project: the thing you clone is the thing that gets built.

Editorial conclusion

Open Logic fits a philosophy or computer science instructor who teaches a logic course and wants to assemble the reader from chapters, and it suits a department that would rather keep a single LaTeX source of truth than a folder of PDFs. It is the wrong choice for a student who wants a finished book, since the repository ships source only and the PDFs live on a separate builds site, and it is the wrong choice for a course with no LaTeX toolchain and no appetite for maintaining one. Before you commit, read the configuration in open-logic-config.sty, because that is where the chapter selection and the metadata are set, and check the wiki for the current instructions, since the README itself points there for anything beyond the build.

Frequently asked questions

Where can I download the Open Logic textbook PDFs?

The repository contains LaTeX source files only. The README directs you to the builds site to download PDFs, while the project website at openlogicproject.org and the project wiki hold the general information.

How do I compile the Open Logic textbook?

The Makefile says you do not have to use it and advises just running pdflatex on whichever tex file you want to compile. The makefile itself requires latexmk, and pandoc for the configuration PDF, and it compiles everything including the per-course builds and the per-branch PDFs.

Can I build a custom textbook from the Open Logic texts?

Yes. The README says the text can be rearranged and remixed and that you can produce custom textbooks from it so they take the aim of the course and the preferences of the instructor into account. The repository has a courses/ directory, and the configuration is set in open-logic-config.sty.

What licence does the Open Logic text use?

The texts are released under the Creative Commons Attribution 4.0 International License, and the README notes that permissions beyond the scope of that licence may be available at the project website.

Is the Open Logic Project still being worked on?

The repository is not archived and the last push was on 2026-08-14 on the master branch. The only release tag is v1.0-a, an Alpha from 2015-05-04, so the tag list does not reflect the current state of the text.

Official sources

  1. License: CC-BY-4.0
  2. OpenLogicProject/OpenLogic on GitHub
  3. Project website
  4. README
  5. Releases

Was this useful?