From: Bertrand Meyer <Bertrand.Meyer@eiffel.com>
Subject: Re: Interface/Implementation (was Re: Design by Contract)
Date: 1997/08/27
Date: 1997-08-27T00:00:00+00:00 [thread overview]
Message-ID: <34046FAD.52BFA1D7@eiffel.com> (raw)
In-Reply-To: 3404696D.4487EB71@eiffel.com
Here is the reasoning behind the Eiffel approach to
separating interface from implementation. It was designed
in full knowledge of the Modula-2/Ada-83 mechanisms, in an
attempt to draw the lessons of both their advantages and
limitations, taking advantage of newer software technology
and of O-O principles.
The goals are clear:
G1. Allow people to consider separately the
interface and the implementation of a module
-- class in Eiffel, module in Modula, package
in Ada.
G2.(Closely related to G1.) Allow a developer
to write a client class of a class C without
knowing what C's implementation is, or even
prior to the existence of such an implementation,
as long as C's interface is known.
G3 (Closely related to G2.) Allow a project leader
to restrict the list of who can access the
implementation of a module, allowing others access
to the interface only. This is also of interest
to vendors of reusable components, who may want
to make source not available to their customers
in some or all cases. (Whether this is good or
bad is another topic; it is a fact that some
vendors want this possibility.)
G4. Allow multiple implementations of a given
interface, including the possibility for
clients to switch easily and implicitly
between various implementations at run time
(not possible, at least not possible simply,
in Modula/Ada). This of course will take advantage
of polymorphism and dynamic binding.
G5. Minimize the programmer's work. In particular
it is crucial to avoid forcing the programmer
to duplicate text. Duplication is almost always
bad, especially with respect to ease of maintenance,
one of the central goals of software engineering.
It also hampers reuse, reliability (when you
duplicate code, you duplicate its bugs, and
the more software you write the more likely
it is that it will include bugs), and ease
of change.
G6. Favor seamlessness: the Eiffel method emphasizes
the notion of a "single product" around which
all software development activities revolve.
This is in opposition to the traditional
multi-product view ("the analysis", "the
design", "the documentation", "the code"
-- including ,for the latter,
"the interface", "the implementation").
We may not always succeed in putting
everything into one place (i.e. we will probably
retain the need for some external documentation)
but will try to get as close as possible to this
goal; the benefits for the software process
are enormous.
The Eiffel policy is a result of these considerations:
E1. If a class has a single implementation, write
everything at the same place: interface and
implementation. This directly addresses
requirements G5 and G6 and differs markedly
from the Modula, Ada etc. practice of
writing the interface twice (once in the
interface part, once in the body), which in
my opinion is a nuisance, not just because
of the initial duplication of work but because
of the added maintenance burden.
E2. Provide tools in the environment to produce
the interface of a class, automatically from
the class text. In Eiffel environments this is the
role of the short and flat-short tools, which
reconstruct the interface from the class.
In ISE Eiffel you click on the "short" or
"flat-short" icons of a Class Tool and the
contents change to show the interface,
pretty-printed, or in HTML format (with
references to other classes turned into
hyperlinks), RTF, FrameMaker etc.
E3. A generalization of E2 follows from the
observation that instead of just
"implementation" and "interface" we should be
talking about various *views* of a class, and
rely on the power of the *computer* to produce
these views as we need them.
The implementation is one such view; the interface
is another; but there are more. Short and flat-short
are indeed examples of different abstract views
(short considers only the features introduced
in the class; flat-short integrates inherited
features too). An environment can also provide
many intermediate views, such as "the features
available to a client class C" (i.e. the interface
of the class as viewed by the author of C),
"the interface as available to a descendant
class", etc. This is only possible because we
do NOT require the class author to write the
interface separately; generalized, this idea
would become absurd since it would mean that
you have to write lots of different interfaces
(views) for each class. Instead, the Eiffel view
is that you should write the class -- the single
product, see goal G6 -- and concentrate on
equipping it with everything that it needs:
useful features, complete preconditions,
expressive postconditions, insightful class
invariants, efficient implementations. You don't
want to be bothered by e.g. having to write
routine interfaces twice.
Then if you or one of your client authors needs
information about apecific properties of the
class you will rely on tools to get it.
Like many other differences with common languages,
this Eiffel policy results from a difference of
appreciation as to what should be done by humans
and what by the computer. We want to let humans
concentrate on creative, insightful work (e.g.
designing a class), and rely on the computer
for automatable and potentially tedious tasks.
It is the same spirit that explains Eiffel's
policy (in contrast variously with Ada, C++
etc.) with respect to dynamic binding, garbage
collection, routine inlining (in the ISE
implementation), etc.
E4. There remains the case in which you do want to
write the interface as a separate module, because
it can have several implementations. The technique
then is easy: write it as a deferred class; then
the various implementations can inherit from it.
But then it will truly deserve to be called a
"specification" (the Ada term) because, unlike
other languages, Eiffel makes it possible to
attach true semantic properties to the components
of a deferred class: routine preconditions, routine
postconditions, class invariants. (This is missing
from Ada "specifications" and Java "interfaces"
and, in my opinion, regrettably limits their
usefulness.) These specification elements
are binding on all redeclarations in descendant
classes ("effectings" in Eiffel terminology,
i.e. a descendant providing an actual implementation
for a feature that in the parent was deferred,
i.e. specified but not implemented).
E5. In case E4, it is of course possible to switch
at run time between the various alternative
implementations provided, thanks to polymorphism
and dynamic binding. If I have t: TABLE [SOME_TYPE]
where TABLE has various descendants providing
alternative table implementations, I can write
t.search (some element)
without knowing what kind of table `t' denotes
(although I know it can only be a table, thanks
to the type rules). Then various executions of the
call, including during the same session of the system,
can refer to different implementations and
consequently use different versions of `search',
automatically selected by the dynamic binding
mechanism so that they will always be the appropriate
one in each case.
E5. Sometimes you may start out with a concrete
class of which you consider only one possible
implementation (case E1), and hence not bother
to write a separate deferred class. Then later
you may realize that you need other implementations
too. Then the switch to case E4 is easy: just
use a "short"-like tool to produce a deferred class
from the original and rewrite that original to
inherit from the deferred class. This is an
easy change and in particular is painless for
the existing client classes, since they only
relied on the interface (as produced by short
or flat-short) and hence will not be affected
at all by the change; they may not even have
to be recompiled. This is a direct implementation
of information hiding principles.
E6. An Eiffel implementation may permit the author of
a class library to make it available precompiled,
without giving access to the source. (This is
the case with ISE Eiffel 4.) The short and
flat-short forms are of course available through
the tools of the environment. This directly
addresses goal G3.
In short, the Eiffel approach proceeds from the same general
ideas as the technique of "separating interface from
implementation" but goes further; it considers the
whole software engineering picture, takes into account
the problems encountered with the Modula-Ada approach,
and of course takes advantage of object technology.
These issues are discussed in more detail in "Object-Oriented
Software Construction, 2nd edition" (Prentice Hall);
see in particular chapter 23, "Principles of Class Design",
pages 747-808.
--
Bertrand Meyer, President, ISE Inc.
ISE Building, 2nd floor, 270 Storke Road, Goleta CA 93117
805-685-1006, fax 805-685-6869, <Bertrand.Meyer@eiffel.com>
http://www.eiffel.com, with instructions for download
next prev parent reply other threads:[~1997-08-27 0:00 UTC|newest]
Thread overview: 678+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <33957A33.1C31AB44@oma.com>
[not found] ` <865898351snz@nezumi.demon.co.uk>
[not found] ` <339ED54C.215A5F85@oma.com>
[not found] ` <5noc8u$a8m$3@miranda.gmrc.gecm.com>
[not found] ` <33A032AC.2D8BA85C@oma.com>
[not found] ` <5nrn86$cvo$3@miranda.gmrc.gecm.com>
[not found] ` <33A1CBBB.B0602EC@oma.com>
[not found] ` <5o2uls$ku3$2@miranda.gmrc.gecm.com>
[not found] ` <33A6ADDA.2099EEB9@oma.com>
[not found] ` <EBxM3y.8Eo@i2.COM>
[not found] ` <33A7D2DE.545B@polaroid.com>
[not found] ` <JSA.97Jun18155730@alexandria.organon.com>
1997-06-19 0:00 ` Is ADA as good for graphics programming as C? (WAS: Re: Avoiding the second historic mistake) Mukesh Prasad
1997-06-19 0:00 ` Is Ada " Jon S Anthony
1997-06-19 0:00 ` Is ADA " Steve Jones - JON
1997-06-19 0:00 ` Mukesh Prasad
1997-06-20 0:00 ` Robert Dewar
1997-06-22 0:00 ` Is ADA as good for graphics programming as C? (WAS: Jerry van Dijk
1997-06-21 0:00 ` Is ADA as good for graphics programming as C? (WAS: Re: Avoiding the second historic mistake) Tim Harrison
1997-06-23 0:00 ` Kaz Kylheku
1997-06-24 0:00 ` John Goodsen
1997-06-25 0:00 ` Michael Levasseur
1997-06-26 0:00 ` Chris Brand
1997-07-02 0:00 ` Matthew Heaney
1997-07-03 0:00 ` Donovan Baarda
1997-07-04 0:00 ` Matthew Heaney
1997-07-04 0:00 ` Donovan Baarda
1997-07-04 0:00 ` Brian Rogoff
1997-07-07 0:00 ` Donovan Baarda
1997-07-08 0:00 ` Joachim Durchholz
1997-07-08 0:00 ` Brian Rogoff
1997-07-09 0:00 ` Don Harrison
1997-07-05 0:00 ` Jon S Anthony
1997-07-07 0:00 ` Donovan Baarda
1997-07-08 0:00 ` Canada Bass
1997-07-08 0:00 ` Dale Pontius
1997-07-08 0:00 ` Martin Tom Brown
1997-07-09 0:00 ` Matthew Heaney
1997-07-10 0:00 ` Nick Leaton
1997-07-10 0:00 ` Matthew Heaney
1997-07-11 0:00 ` Nick Leaton
1997-07-14 0:00 ` Don Harrison
1997-07-15 0:00 ` Jon S Anthony
1997-07-15 0:00 ` Don Harrison
1997-07-15 0:00 ` Jon S Anthony
1997-07-15 0:00 ` Matthew Heaney
1997-07-15 0:00 ` Brian Rogoff
1997-07-16 0:00 ` Don Harrison
1997-07-17 0:00 ` Matthew Heaney
1997-07-18 0:00 ` Composition vs. Inheritance (was Re: Is ADA as good for graphics programming as C?) Robert I. Eachus
1997-07-19 0:00 ` Is ADA as good for graphics programming as C? (WAS: Re: Avoiding the second historic mistake) Nasser
1997-07-20 0:00 ` Brian Rogoff
1997-07-21 0:00 ` Andrew Dunstan
1997-07-21 0:00 ` Jon S Anthony
1997-07-21 0:00 ` Jon S Anthony
[not found] ` <01bc94e1$46912100$53aa20cc@default>
1997-07-20 0:00 ` Is ADA as good for graphics programming as C? Matthew Heaney
1997-07-21 0:00 ` Dennis Weldy
1997-07-21 0:00 ` Jon S Anthony
1997-07-21 0:00 ` Is ADA as good for graphics programming as C? (WAS: Re: Avoiding the second historic mistake) Robert C. Martin
1997-07-22 0:00 ` Relative complexity - Eiffel and Ada Don Harrison
1997-07-15 0:00 ` Is ADA as good for graphics programming as C? (WAS: Re: Avoiding the second historic mistake) Robert I. Eachus
1997-07-05 0:00 ` John Nagle
1997-07-09 0:00 ` Don Harrison
1997-07-09 0:00 ` Tucker Taft
1997-07-10 0:00 ` Safety-critical development in Ada and Eiffel Don Harrison
1997-07-10 0:00 ` Joe Gwinn
1997-07-11 0:00 ` Robert S. White
1997-07-15 0:00 ` Don Harrison
1997-07-15 0:00 ` Ken Garlington
1997-07-16 0:00 ` Don Harrison
1997-07-10 0:00 ` Ken Garlington
1997-07-11 0:00 ` Ted Velkoff
1997-07-12 0:00 ` Ken Garlington
1997-07-13 0:00 ` Jon S Anthony
1997-07-14 0:00 ` Wes Groleau
1997-07-15 0:00 ` Jon S Anthony
1997-07-15 0:00 ` Don Harrison
1997-07-15 0:00 ` Ken Garlington
1997-07-16 0:00 ` Paul Johnson
1997-07-16 0:00 ` Ken Garlington
1997-07-17 0:00 ` Paul Johnson
1997-07-17 0:00 ` Ken Garlington
1997-07-18 0:00 ` Paul Johnson
1997-07-18 0:00 ` Ken Garlington
1997-07-21 0:00 ` Paul Johnson
1997-07-18 0:00 ` Jon S Anthony
1997-07-17 0:00 ` Jon S Anthony
[not found] ` <EDHqKo.K52@world.std.com>
1997-07-18 0:00 ` Jon S Anthony
1997-07-19 0:00 ` Robert A Duff
1997-07-20 0:00 ` Tucker Taft
1997-07-10 0:00 ` Mike Stark
1997-07-11 0:00 ` Donovan Baarda
1997-07-13 0:00 ` Steve Furlong
1997-07-16 0:00 ` Joachim Durchholz
1997-07-17 0:00 ` Robert Dewar
1997-07-17 0:00 ` Ken Garlington
1997-07-18 0:00 ` John Nagle
1997-07-18 0:00 ` Jon S Anthony
1997-07-18 0:00 ` Jon S Anthony
1997-07-18 0:00 ` Nick Leaton
1997-07-18 0:00 ` Jon S Anthony
1997-07-11 0:00 ` Don Harrison
1997-07-11 0:00 ` James Graves
1997-07-14 0:00 ` Don Harrison
1997-07-12 0:00 ` Ken Garlington
1997-07-15 0:00 ` Don Harrison
1997-07-15 0:00 ` Ken Garlington
1997-07-16 0:00 ` Jean-Marc Jezequel
1997-07-16 0:00 ` Ken Garlington
1997-07-17 0:00 ` The stupidity of all the Ariane 5 analysts Thaddeus L. Olczyk
[not found] ` <33CEAF05.6389@flash.net>
1997-07-20 0:00 ` Bertrand Meyer
1997-07-21 0:00 ` Robert S. White
1997-07-21 0:00 ` Ken Garlington
1997-07-23 0:00 ` Robert S. White
1997-07-23 0:00 ` Ken Garlington
1997-07-25 0:00 ` Robert S. White
1997-07-23 0:00 ` Robert Dewar
1997-07-24 0:00 ` Ken Garlington
1997-07-29 0:00 ` Shmuel (Seymour J.) Metz
1997-07-31 0:00 ` Robert Dewar
1997-08-01 0:00 ` Shmuel (Seymour J.) Metz
1997-08-04 0:00 ` Larry Kilgallen
1997-07-31 0:00 ` Warts was " Richard Irvine
1997-07-31 0:00 ` Robert Dewar
1997-08-05 0:00 ` Shmuel (Seymour J.) Metz
[not found] ` <5scqlr$ju@news.sei.cmu.edu>
1997-08-07 0:00 ` Brian Rogoff
1997-08-08 0:00 ` Jon S Anthony
1997-08-08 0:00 ` Brian Rogoff
1997-08-10 0:00 ` Matthew Heaney
1997-08-10 0:00 ` Brian Rogoff
1997-08-19 0:00 ` Shmuel (Seymour J.) Metz
[not found] ` <Pine.SGI.3.95.970807191944.13419A-100000@shellx <JSA.97Aug8161709@alexandria.organon.com>
1997-08-08 0:00 ` Robert A Duff
1997-08-11 0:00 ` Jon S Anthony
1997-08-08 0:00 ` Don Harrison
1997-08-11 0:00 ` Shmuel (Seymour J.) Metz
1997-07-25 0:00 ` Ariane 5,Eiffel, Ada Alan Brain
1997-07-21 0:00 ` The stupidity of all the Ariane 5 analysts Robert Dewar
1997-07-21 0:00 ` The presuppositions " Samuel Mize
1997-07-21 0:00 ` Ken Garlington
1997-07-22 0:00 ` Luther Hampton
1997-07-23 0:00 ` Ken Garlington
1997-07-23 0:00 ` Samuel Mize
1997-07-22 0:00 ` The stupidity " W. Wesley Groleau x4923
1997-07-21 0:00 ` Ian Begg
1997-07-21 0:00 ` Usefullness of design-by-contract (was Re: The stupidity of all the Ariane 5 analysts.) Jim Cochrane
1997-07-22 0:00 ` Ken Garlington
1997-07-22 0:00 ` Jon S Anthony
1997-07-21 0:00 ` The stupidity of all the Ariane 5 analysts Ken Garlington
1997-07-31 0:00 ` Al Christians
1997-08-01 0:00 ` "Paul E. Bennett"
1997-08-01 0:00 ` Ken Garlington
1997-07-23 0:00 ` Joerg Rodemann
1997-07-17 0:00 ` Safety-critical development in Ada and Eiffel "Paul E. Bennett"
1997-07-17 0:00 ` Robert Dewar
1997-07-18 0:00 ` Safety-critical development in Ada and Eiffel - Ariane crash Joachim Durchholz
1997-07-18 0:00 ` Ken Garlington
1997-07-17 0:00 ` Safety-critical development in Ada and Eiffel Joachim Durchholz
1997-07-19 0:00 ` Ken Garlington
1997-07-21 0:00 ` Ada vs Eiffel (was: Safety-critical development in ...) W. Wesley Groleau x4923
1997-07-22 0:00 ` Matt Kennel (Remove 'NOSPAM' to reply)
1997-07-21 0:00 ` Safety-critical development in Ada and Eiffel Robert S. White
1997-07-20 0:00 ` nabbasi
1997-07-21 0:00 ` W. Wesley Groleau x4923
1997-07-18 0:00 ` Don Harrison
1997-07-18 0:00 ` Ken Garlington
1997-07-22 0:00 ` Don Harrison
1997-07-21 0:00 ` Ken Garlington
1997-07-23 0:00 ` Don Harrison
1997-07-23 0:00 ` W. Wesley Groleau x4923
1997-07-24 0:00 ` Don Harrison
1997-07-24 0:00 ` Ken Garlington
1997-07-26 0:00 ` Joachim Durchholz
1997-07-31 0:00 ` Ken Garlington
1997-07-28 0:00 ` Nick Leaton
1997-07-28 0:00 ` Steve Jones - JON
1997-07-31 0:00 ` Ken Garlington
1997-07-29 0:00 ` Don Harrison
1997-07-31 0:00 ` Ken Garlington
1997-08-07 0:00 ` Don Harrison
1997-08-07 0:00 ` Ken Garlington
1997-08-09 0:00 ` Jim Cochrane
1997-08-11 0:00 ` Paul Johnson
1997-08-11 0:00 ` Ken Garlington
1997-08-12 0:00 ` Mark A Biggar
1997-08-19 0:00 ` Robert Dewar
1997-08-19 0:00 ` Nick Leaton
1997-08-19 0:00 ` Bertrand Meyer
1997-08-19 0:00 ` Robert Dewar
1997-08-20 0:00 ` Lee Webber
1997-08-21 0:00 ` Don Harrison
1997-08-23 0:00 ` Ken Garlington
1997-08-20 0:00 ` Nick Leaton
1997-08-21 0:00 ` Jon S Anthony
1997-08-22 0:00 ` Nick Leaton
1997-08-21 0:00 ` Joachim Durchholz
1997-08-20 0:00 ` Ken Garlington
1997-08-26 0:00 ` Richard A. O'Keefe
1997-08-13 0:00 ` Paul Johnson
1997-08-13 0:00 ` Ken Garlington
1997-08-15 0:00 ` Paul Johnson
1997-08-15 0:00 ` Ken Garlington
1997-08-18 0:00 ` Joachim Durchholz
1997-08-19 0:00 ` Ken Garlington
1997-08-20 0:00 ` Nick Leaton
1997-08-20 0:00 ` Nasser
1997-08-21 0:00 ` Jon S Anthony
1997-08-22 0:00 ` Nick Leaton
1997-08-23 0:00 ` Ken Garlington
1997-08-21 0:00 ` Joachim Durchholz
1997-08-23 0:00 ` Ken Garlington
1997-08-12 0:00 ` Don Harrison
1997-08-12 0:00 ` Ken Garlington
1997-08-12 0:00 ` Jon S Anthony
1997-08-13 0:00 ` Don Harrison
1997-08-13 0:00 ` Jon S Anthony
1997-08-15 0:00 ` Don Harrison
1997-08-16 0:00 ` Jon S Anthony
1997-08-13 0:00 ` Samuel Mize
1997-08-13 0:00 ` Robert A Duff
1997-08-14 0:00 ` Jon S Anthony
1997-08-15 0:00 ` Don Harrison
1997-08-16 0:00 ` Ken Garlington
1997-08-13 0:00 ` Ted Velkoff
1997-08-13 0:00 ` Jon S Anthony
1997-08-13 0:00 ` Ken Garlington
1997-08-13 0:00 ` Ted Velkoff
1997-08-14 0:00 ` Matt Austern
1997-08-14 0:00 ` Ted Velkoff
1997-08-18 0:00 ` Matt Austern
1997-08-20 0:00 ` Joachim Durchholz
1997-08-21 0:00 ` Jon S Anthony
1997-08-22 0:00 ` Joachim Durchholz
1997-08-15 0:00 ` Ken Garlington
1997-08-16 0:00 ` Ted Velkoff
1997-08-16 0:00 ` Ken Garlington
1997-08-16 0:00 ` Jon S Anthony
1997-08-16 0:00 ` Ken Garlington
1997-08-18 0:00 ` Ted Velkoff
1997-08-18 0:00 ` Ted Velkoff
1997-08-19 0:00 ` Ken Garlington
1997-08-14 0:00 ` Nick Leaton
1997-08-16 0:00 ` Robert Dewar
1997-08-18 0:00 ` Joachim Durchholz
1997-08-19 0:00 ` Ken Garlington
1997-08-21 0:00 ` Joachim Durchholz
1997-08-23 0:00 ` Ken Garlington
[not found] ` <JSA.97Aug25181856@alexandria.organon.com>
[not found] ` <34023A1F.41C67EA6@eiffel.com>
1997-08-25 0:00 ` Design by Contract Bertrand Meyer
[not found] ` <JSA.97Aug26151833@alexandria.organon.com>
1997-08-27 0:00 ` Patrick Doyle
1997-08-25 0:00 ` Bertrand Meyer
1997-08-25 0:00 ` Steve Stringfellow
1997-08-26 0:00 ` Don Harrison
1997-08-25 0:00 ` Bertrand Meyer
[not found] ` <3402d123.0@news.uni-ulm.de>
1997-08-26 0:00 ` Nick Leaton
[not found] ` <3402e51d.0@news.uni-ulm.de>
[not found] ` <3402E8C9.3384D976@calfp.co.uk>
[not found] ` <dewar.872631036@merv>
[not found] ` <3403F668.F6B57D97@calfp.co.uk>
[not found] ` <34041331.0@news.uni-ulm.de>
[not found] ` <3404696D.4487EB71@eiffel.com>
1997-08-27 0:00 ` Bertrand Meyer [this message]
[not found] ` <34048FDC.13728473@eiffel.com>
1997-08-27 0:00 ` Interface/Implementation (was Re: Design by Contract) Bertrand Meyer
1997-08-28 0:00 ` Patrick Doyle
1997-08-28 0:00 ` W. Wesley Groleau x4923
1997-08-28 0:00 ` Jon S Anthony
1997-08-29 0:00 ` Robert Dewar
[not found] ` <EForsv.Fqo@ecf.toronto.edu>
[not found] ` <JSA.97Aug29191413@alexandria.organon.com>
[not found] ` <EFqDAG.2zn@ecf.toronto.edu>
1997-08-30 0:00 ` Jon S Anthony
1997-09-02 0:00 ` Don Harrison
1997-09-02 0:00 ` Jon S Anthony
1997-09-03 0:00 ` Don Harrison
[not found] ` <EFwuzD.BxE@ecf.toronto.edu>
1997-09-04 0:00 ` Don Harrison
1997-09-05 0:00 ` Patrick Doyle
1997-09-09 0:00 ` Don Harrison
1997-09-09 0:00 ` W. Wesley Groleau x4923
1997-09-10 0:00 ` Veli-Pekka Nousiainen
1997-09-10 0:00 ` Samuel Mize
1997-09-12 0:00 ` Don Harrison
1997-09-10 0:00 ` Patrick Doyle
1997-09-10 0:00 ` Joerg Rodemann
1997-09-10 0:00 ` Joachim Durchholz
1997-09-12 0:00 ` Joerg Rodemann
1997-09-10 0:00 ` Patrick Doyle
1997-09-11 0:00 ` Matt Austern
1997-09-12 0:00 ` Jon S Anthony
1997-09-13 0:00 ` Patrick Doyle
1997-09-11 0:00 ` Robert S. White
1997-09-11 0:00 ` Don Harrison
1997-09-12 0:00 ` Robert Dewar
1997-09-13 0:00 ` Patrick Doyle
1997-09-12 0:00 ` Jon S Anthony
1997-09-13 0:00 ` Patrick Doyle
1997-09-16 0:00 ` Brian Rogoff
1997-09-04 0:00 ` John G. Volan
1997-09-04 0:00 ` W. Wesley Groleau x4923
1997-09-05 0:00 ` Patrick Doyle
1997-09-05 0:00 ` W. Wesley Groleau x4923
1997-09-06 0:00 ` Patrick Doyle
1997-09-08 0:00 ` Paul Johnson
1997-09-06 0:00 ` Jon S Anthony
1997-09-08 0:00 ` Robert Dewar
1997-09-09 0:00 ` Patrick Doyle
1997-09-09 0:00 ` Matthew Heaney
1997-09-10 0:00 ` Patrick Doyle
1997-09-09 0:00 ` Paul Johnson
1997-09-11 0:00 ` Robert Dewar
1997-09-11 0:00 ` Veli-Pekka Nousiainen
1997-09-12 0:00 ` Paul Johnson
1997-09-14 0:00 ` Ken Garlington
1997-09-09 0:00 ` Robert S. White
1997-09-09 0:00 ` Matt Kennel (Remove 'NOSPAM' to reply)
1997-09-10 0:00 ` John Viega
1997-09-10 0:00 ` Matt Kennel (Remove 'NOSPAM' to reply)
1997-09-05 0:00 ` Patrick Doyle
1997-09-05 0:00 ` Franck Arnaud
1997-08-28 0:00 ` Tucker Taft
1997-08-28 0:00 ` W. Wesley Groleau x4923
1997-08-28 0:00 ` Jon S Anthony
1997-08-29 0:00 ` Suzanne Zampella
1997-08-29 0:00 ` Jon S Anthony
[not found] ` <EFnK8D.Lsv@ecf.toronto.edu>
1997-08-29 0:00 ` Jon S Anthony
1997-08-30 0:00 ` Patrick Doyle
1997-08-30 0:00 ` Jon S Anthony
1997-09-01 0:00 ` Patrick Doyle
[not found] ` <340E9BA2.32B3@rbgg252.rbg1.siemens.de>
1997-09-07 0:00 ` Robert Dewar
[not found] ` <3406A707.787D@dmu.ac.uk>
1997-08-29 0:00 ` a fairy tale (was: Re: Interface/Implementation ) Fred Long
1997-08-29 0:00 ` Interface/Implementation (was Re: Design by Contract) Joerg Rodemann
1997-08-29 0:00 ` Ralph Paul
1997-09-01 0:00 ` Don Harrison
1997-09-01 0:00 ` In defence of plain ascii files ( was " Chris RL Morgan
1997-08-27 0:00 ` Design by Contract Ted Velkoff
1997-08-27 0:00 ` Matt Kennel (Remove 'NOSPAM' to reply)
[not found] ` <34050F3C.5A3A@invest.amp.com.au>
1997-08-28 0:00 ` Robert Dewar
1997-08-29 0:00 ` Paul Johnson
1997-08-31 0:00 ` Matt Kennel (Remove 'NOSPAM' to reply)
1997-09-01 0:00 ` John F. Bell III
1997-09-02 0:00 ` Ken Garlington
1997-09-05 0:00 ` Robert Dewar
[not found] ` <dewar.872887402@merv>
1997-09-02 0:00 ` Ken Garlington
1997-09-03 0:00 ` Thomas Beale
[not found] ` <EFxx8q.2sw@ecf.toronto.edu>
1997-09-04 0:00 ` Thomas Beale
1997-09-05 0:00 ` Robert Dewar
1997-09-05 0:00 ` Ken Garlington
[not found] ` <340306E1.5FB64D70@XYZZYcalfp.com>
1997-08-28 0:00 ` Mark Bennison
1997-08-28 0:00 ` Separation of IF and Imp: process issue? Jeff Kotula
[not found] ` <x7vd8myyrzx.fsf@pogner.demon.co.uk>
1997-08-30 0:00 ` Patrick Doyle
1997-08-31 0:00 ` Jon S Anthony
1997-09-01 0:00 ` Patrick Doyle
1997-09-01 0:00 ` Robert Dewar
1997-09-02 0:00 ` Patrick Doyle
1997-09-03 0:00 ` Jon S Anthony
1997-09-05 0:00 ` Robert Dewar
1997-09-05 0:00 ` W. Wesley Groleau x4923
1997-09-08 0:00 ` Erik Magnuson
1997-09-02 0:00 ` Jon S Anthony
1997-09-03 0:00 ` Patrick Doyle
[not found] ` <x7vzppy250u.fsf@pogner.demon.co.uk>
1997-09-01 0:00 ` Patrick Doyle
[not found] ` <mheaney-ya023680000209972131260001@news.ni.net>
1997-09-03 0:00 ` Patrick Doyle
1997-09-04 0:00 ` Matthew Heaney
1997-09-05 0:00 ` Patrick Doyle
1997-09-08 0:00 ` John G. Volan
1997-09-09 0:00 ` Nick Leaton
1997-09-05 0:00 ` Darren New
1997-09-06 0:00 ` Matthew Heaney
1997-09-07 0:00 ` Darren New
1997-09-08 0:00 ` W. Wesley Groleau x4923
1997-09-09 0:00 ` Patrick Doyle
1997-09-08 0:00 ` Darren New
1997-09-08 0:00 ` Matthew Heaney
1997-09-09 0:00 ` John G. Volan
1997-09-09 0:00 ` Fergus Henderson
1997-09-10 0:00 ` Paul Johnson
1997-09-11 0:00 ` Robert Dewar
1997-09-09 0:00 ` Robert S. White
1997-09-09 0:00 ` Darren New
1997-09-09 0:00 ` Nick Leaton
1997-09-09 0:00 ` Jon S Anthony
1997-09-11 0:00 ` Robert Dewar
1997-09-12 0:00 ` Samuel T. Harris
1997-09-09 0:00 ` Mark A Biggar
1997-09-10 0:00 ` Darren New
1997-09-11 0:00 ` Joerg Rodemann
1997-09-11 0:00 ` Darren New
1997-09-12 0:00 ` Joerg Rodemann
1997-09-12 0:00 ` Darren New
1997-09-10 0:00 ` Patrick Doyle
1997-09-11 0:00 ` Peter Hermann
1997-09-12 0:00 ` Robert Dewar
1997-09-12 0:00 ` Jon S Anthony
1997-09-09 0:00 ` Jon S Anthony
1997-09-10 0:00 ` Patrick Doyle
1997-09-12 0:00 ` Jon S Anthony
1997-09-12 0:00 ` Robert A Duff
1997-09-13 0:00 ` Jon S Anthony
1997-09-10 0:00 ` Matt Kennel (Remove 'NOSPAM' to reply)
1997-09-10 0:00 ` Brian Rogoff
1997-09-12 0:00 ` Jon S Anthony
1997-09-10 0:00 ` news_check.py
1997-09-11 0:00 ` Robert Dewar
1997-09-16 0:00 ` Owen Fellows
1997-09-10 0:00 ` Robert Dewar
1997-09-10 0:00 ` Darren New
1997-09-10 0:00 ` Walter Mallory
1997-09-10 0:00 ` Joerg Rodemann
1997-09-10 0:00 ` W. Wesley Groleau x4923
1997-09-10 0:00 ` Precondition Checking For Ada 0X (Was: Separation of IF and Imp: process issue?) Matthew Heaney
1997-09-12 0:00 ` Robert Dewar
1997-09-15 0:00 ` W. Wesley Groleau x4923
1997-09-16 0:00 ` Robert Dewar
1997-09-16 0:00 ` Don Harrison
1997-09-16 0:00 ` Joerg Rodemann
1997-09-16 0:00 ` Owen Fellows
1997-09-16 0:00 ` Joachim Durchholz
1997-09-16 0:00 ` Roger Browne
1997-09-16 0:00 ` Robert A Duff
1997-09-17 0:00 ` Joachim Durchholz
1997-09-17 0:00 ` Franck Arnaud
1997-09-18 0:00 ` Don Harrison
1997-09-18 0:00 ` Robert A Duff
1997-09-18 0:00 ` Jon S Anthony
1997-09-18 0:00 ` Juergen Schlegelmilch
1997-09-20 0:00 ` Joachim Durchholz
1997-09-17 0:00 ` Lee Webber
1997-09-17 0:00 ` Paul Johnson
1997-09-17 0:00 ` Don Harrison
1997-09-20 0:00 ` Matthew Heaney
1997-09-25 0:00 ` Don Harrison
1997-09-25 0:00 ` Matthew Heaney
1997-09-26 0:00 ` Don Harrison
1997-09-29 0:00 ` John G. Volan
1997-09-10 0:00 ` Separation of IF and Imp: process issue? Joerg Rodemann
1997-09-10 0:00 ` Nick Leaton
1997-09-10 0:00 ` W. Wesley Groleau x4923
1997-09-18 0:00 ` Robert Dewar
[not found] ` <dewar.873826268@merv>
1997-09-10 0:00 ` Samuel Mize
1997-09-10 0:00 ` W. Wesley Groleau x4923
1997-09-10 0:00 ` Scott Ingram
1997-09-12 0:00 ` Robert Dewar
1997-09-12 0:00 ` Scott Ingram
1997-09-11 0:00 ` Robert Dewar
1997-09-06 0:00 ` Matt Kennel (Remove 'NOSPAM' to reply)
1997-09-05 0:00 ` Jon S Anthony
1997-09-05 0:00 ` Samuel Mize
1997-09-06 0:00 ` Patrick Doyle
1997-09-06 0:00 ` Patrick Doyle
1997-09-06 0:00 ` Jon S Anthony
1997-09-07 0:00 ` Patrick Doyle
1997-09-08 0:00 ` Jon S Anthony
1997-09-09 0:00 ` Patrick Doyle
1997-09-09 0:00 ` Samuel Mize
1997-09-09 0:00 ` Matthew Heaney
1997-09-06 0:00 ` Matt Kennel (Remove 'NOSPAM' to reply)
1997-09-06 0:00 ` Jon S Anthony
[not found] ` <5u4941$9m1@gcsin3.geccs.gecm.com>
1997-09-15 0:00 ` Michael Gacsaly
[not found] ` <34026DE7.7D07@pseserv3.fw.hac.com>
[not found] ` <3402C404.56812AFB@XYZZYcalfp.com>
1997-08-27 0:00 ` A DBC experience (was Re: Design by Contract) Simon Wright
[not found] ` <5tvfdt$79g@inet-server.sit.fi>
[not found] ` <34050D8B.569F@deakin.edu.au>
1997-08-28 0:00 ` Richie Bielak
1997-08-29 0:00 ` Peter Horan
[not found] ` <bengtk-2708972209500001@sl35.modempool.kth.se>
1997-08-28 0:00 ` Design by Contract Nick Leaton
1997-08-25 0:00 ` Bertrand Meyer
1997-08-23 0:00 ` Safety-critical development in Ada and Eiffel W. Wesley Groleau x4923
1997-08-23 0:00 ` Robert Dewar
1997-07-23 0:00 ` Ken Garlington
1997-07-25 0:00 ` Don Harrison
1997-07-15 0:00 ` Wes Groleau
1997-07-15 0:00 ` Ken Garlington
1997-07-16 0:00 ` Don Harrison
1997-07-16 0:00 ` Ken Garlington
1997-07-16 0:00 ` Robert Dewar
1997-07-17 0:00 ` Paul Johnson
1997-07-17 0:00 ` Stuart Palin
1997-07-18 0:00 ` Ian Rae
1997-07-18 0:00 ` Paul Johnson
1997-07-17 0:00 ` Jon S Anthony
1997-07-18 0:00 ` Joachim Durchholz
1997-07-18 0:00 ` Don Harrison
1997-07-20 0:00 ` Don Harrison
1997-07-18 0:00 ` Robert I. Eachus
1997-07-21 0:00 ` W. Wesley Groleau x4923
1997-07-16 0:00 ` Warwick Pulley
1997-07-16 0:00 ` Nick Leaton
1997-07-16 0:00 ` Robert Dewar
1997-07-20 0:00 ` Joachim Durchholz
1997-07-24 0:00 ` Joe Buck
1997-07-24 0:00 ` Paul M Gover
1997-07-26 0:00 ` Joachim Durchholz
1997-07-28 0:00 ` Robert S. White
1997-08-09 0:00 ` Marinos J. Yannikos
1997-08-10 0:00 ` Robert S. White
1997-08-11 0:00 ` Peter Hamer
1997-08-11 0:00 ` "Paul E. Bennett"
1997-07-29 0:00 ` Don Harrison
1997-07-21 0:00 ` Don Harrison
1997-07-17 0:00 ` Warwick Pulley
1997-07-17 0:00 ` Warwick Pulley
1997-07-17 0:00 ` Nick Leaton
1997-07-17 0:00 ` Ken Garlington
1997-07-17 0:00 ` Richie Bielak
1997-07-17 0:00 ` Samuel Tardieu
1997-07-17 0:00 ` Richie Bielak
1997-07-23 0:00 ` Don Harrison
1997-07-23 0:00 ` Ken Garlington
1997-07-25 0:00 ` Don Harrison
1997-07-23 0:00 ` Jon S Anthony
1997-07-24 0:00 ` Don Harrison
1997-07-24 0:00 ` Jon S Anthony
1997-07-23 0:00 ` Karel Th�nissen
1997-07-24 0:00 ` Don Harrison
1997-07-24 0:00 ` Ken Garlington
1997-07-29 0:00 ` Don Harrison
1997-07-29 0:00 ` Ron Kohl
1997-07-29 0:00 ` Don Harrison
1997-07-30 0:00 ` Don Harrison
1997-07-31 0:00 ` Ken Garlington
1997-08-07 0:00 ` Don Harrison
1997-08-07 0:00 ` Ken Garlington
1997-08-13 0:00 ` Don Harrison
1997-08-13 0:00 ` Ken Garlington
1997-08-14 0:00 ` Don Harrison
1997-08-15 0:00 ` Don Harrison
1997-08-15 0:00 ` Ken Garlington
1997-08-16 0:00 ` Jon S Anthony
1997-08-19 0:00 ` Don Harrison
1997-08-20 0:00 ` Ken Garlington
1997-08-15 0:00 ` Ken Garlington
1997-08-19 0:00 ` Don Harrison
1997-08-19 0:00 ` Lee Webber
1997-08-20 0:00 ` Ken Garlington
1997-08-21 0:00 ` Don Harrison
1997-08-15 0:00 ` Lee Webber
1997-08-19 0:00 ` Don Harrison
1997-08-19 0:00 ` Lee Webber
1997-07-24 0:00 ` Don Harrison
1997-07-17 0:00 ` Karel Th�nissen
1997-07-17 0:00 ` Ken Garlington
1997-07-23 0:00 ` Don Harrison
1997-07-23 0:00 ` Ken Garlington
1997-07-25 0:00 ` Don Harrison
1997-07-23 0:00 ` Don Harrison
1997-07-23 0:00 ` Ken Garlington
1997-07-25 0:00 ` Don Harrison
[not found] ` <JSA.97Jul17174044@alexandria.organon.com>
1997-07-18 0:00 ` Nick Leaton
1997-07-18 0:00 ` Joachim Durchholz
1997-07-17 0:00 ` Don Harrison
1997-07-17 0:00 ` Karel Th�nissen
1997-07-21 0:00 ` Don Harrison
1997-07-17 0:00 ` Robert Dewar
1997-07-22 0:00 ` Don Harrison
1997-07-17 0:00 ` Robert Dewar
1997-07-18 0:00 ` Jon S Anthony
1997-07-19 0:00 ` Robert A Duff
1997-07-20 0:00 ` Use use type? (Was Re: Safety-critical development in Ada and Eiffel) Brian Rogoff
1997-07-21 0:00 ` Robert A Duff
1997-07-21 0:00 ` Brian Rogoff
1997-07-24 0:00 ` Morgan Palaeo Associates
1997-07-24 0:00 ` Jon S Anthony
[not found] ` <199707251337.PAA20933@basement.replay.com>
1997-07-26 0:00 ` Karel Th�nissen
1997-08-01 0:00 ` J-P. Rosen
1997-08-01 0:00 ` Robert A Duff
1997-08-02 0:00 ` Robert Dewar
1997-07-21 0:00 ` Robert Dewar
1997-07-21 0:00 ` Brian Rogoff
1997-07-22 0:00 ` Robert Dewar
1997-07-21 0:00 ` Robert Dewar
1997-07-21 0:00 ` Safety-critical development in Ada and Eiffel W. Wesley Groleau x4923
1997-07-21 0:00 ` Don Harrison
1997-07-21 0:00 ` Jon S Anthony
1997-07-21 0:00 ` Brian Rogoff
1997-07-16 0:00 ` Alan Brain
1997-07-18 0:00 ` Don Harrison
1997-07-22 0:00 ` Alan Brain
1997-07-22 0:00 ` Don Harrison
1997-07-23 0:00 ` Jon S Anthony
1997-07-24 0:00 ` Don Harrison
1997-07-25 0:00 ` Alan Brain
1997-07-25 0:00 ` Jon S Anthony
1997-07-11 0:00 ` Kazimir Majorinc
1997-07-12 0:00 ` Ken Garlington
1997-07-11 0:00 ` Don Harrison
[not found] ` <slrn5rq1gc.che.abo@minkirri. <slrn5s1132.hf1.abo@minkirri.apana.org.au>
1997-07-08 0:00 ` Is ADA as good for graphics programming as C? (WAS: Re: Avoiding the second historic mistake) Richard Kenner
1997-07-08 0:00 ` Dale Pontius
[not found] ` <33B16CBB.417A@gdesys <slrn5rn570.j6j.abo@minkirri.apana.org.au>
1997-07-04 0:00 ` Samuel Mize
[not found] ` <33B16CBB <slrn5rq1gc.che.abo@minkirri.apana.org.au>
1997-07-05 0:00 ` Larry Kilgallen
[not found] <01bcb389$24f579d0$1c10d30a@ntwneil>
1997-08-28 0:00 ` Interface/Implementation (was Re: Design by Contract) Tucker Taft
1997-08-29 0:00 ` Paul Johnson
1997-08-29 0:00 ` Jon S Anthony
[not found] ` <EFqDC8.342@ecf.toronto.edu>
1997-09-02 0:00 ` Samuel Mize
1997-09-03 0:00 ` Patrick Doyle
1997-09-03 0:00 ` Samuel Mize
1997-09-03 0:00 ` Paul Johnson
1997-09-04 0:00 ` Erik Ernst
1997-09-05 0:00 ` Robert Dewar
[not found] ` <EFyrH2.7z2@syd.csa.com.au>
1997-09-04 0:00 ` Joerg Rodemann
1997-09-05 0:00 ` Don Harrison
[not found] ` <340fdb9f.0@news.uni-ulm.de>
1997-09-06 0:00 ` Joachim Durchholz
1997-09-06 0:00 ` Joachim Durchholz
1997-09-04 0:00 ` W. Wesley Groleau x4923
1997-09-05 0:00 ` Don Harrison
1997-09-05 0:00 ` W. Wesley Groleau x4923
1997-09-06 0:00 ` Joachim Durchholz
1997-09-09 0:00 ` Robert Dewar
1997-09-09 0:00 ` Richard Kenner
1997-09-10 0:00 ` Tucker Taft
1997-09-10 0:00 ` Joachim Durchholz
1997-09-10 0:00 ` Nick Leaton
1997-09-10 0:00 ` W. Wesley Groleau x4923
1997-09-12 0:00 ` Robert Dewar
1997-09-12 0:00 ` Nick Leaton
1997-09-11 0:00 ` Robert Dewar
1997-09-05 0:00 ` Jon S Anthony
1997-09-06 0:00 ` Fergus Henderson
1997-09-06 0:00 ` Jon S Anthony
1997-09-08 0:00 ` Robert Dewar
1997-09-11 0:00 ` Don Harrison
1997-09-12 0:00 ` Robert Dewar
1997-09-08 0:00 ` Robert Dewar
1997-09-11 0:00 ` Don Harrison
1997-09-05 0:00 ` Jon S Anthony
1997-09-06 0:00 ` Patrick Doyle
1997-09-06 0:00 ` Jon S Anthony
1997-09-05 0:00 ` Patrick Doyle
1997-09-05 0:00 ` W. Wesley Groleau x4923
1997-09-06 0:00 ` Patrick Doyle
1997-09-05 0:00 ` Matthew Heaney
1997-09-06 0:00 ` Joachim Durchholz
1997-09-06 0:00 ` Patrick Doyle
1997-09-06 0:00 ` Matthew Heaney
1997-09-06 0:00 ` Matthew Heaney
1997-09-07 0:00 ` Patrick Doyle
1997-09-07 0:00 ` Matthew Heaney
1997-09-10 0:00 ` Don Harrison
1997-09-10 0:00 ` Tucker Taft
1997-09-10 0:00 ` Matthew Heaney
1997-09-10 0:00 ` Patrick Doyle
1997-09-12 0:00 ` Robert Dewar
1997-09-13 0:00 ` Patrick Doyle
1997-09-11 0:00 ` Lee Webber
1997-09-15 0:00 ` W. Wesley Groleau x4923
1997-09-12 0:00 ` Don Harrison
1997-09-10 0:00 ` Don Harrison
1997-09-12 0:00 ` Robert Dewar
1997-09-16 0:00 ` Don Harrison
1997-09-17 0:00 ` Robert Dewar
1997-09-10 0:00 ` Patrick Doyle
1997-09-16 0:00 ` Don Harrison
1997-09-18 0:00 ` Robert Dewar
1997-09-18 0:00 ` Shmuel (Seymour J.) Metz
1997-09-20 0:00 ` Robert Dewar
1997-09-10 0:00 ` Matthew Heaney
1997-09-10 0:00 ` Samuel Mize
1997-09-10 0:00 ` Samuel Mize
1997-09-11 0:00 ` Robert Dewar
1997-09-12 0:00 ` Samuel Mize
1997-09-13 0:00 ` Tucker Taft
1997-09-12 0:00 ` Samuel T. Harris
1997-09-17 0:00 ` Don Harrison
1997-09-18 0:00 ` Robert Dewar
1997-09-11 0:00 ` Don Harrison
1997-09-11 0:00 ` Robert Dewar
1997-09-10 0:00 ` Robert Dewar
1997-09-10 0:00 ` Nick Leaton
1997-09-16 0:00 ` Frederic Guerin
1997-09-06 0:00 ` Matt Kennel (Remove 'NOSPAM' to reply)
1997-09-06 0:00 ` Jon S Anthony
1997-09-08 0:00 ` John G. Volan
1997-09-09 0:00 ` Paul Johnson
1997-09-09 0:00 ` Nick Leaton
1997-09-09 0:00 ` John G. Volan
1997-09-10 0:00 ` Nick Leaton
1997-09-10 0:00 ` Samuel Mize
[not found] ` <dewar.873826570@merv>
1997-09-09 0:00 ` Matthew Heaney
1997-09-11 0:00 ` Robert Dewar
1997-09-07 0:00 ` Robert Dewar
1997-09-08 0:00 ` Patrick Doyle
1997-09-09 0:00 ` Don Harrison
1997-09-09 0:00 ` W. Wesley Groleau x4923
1997-09-10 0:00 ` Robert Dewar
1997-09-11 0:00 ` Don Harrison
1997-09-12 0:00 ` Robert Dewar
1997-09-16 0:00 ` Don Harrison
1997-09-17 0:00 ` Robert Dewar
1997-09-01 0:00 ` Matt Kennel (Remove 'NOSPAM' to reply)
1997-09-02 0:00 ` Nick Leaton
1997-09-03 0:00 ` Matt Kennel (Remove 'NOSPAM' to reply)
[not found] <EForKz.FJ7@ecf.toronto.edu>
1997-09-01 0:00 ` Don Harrison
1997-09-02 0:00 ` Don Harrison
1997-09-06 0:00 Ell
1997-09-06 0:00 ` Samuel Mize
-- strict thread matches above, loose matches on Subject: below --
1997-09-09 0:00 Marc Wachowitz
1997-09-15 0:00 ` Owen Fellows
1997-10-13 0:00 ` Bill Foote
1997-09-12 0:00 Marc Wachowitz
1997-09-12 0:00 ` Samuel T. Harris
1997-09-12 0:00 ` Jon S Anthony
1997-09-15 0:00 ` Samuel T. Harris
1997-09-16 0:00 ` Jon S Anthony
1997-09-12 0:00 ` Joachim Durchholz
1997-09-15 0:00 Marc Wachowitz
1997-09-16 0:00 ` Owen Fellows
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox