Quoting "M. Warner Losh" <[EMAIL PROTECTED]> (from Sun, 28 May 2006
14:01:40 -0600 (MDT)):
In message: <[EMAIL PROTECTED]>
Alexander Leidinger <[EMAIL PROTECTED]> writes:
: We can make this a 3-tier document. We can mark some functions as
: @internal, some without any special markup (they are public then), and
: some with some special comments/notes/whatever (we have to invent
: something).
:
: The functions marked as @internal are only for the use in the subsystem
: itself (maybe together with any other documented constraint). The
: functions without any special markup can be used in other subsystems of
: the kernel. And finally the special marked functions -- let's call them
: EXTERNAL -- can be used by 3rd party developers.
:
: How does this sound?
One area where we have had problems in the past is when the 2nd tier
of functions changes. Many interfaces that the designer had intended
to be private were used inappropriately elsewhere in the kernel. We
have issues with this in vinum, many of the file system drivers, many
of the tty drivers, etc. Of course, there used to be almost no
documentation at all, so people just used what seemed right, despite
the original author's intentions. Usually these sub-systems have well
defined interfaces to each other, and other sub-systems calling in is
a bad thing. Ditto with the driver <-> driver abstraction layers
(tty, sound, etc). They should be using only what you call the
external interfaces and nothing else. So I'm not sure how well your
proposal maps to our current needs.
Maybe I didn't expressed myself good enough... or we don't share the
same definition of 3rd party software.
Let's assume we have a graph of software API layers in the kernel.
Some functions (= internal) in each node in the graph are only for use
in the same node. Some functions (= public) are allowed to be used in
directly connected adjacent nodes, and some functions (= external) are
allowed to be called "from everywhere".
The "everywhere" part is a simplification, it doesn't make sense to
use the disk driver API when you write a sound driver, but it shows
what I have in mind regarding those 3 documentation levels.
: > : Since we have no API docs, everyone has to have a look at the kernel on
: > : his own. This only provides a little bit of help here.
: >
: > We have api docs. Please don't say that we have none. There's a
: > bunch of documentation in the man9 section of the man page. Sure, it
: > is incomplete, misleading and obsolete in places, but it is
: > documentation.
:
: Sorry... there are docs which document the API, I agree. But we don't
: really have well known API documentation (as in high level overview,
: what fits together how, and such). You have to know what you want to
: do, then you can make use of plenty of docs. But if you don't know what
: you are searching, it's not easy (maybe more easy as in linux, I don't
: know, but not as easy as it could be).
Again, between the handbook and the man pages we have this. It needs
a lot of work, but we do have it. It shows what to do at a very
rudamentary level, but you can find what you want.
I'm not sure you'll ever find the high level overview in the sources.
There's rarely a good place for it, and it changes with time.
The disclaimer I committed yesterday shows up on the front page of
every API documentation. It's just a file with some C style comments
and doxygen markup. A high level overview of a subsystem can be
written the same way and included in the generated documentation. And
an overview which handles the higher level perspective of several
subsystem can be written the same way. They don't have to be
integrated into the source files, but keeping it besides the source
files is just fine IMO. It's like putting a "design
decissions"-document beneath the source files (or a readme, install
instructions, upgrade hints, whatever).
Bye,
Alexander.
--
http://www.Leidinger.net Alexander @ Leidinger.net: PGP ID = B0063FE7
http://www.FreeBSD.org netchild @ FreeBSD.org : PGP ID = 72077137
guru, n:
A computer owner who can read the manual.
_______________________________________________
cvs-all@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/cvs-all
To unsubscribe, send any mail to "[EMAIL PROTECTED]"