The Python adaptation of SICP is an open-source community effort. The software and data required for making these web pages and the PDF edition are contained in the github repository source-academy / sicp, and improvements, extensions and discussions are handled in this repository using git.
Martin Henz started translating SICP to JavaScript in 2008. He obtained the original LaTeX sources of the second edition from Gerald Jay Sussman, and converted them to a custom-built XML format. The original sources are retained in the XML format, which allows for generating the comparison edition. A processing system written in XSLT resulted in the first version of the JavaScript adaptation around 2009, covering the first few sections of SICP. The content of SICP JS contained in the XML files are undergoing continuous improvement by the adapters Martin Henz and Tobias Wrigstad, and by the community of SICP JS readers, using the github repository.
Martin Henz started translating SICP to Python in 2026, based on the JavaScript edition. He and his colleagues Boyd Anderson and Sanka Rasnayaka at the School of Computing at the National University of Singapore are using SICPy in Semester 1 of the Academic Year 2026/27.
In the book, program fragments often require other program fragments. In order to collect and execute the necessary programs, the corresponding SNIPPET tags in the xml files include REQUIRES tags. The XML processors use these tags in order to assemble the executable programs. The project thus can be seen as a literate programming system, custom-made for authoring SICP JS.
The software for Interactive SICPy was designed and implemented by Samuel Fang in 2021 for SICP JS. The XML textbook sources are translated to a JSON format, which are then read and rendered by a dedicated component of the Source Academy.
The Scheme/Python comparison edition provides a side-by-side comparison between the original Scheme version of SICP and SICPy. Earliest precursor of the comparison edition is the mobile-friendly web edition of SICP JS, designed and implemented by Liu Hang in 2017. Feng Piaopiao improved the system in 2018. He Xinyue and Wang Qian developed the software for the current comparison editions in 2020 for SICP JS. Formulas are retained in the resulting HTML files and are typeset by the reader's browser on the fly, using the MathJax system. The comparison edition is maintained by Martin Henz.
The early PDF editions (2010-2018) used XSLT for generating LaTeX from the XML sources. The first Node.js version of the PDF edition was designed and implemented by Chan Ger Hean in 2019 for SICP JS. Martin Henz is the main developer of this system.
Most figures are adapted from the HTML5/EPUB3 version of SICP by Andres Raba. The figures are licensed under Creative Commons Attribution-ShareAlike 4.0 International License (cc by-sa). JavaScript adaptations of figures were done by Tobias Wrigstad using Inkscape and gratuitous use of sed.