Posted Comments | Comment Form
Saturday, June 04, 2005
When Bad Software Happens To Good People
By Francis W. Porretto
It can put them in a really bad mood. Your Curmudgeon is in such a mood.
Your Curmudgeon is a high expert at the "low end" of systems programming. That's the end where the implementation of control software for peripheral devices -- everything but the processor itself -- is handled. Such programs are called "device drivers," and their implementation is regarded as an arcane art by most persons involved in the production of applications for particular purposes.
But your Curmudgeon knows the problems and challenges well. Indeed, it was he, back in the early Eighties, who first formulated the design principles that underpin all proper real-time design. In consequence, he's unsparing of those who seek to short-weight them.
Herewith, the Curmudgeon's Laws of The Adequate Device Driver:
- The driver shall possess a written specification to which it shall conform in all details.
- The driver shall guarantee specific standards of performance for all its operations.
- The driver shall not imbed features or diagnostic assistance that can cause the system, or an application that uses the driver, to crash.
- The driver shall not compel an application that uses it to block for completion of a requested operation; it shall always offer an "overlapped" option.
- Whenever possible, disjoint operations shall be made concurrent. That is: if the device under control can perform two categories of service simultaneously, the driver designer shall undertake to provide concurrent, overlapped access to them.
- The driver shall not require retrofits to the system, nor shall it require a particular version, revision or patch level of the system, unless the impossibility of otherwise meeting its written specification should require it.
- The driver shall come with the source code of example programs, written in C, that demonstrate all its features and functions. All such programs shall be coded to best commercial practice, shall be clearly documented and commented, and shall refrain from doing so many things within one application that the user's separation of the functions is impeded.
- If the driver is proprietary to one manufacturer's peripheral rather than to a larger class of peripherals, this shall be stated explicitly and conspicuously in the specification.
- The driver designer shall make a maximum-good-faith effort to avoid making the driver dependent upon any factor likely to change without conspicuous, well publicized notice.
- Should a driver fail in use, in such a fashion as to demonstrate that its designer has not complied with the above rules, the driver vendor shall assume full consequential liability for any damages caused, regardless of any provision of the written laws or traditions of commerce to the contrary.
|
Because your Curmudgeon takes limitless pride in his ability to make even the very worst garbage work as he's ordained it shall work, the sweetness of his temperament has been polluted by an evil that passes under the name Fibre Channel. This past week, after months of grueling and unnecessary effort, he finally succeeded. The C.S.O. has recommended that he get thoroughly smashed "so that the healing can begin." What he'd really like to do is execute a few carefully selected vendors. Beware.
Posted by
Francis W. Porretto on 06/04/2005 at 07:38 AM
Print Vers. •
(1)
Trackbacks
Comments
Comment Form | Back to Top/Original Post
You can’t work in this industry without sometimes feeling the temptation to not merely execute certain vendors, but torture them first. Good Christians do not, of course, _give in_ to such temptations, but we do still feel them. 
But yeah…we know. Been there.
Posted by
Matt on 06/04/2005 at 06:22 PM
I feel only slightly safe from your wrath, having been out of the FC game for 18 months now. And I feel only slightly triumphant in saying, you should have seen it in ‘99. Wheeee!
Posted by
Scott Chaffin on 06/08/2005 at 02:48 AM
Comment Form
Posted Comments | Back to Top/Original Post
Commenting is not available in this weblog entry.