Source code from Apollo 11 open-sourced
googlecode.blogspot.com
googlecode.blogspot.com
From mixmax's fastcompany link: "Ted Keller, the senior technical manager of the on-board shuttle group, flies to Florida where he signs a document certifying that the software will not endanger the shuttle". That's what's required for real engineering in the end: an engineer to sign off on the plans and to take responsibility if the product fails and people die.
This is alien to most software development, where "software engineering" is, at best, a useful metaphor. This is real software engineering.
The mistake is to believe that making planes fly through the air and making 140-character text messages fly through the net are the same problem, or thinking that one is "real" engineering and the other is not. I would not want your average Rails developer writing the code that keeps my flight flying. I also would not want your average avionics software developer writing consumer web software.
Thats why, its good code. ;)
I am not sure of that part. I think I would like to be able to trust my software just a little more. Not working properly is NOT OK.
When Reddit was young, I sent a couple bug reports and feature requests to spez & kn0thing. Within an hour, they had the code done and up on the live site. The cost of that was that their users did the QA, which is simply not acceptable for avionics. But I'd rather have a feature done in an hour that may or may not work than wait a month for a feature that I know will work, but is probably rendered obsolete by developments elsewhere on the web.
The system failed.
The fact they fixed it quickly is a seperate issue.
Don Eyles, a 23-year-old self-described "beatnik" who had just graduated from Boston University and was set the task of programming the software for the Moon landing. http://news.ycombinator.com/item?id=707801
I read somewhere (can't find the link) that Dijkstra said he spoke to Eyles, and asked how he got everything correct. He replied that just a few days before launch, the software simulated the moon's gravity as repulsive, before he fixed it... "so the astronauts were lucky there". Probably apocryphal hearsay, but does chime with the "beatnik" story. EDIT Found it: http://www.reddit.com/r/programming/comments/91vki/don_eyles...
The rope core memories would become know as "LOL memory" after the "little old ladies" who knitted together the software at a factory just outside Boston.
These ladies would sit in pairs with a memory unit between them, threading metres and metres of slender copper wires through and around the cores.
"It's an extremely time-consuming process and it meant that the programs had to be finished and fully tested months in advance," said Mr Eyles.
Dijkstra spoke to Joel Aron (not Eyles), "head of IBM's Federal Systems Division which had been responsible for the software of the moonshot". It wasn't specifically in the lunar module, but somewhere in the 40,000 LoC. However, the bug was that the moon was repelling; and it was found by accident, 5 days before launch.
See Dijkstra say it in person, at 15:00 in this interview (context starts at 13:40): http://www.cs.utexas.edu/users/EWD/video.html (I haven't linked directly to the 300MB download). Great interview BTW (dutch with subtitles).
http://www.google.com/codesearch/p?hl=en&sa=N&cd=10&...
Which is talked about here: http://history.nasa.gov/alsj/a11/a11.1201-pa.html
In the interview, he mentioned that the folks at MIT wrote the program in high-level-language called MAC (MIT Algebraic Compiler) and hand-compiled it to the machine language of the actual computer which I take is what we see at google code.
Wouldn't it be great if the MAC source would also be available for us to see? After all, that is the context in which the actual software engineering took place. Looking at the resulting assembly might give a somewhat distorted impression of how the work was done.
# HONI SOIT QUI MAL Y PENSE # NOLI SE TANGERE
http://code.google.com/p/virtualagc/source/browse/trunk/Lumi...
And it's not hack-free:
The Block II AGC also has the mysterious and poorly documented EDRUPT instruction (the name may be a contraction of Ed's Interrupt, after Ed Smally, the programmer who requested it) which is used a total of once in the Apollo software: in the Digital Autopilot of the Lunar Module. At this time, while the general operation of the instruction is understood, the precise details are still hazy, and it is believed to be responsible for problems emulating the LEM AGC
Better that it just remains curious, and that we don't use AGC Version 1.0 for future launch attempts ..
http://www.computerhistory.org/collections/accession/X37.81A
Notice all the wire wrap!
http://archive.computerhistory.org/resources/access/physical...
The docent said that the computer would be potted before an actual launch.
http://www.fastcompany.com/magazine/06/writestuff.html?page=...
I wouldn't put too much faith in SEI CMM. The last company I worked for set up an offshore software shop and staffed it with fresh graduates. A year later they were SEI CMM Level 5 certified, boasted the company. This, mind, was despite them never having delivered a complete project... And much of their actual work being done by "contractors" (who were people laid off in the UK and rehired there at vast expense).
I wonder what the Shuttle source looks like. I'd imagine its in a higher level language (C?), and that it's likely been rewritten several times since the 70s. It's amazing to me that people wrote this.
Found it after following up the http://ibiblio.org/apollo link in a file header. :)
I sometimes wish that low percentages of comments would generate a fatal error!
Haskell has a `mode' called Literate Haskell, were everything is a comment, unless you specify otherwise (e.g. enclose it in \begin{code} and \end{code} pairs).
I don't yet seem to be at that level of evolution yet.
Btw, did you know that the 'SAIL' assembler/debugger was called 'FAIL' ?
I laughed quite a bit at that :)
"GAINBRAK,1 # NUMERO MYSTERIOSO"
Now I just have to get an Apollo to use it. ;-)