Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 07 Mar 2002 22:05:22 +0000
From:      Mark Murray <mark@grondar.za>
To:        nate@yogotech.com (Nate Williams)
Cc:        cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   Re: cvs commit: src/usr.bin/rwall rwall.c 
Message-ID:  <200203072205.g27M5MRV015704@grimreaper.grondar.org>
In-Reply-To: <15495.56353.158608.817241@caddis.yogotech.com> ; from Nate Williams <nate@yogotech.com>  "Thu, 07 Mar 2002 14:31:13 MST."
References:  <15495.56353.158608.817241@caddis.yogotech.com> 

next in thread | previous in thread | raw e-mail | index | archive | help
> > If an API ir function changes, and a program does not have the
> > information necessary to warn you of any problems that crop up, the
> > code is said to have rotted.
> 
> Then the code has changed.  It has not rotted.  That means whomever
> changed the code has not done a good job.

Maybe; but this is a job that is so close to impossible that it
is effectively so.

Example: recently, some structure elements in <grp.h> were changed from
u_int to gid_t, likewise some group-related function parameter types.
Consistent code style in this case made it easy to look for and check.

I'm looking at some much older Sun code; many functions are prototyped
as

extern foo();

even though they have a perfectly good prototype in some system header.
Ordinarily, fixing the header when a function is updated fixes a problem;
not in this case. Such programs break unpredictably.

> > If you port code to a compiler or system that is different in some
> > important way, and the compiler has not enough information to handle
> > introduced incompatibilities, you have an analagous problem.
> 
> Then you have a compiler problem, not a code problem.
> 
> Neither of the above problems are in effect with your recent lint
> changes.

Wrong. To declare so is to admit you haven't read the diffs.

> > If FreeBSD was to upgrade the C compiler (Gee, when are we ever
> > going to do that?), things _will_ change. These things (if problematic
> > in client code) are usually referred to as code rot if left unfixed
> > or crudely patched over.
> 
> See above.  The code you are fixing has not changed, and the compiler
> still produces correct code.

void main(){printf("hello world\n");}

also produces correct code and runs, but creates problems during compiler
and library upgrades. It his hard to read, and is unpredictable in silly
ways.

> You're changing things for the sake of change, and unfortunately

NO! I am not. If I wanted to do that, I'd do something dumbass like
indent(1) all the code.

> introducing both signficant and insignificant bugs in the process.  Even
> worse, the readability of the original code is *lessened* because you're
> modifying to make automatic tools happy with, rather than the *much*
> more important (IMO) job of making the code reabable for a person who
> needs to modify the code at a later point.

I disagree, although I concede that you may find the changes less readable,
I find them more so. I am also attempting to stay within the spirit of
style(9).

I object to obfuscated C (although the IOCCC is fun), and I think that
code should be well-written and _safe_.

> IMO, the *single* biggest positive to OpenSource programs is the ability
> to see what's going on.  That's what drew me to it 15 years ago, and it
> seems that people are now spending more time making tools happy, rather
> than worrying about Real (tm) bugs.

I am proactively hunting bugs. I am using tools so I can get more of them,
and I am getting rid of cruft so that the tools do their job properly.

I am not perfect, and I make mistakes like anyone else. If I introduce
a bug, I'll take resonsibility for it. My intention is to fix more bugs
(or help expose them) than I create.

> (And, for what it's worth, this sort of things happens at work, and I
> hate it just as much there as I do here...)

Sure. Lets just not get too stuck on the "no changes, OK?" route.

As I said in another mail, I'm negotiable.

M
-- 
o       Mark Murray
\_
O.\_    Warning: this .sig is umop ap!sdn

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200203072205.g27M5MRV015704>