When Apollo 11’s Lunar Module landed on the Moon 40 years ago today, the software that helped take humans to another celestial body was essentially built using paper-tape rolls and thick cardstock that was punched with special holes.
It wasn’t open source in the sense we know today, but it was built for NASA under contract, then was tested, modified and fine-tuned by NASA engineers in ways that are similar to open source projects nowadays.
“Well, in today’s definition it was open source–the source code was publicly available” to mission engineers, said John “Jack” Garman, who was a 24-year-old NASA computer engineer when Apollo 11 lifted off July 16, 1969, on its way to the Moon. “But ‘open source’ in the Linux sense generally means that anyone can contribute additions and improvements, and of course that wasn’t the case for the Apollo software.”
Garman helped test and re-write the software before Apollo 11 ever left the ground, then continued to monitor it while it was used in the onboard computers. “The software was programmed on IBM punch cards. They had 80-columns and were ‘assembled’ to instruction binary on mainframes… and it took hours.”
During the mission, most of the software code couldn’t be changed because it was hard- coded into the hardware, like ROM today, he said. But during pre-launch design simulations, problems that came up in the code could sometimes be finessed by Garman and the other computer engineers using a small amount of erasable memory that was available for the programs.
“Some of us NASA engineers who also worked in Mission Control would [literally guess and] ‘make up’ minor changes to the software to work around [hypothetical] ‘failures’ that were thrown at the flight control team during simulations,” Garman said. “In a sense, that fits the ‘open source’ model, but only within the NASA and NASA Contractor domain.” NASA staff members had full access to the program code through their contracts with the Apollo hardware vendors, so they were able to change the code to make the program behave differently as needed.