Linked by Thom Holwerda on Mon 3rd Oct 2005 14:52 UTC
Linux In a conversation that began as a request to include the SAS Transport Layer in the mainline Linux kernel, there was an interesting thread regarding specifications. Linux creator Linus Torvalds began the discussion saying, "a 'spec' is close to useless. I have _never_ seen a spec that was both big enough to be useful _and_ accurate. And I have seen _lots_ of total crap work that was based on specs. It's _the_ single worst way to write software, because it by definition means that the software was written to match theory, not reality."
Thread beginning with comment 39469
To view parent comment, click here.
To read all comments associated with this story, please click here.
RE: Thank God
by ma_d on Mon 3rd Oct 2005 16:12 UTC in reply to "Thank God"
ma_d
Member since:
2005-06-29

I'd say he's pretty right for writing a kernel. It's a different bear than rocket engines and automobiles (and I don't know why you'd use a spec for a rocket engine, that'd be terribly silly: How much thrust and how big doesn't count as a spec either ;) ).
He's used things that act for the kernel like a spec historically: He used the SunOS API for POSIX compatibility. That's not a spec, but it did what most software engineers use specs for: To tell you what you should be writing without writing it first.

But the kernel isn't tailored to a customer, it's tailored against millions of customers. Its roll is pretty well defined, and where it's not the question is an argument and not a blank (arguing if it should do something, as opposed to having no clue what to do in a situation).

Also, it's a working stable project. They keep a working version that does the full job: Minus the couple of features being implemented at a given time.

If you wrote a spec for Linux it'd instantaneously be broken by 18 different patches anyway. Those aren't going to be mainline patches, but someone like RedHat will probably end up using them. So then what was the point of your spec? The Linux spec would probably end up saying: "Should have this API found here (url), and should be modifiable at a source level in every possible way."

Great spec, that sure tells you what to write.

Now, I certainly hope Linus doesn't think specs are always useless. They certainly have their place, especially around human interaction. But the kernel doesn't do any human interaction ;) . Well, except the proc filesystem.

Reply Parent Score: 2

RE[2]: Thank God
by Tuishimi on Mon 3rd Oct 2005 16:44 in reply to "RE: Thank God"
Tuishimi Member since:
2005-07-06

No it is not a different bear. Operating systems control guidance systems on rockets and other potentially expensive and/or dangerous machines.

I correctly written spec, based off honest and complete requirements, is very beneficial to keeping a project, especially one with many different developers working in small groups that eventually have to tie their code together, in concert.

On the other hand, you might as well just throw away a poorly written spec because it will be entirely useless!!!!!

Reply Parent Score: 2