
Mailing List Archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Software Design (was: Re: [tlug] Confessions of a closet OpenBSDuser)
Jack Morgan wrote:
> On Fri, Jun 28, 2002 at 01:42:01PM +0900, Stephen J. Turnbull wrote:
>
>>My point is just that (1) as developers we need to aspire to standards
>>higher than "talented amateur," and (2) as users and admins we need to
>>_demand_ higher standards from the development _process_, if we want
>>open source to continue to grow healthily, both in the market and
>>overall.
>
>
> So how can we demand higher standards? Well, for starters as Matt as indirectly
> suggested, just don't use the product.
Or, as I proposed, get involved in the projects upon which you depend
and see how things work behind the scenes.
I am going to pull on my asbestos trousers here and let you know what I
think about OSS in general:
Many Open Source projects are complete shite. So are many commercial
ones, but one thing that the commercial environment *has* foisted upon
some professional coders is formal and careful design.
Now, before I launch into what might be a very messy thread, let me
offer these disclaimers:
1) I am a big proponent of Open Source, but I am not willing to pretend
that it has no problems.
2) I make no claims that all commercial software is carefully designed
and that OSS never is.
Now, the analysis:
Frankly, one of the things that made Unix so much fun in the early days
was The Hack. Whipping out a sweet little hundred or so lines of
assembler or C or Lisp (etc.) in a feverish several hours, and having
the thing *work*! I will admit to many hacks in my own coding, and I
will also admit that there are few things that give me such pleasure as
pushing back from the keyboard, eyes bloodshot, brain dead, and fingers
twitching and numb from too much typing and caffeine at the end of a
crazed hack session that finished right up against a deadline.
However, hacking is hardly compatible with good software design, and
good software design is quite lacking in OSS in general.
Part of this is that a lot of the people who helped make Unix what it is
today are not software engineers and have no real desire to become
involved in software design theory. This is well and good, as many of
the Unix utils that we use so heavily are pretty close to perfect now,
as a result of being very small and specific, and so many people using
them for so long and having access to the source. In a situation like
that, applying a quick fix to make something work for you is not a bad
thing.
However, one thing that Windows users and GUI guys generally point out
is that the Unix environment is not terrible cohesive. This is the
result of the way the system was developed, a common philosphy guiding
many different coders to provide the tools that a usuable OS needs. What
*is* cohesive about Unix, however, is the way things work. A collection
of small and specific tools combine to allow you amazing flexibility.
IDIC,[1] if you will (and I expect that most of you Trekkies out there
will! ;). So Unix works.
Now, let me bring software engineering back into the spotlight. Compare
two highly visible Open Source projects: Linux and FreeBSD (I choose
Free because it is the oldest Berkley based Open Source Unix, AFAIK; I
have heard that Net actually has a cleaner design, so maybe it would
have been a better example). BSD has a pretty careful design, and it
shows. It is generally considered to be more stable than Linux in
extreme situations, and I would argue that the design philosophy is
heavily responsible for this. Linux, on the other hand, has a more
haphazard design, and the Linux developers tend to be more interested in
adding functionality quickly than the BSD guys. The result? Linux has
undergone *many* complete redesigns of major subsystems that were not
particularly well-designed.
I am not dissing Linux here, I am stating what I believe to be The
Facts. Feel free to disagree with me if you feel that I am mistaken.
My contention is simply that the design of a lot of OSS is, to quote a
co-worker, "sloppy". And this sloppiness can exhibit itself in bad ways,
as was the case with the recent OpenSSH vuln. I am not calling the code
sloppy here, just the design.
Elegant and efficient code *is* very important to a successful piece of
software, but so are design and *gasp* documentation.
Coding off the cuff of your sleeve is perfectly fine for software that
is not going to be used in mission-critical or security-concious
situations. When poorly designed code is used in either of the
aforementioned roles, bugs that pop up due to poor design are just going
to provoke statement's such as Jack's, which started this email off. I
do not like what Jack is advocating in this specific case (meaning that
I do not think abandoning OpenSSH is necessary, for the reasons that I
and others have posted previously in this thread), but his is definitely
an option: stop using software in which you are not confident and thus
force the developers to a higher level of quality if they want to "compete".
So what is to be done? Well, I hope that more computer scientists (as
opposed to the "talented amateurs" that Steve mentions) get into OSS. I
think that software engineering is a very promising field, and that good
design is essential for high quality projects that contain more than
1000 or so lines of code. The good news is that university Computer
Science programs seem to be pimping software engineering and object
oriented programming a lot more than they used to. Software engineering
is by no means a perfect discipline, but how can a formal study of
software design hurt!? Simply studying a little theory should raise a
lot of questions and intelligent thought in the mind of a good coder,
and thinking has been scientifically proven to create better software! ;)
Now, my attraction to OOP is that it allows you to implement from a good
design (which should be modular, one would hope) in a way that
expresses itself in the code.
These thoughts are certainly not complete, and not as eloquent as they
probably should be.
I would like to hear what some of you think, especially Steve, whose
previous posts on how XEmacs development works have intruiged me (in a
good way, don't worry).
--
Josh Glover <jmglov@example.com>
Associate Systems Administrator
INCOGEN, Inc.
Home |
Main Index |
Thread Index