[Fsf-friends] Ensuring quality and performance of free software
Ramanraj K
ramanraj@md4.vsnl.net.in
Mon Dec 22 20:52:04 IST 2003
The words "quality and performace" here are quoted from the GPL.
Recently, Fitzgerald Joy Sylvester <fjsylvester@rediffmail.com> asked
why free software has no warranty, and if there is warranty, we could
get more support for our cause, highlighting its necessity in mission
critical applications. Mahesh Pai <paivakil@yahoo.com> has already
answered the query that entities could provide warranty for a fee.
But, more fundamentally, software could not be seen as "goods"
attracting a warranty, particularly when it is given away free.
Software code is governed by copyright law. Software is more like a
book on mathematics, with a difference, in that both men and machines
can read it and make sense out it. It would be absurd to expect a
warranty for the contents of a book. Authors place their whole
reputations on what they write, and this is the best check on ensuring
the quality of a work. Careless authors are soon forgotten and their
works are discarded both by the public and the publishers. In the
ultimate analysis, it the quality of the work that matters, and since
computers can execute an author's code, we can expect performance in
accordance with a given specification.
Now, how to ensure quality and performance of software?
There is only one solution for this: NEVER TRUST YOUR COMPUTER
Sajith has again raised the question of warranty from another angle,
about trusting free software. RMS has already explained why "Trusted
Computing" is only "Treacherous computing". Here, I attempt to anwer
the question about ensuring quality and performance of software, that
would make warranties redundant and needless.
In the case of free software, the source code is always made available
to the user under the terms of the GPL. The user can study and
understand how the program works, and satisfy himself about its quality
and the performance that could normally be expected. This is the most
important quality of free software that makes it trustworthy.
But merely because a software is free along with source code, it does
not automatically ensure that the progam will work well as expected
according to the program specification. An alert user ought to be able
to verify the output from a program for himself, and satisfy himself
about the correctness of an output.
Now, before we get down to software, a more general issue remains to be
discussed. Software deals with data. Any software generally receives
input, processes the input and gives an output. Since millions of
instructions can be processed efficiently by a computer, we save time.
Time and convenience are the two important reasons we use a computer to
deal with our data. We give the input, and we give rules for
processing, and we know what outcome to expect.
Let us take a simple program wc which prints the number of bytes, words,
and lines in files. If you look at the info page for wc, we will
further see that by word, we mean whitespace-separated words, and by
lines we mean newlines. Create a sample file called test.txt with the
following two lines:
This is a test file.
The wc command is the test candidate.
Invoke wc as follows:
# wc test.txt
2 12 59 test.txt
The output means that the file test.txt has 2 lines, 12 words, and
occupies 59 bytes. Now, to test if the output is correct we can
manually open the file test.txt and count the words, lines and bytes.
We can also try checking the result using other programs.
# ls -al text.txt
-rw-r--r-- 1 ramanraj users 59 Dec 14 09:20 test.txt
To examine the bytes in the file test.txt, we could do an octal dump as
follows:
# od test.txt
0000000 064124 071551 064440 020163 020141 062564 072163 063040
0000020 066151 027145 052012 062550 073440 020143 067543 066555
0000040 067141 020144 071551 072040 062550 072040 071545 020164
0000060 060543 062156 062151 072141 027145 000012
0000073
We could invoke od with -bc option:
# od -bc test.txt
0000000 124 150 151 163 040 151 163 040 141 040 164 145 163 164 040 146
T h i s i s a t e s t f
0000020 151 154 145 056 012 124 150 145 040 167 143 040 143 157 155 155
i l e . \n T h e w c c o m m
0000040 141 156 144 040 151 163 040 164 150 145 040 164 145 163 164 040
a n d i s t h e t e s t
0000060 143 141 156 144 151 144 141 164 145 056 012
c a n d i d a t e . \n
0000073
We can count that the words separated by white spaces are indeed 12, and
the newlines are 2 (represented by ascii 012), and we can count the
bytes and see that the total is indeed 59. We could verify the output
from the wc program in a variety of ways through other programs.
The whole point is: We should be able to verify the program output with
our senses.
We need not take for granted what is output, but we can always check the
validity of the output in other ways. In the free software world, a
reasonable means of checking would always be in sight or available to
the user. I request you to insist upon a means of checking the output
directly with your senses.
I started out my adventure in programming with a simple script that will
do fair rent calculation, as per Section 4 of the Tamil Nadu Buildings
(Lease and Rent Control) Act. This program is a free software script,
and available at http://personal.vsnl.com/ramanraj/kr_tnfrc.html The
law applicable is given there, along with the source code. I have
included three test cases based on reported cases. When you give the
details required and give the command, calculate fair rent, the answer
along with the reasoning done is displayed, so that you can verify the
result for yourself in simple steps, with a piece of paper and pencil.
When you can verify the result directly with the rules applicable, you
need not even worry about the source code, that may be difficult to
follow for most average users.
Quality and performance can be made available in other better ways.
Now, does it really matter that free software comes without a warranty?
More information about the Fsf-friends
mailing list