Greetings,
The operation of a Linux system sometimes requires to decode the
meaning of a specific kernel message, e.g. an error message of a
driver. Especially on our mainframe zSeries platform system
administrators want to have descriptions for Linux kernel messages.
They are used to that, because all other operating systems on that
platform like z/OS, z/VM or z/VSE have message catalogs with detailed
descriptions about the semantics of the messages.In general we think, that also for Linux it is a good thing to have
documentation for the most important kernel/driver messages. Even
kernel hackers not always are aware of the meaning of kernel messages
for components, which they don't know in detail. Most of the messages
are self explaining but sometimes you get something like "Clocksource
tsc unstable (delta = 7304132729 ns)" and you wonder if your system is
going to explode.Unfortunately currently there is no general infrastructure in the Linux
kernel for the documentation of messages. I worked on a proposal, how
that could be implemented in an easy way using the already existing
kernel-doc infrastructure and using printk. The proposal is as follows1. We use message identifiers in order to map messages to message
descriptions. A message identifier consists out of a component name and
within that component unique message number.2. Messages and message descriptions are maintained together in the
kernel sources in order to keep them up to date. Messages catalog are
generated automatically for exactly one kernel level.3. A special tool checks, if messages are not documented or if there
are message descriptions without corresponding messages.4. We use the already existing kernel-doc tool to generate an online
message catalog or e.g. a pdf for offline documentation.Current prototype implementation:
=================================The structure of a kernel message is: <component>.<msg number>: <msg>
* component: Name of the kernel or driver ...
I think my general response to something like this, if it goes
in, would be to stop emitting useful kernel log messages
in the code I write because having to document it too on top
of that is just too much extra work to be worthwhile.
-
Nobody will force you to document your messages. As I said, there is no
need to document self-explaining printks.Michael
-
Your proposal is similar to one I made to some Japanese developers
earlier this year. I was more modest, proposing that we- add an enhanced printk
xxprintk(msgid, KERN_ERR "some text %d\n", some_number);
- An externally managed database will provide translations, diagnostics,
remedial actions, etc, keyed off the msgid string- Format and management of the msgid hasn't been clearly identified yet
as far as I know. But all we really need is that each ID be unique,
kernel-wide. We develop a simple tool which can check the whole tree
for duplicated msgids.- From a practical day-to-day POV what this means is that a person
from the kernel-messages team will prepare a patch for your driver
which adds the msgids and you the driver author should take care not
to break the tagging.This is deliberately designed to be minimum-impact upon general
developers. We want a system in place where driver/fs/etc developers
can concentrate on what they do, and kernel-message developers can
as independently as possibe take care of what _they_ do.- A project has started up and there is a mailing list (cc'ed here) and
meetings are happening at the LF collaboration summit this week.Please see https://lists.linux-foundation.org/mailman/listinfo/lf_kernel_messages
and don't miss the next conference call ;)(argh. The lf_kernel_messages archives are subscriber-only and it could be that
-
Hi all,
Any idea, how to proceed with this topic? Do you think that any of the
suggested solutions for documentation / translation of kernel messages
will have a chance to be included in the kernel?I tried to summarize the outcome of this discussion...
There are two main issues:
* Translate messages
* Document messagesFor both, we have to give messages identifiers in order to match them
to the corresponding documentation / translation. Three possible
solutions have been suggested:1. Use message numbers maintained by driver owners
2. Automatically create hashes for printks
3. Use printk format string as message identifierRegarding the question where to put documentation and translations we
have two options:* In the kernel tree
* Somewhere outside the kernel treeAnother issue of the discussion was the usage of the component name for
printks.Useful comments:
================
Andrew Morton:
Suggested an alternative approach using a new printk function with
message ID parameter. Documentation / Translation should be done
outside the kernel.Gerrit Huizenga:
Suggested an alternative approach using hashes as message IDs.Greg Kroah-Hartman:
He pointed out, that we need a solution which integrates dev_xxx()
macros.Randy Dunlop:
He doesn't want to have message documentation included in the
kernel-doc tool. We should create new tool for kernel messages.Pavel Machek:
Suggested to use gettext for message documentation / translation.Useful links:
=============
There already exists a mailing list for the kernel messages topic:
https://lists.linux-foundation.org/mailman/listinfo/lf_kernel_messagesThere was an LWN article summarizing some aspects of the discussion:
http://lwn.net/Articles/238948/Pros and Cons of the different Message ID methods:
==================================================
Message numbers maintained by driver owners:
+ Unique IDs
+ Can be kept stable between different kernel versions
+ Efficient way of matching pri...
Personally? No to the second question, which renders the first "do it
yourself outside of the tree".Just a guess, and I don't speak for anyone else here, but I think most of us
I'm somewhat sympathetic to translation (although I tend to think of it as a
distro's job, and still wonder why IBM is pushing this directly rather than
trying to bounce it off Red Hat or somebody). But you could put a sed filter
around dmesg to give you swahili output entirely in userspace. Have you
shown the simple approach to be insufficient yet?Is "document messages" the same problem as "translate messages", or are these
two different problems conflated together?I find "document messages" to be a horrible idea conceptually, because I think
the messages should _be_ documentation. If the message is unclear it should
be clarified. "There's too much garbage on the floor, we should laminate it#2 has the advantage that you can do it without buy-in from the community, and
without touching the code. (Of course it doesn't necessarily help you if the
printk string is "%s:%s".)But I'm still convinced you could tackle over 90% of the problem from
Will at best only ever be done for some drivers, not all. But that's probably
Only for you guys. Those of us building our own kernels and NOT translating
them or producing "the big book of explanations of kernel messages for IBM
customers who don't understand them" shouldn't have to run this preprocessorImposing additional requirements on developers isn't going to work unless you
reject patches from developers who don't follow your procedures and submit
the appropriately filled-out forms with each patch for processing by the
central bureaucracy.Signed-off-by works because A) Linus enforces it, B) The overhead's very low,
C) attribution is already highly good thing within our community values, D)
it annoys SCO.The javadoc function comments in the source don't have complete coverage and
probably never will (although ...
Actually, at a brainstorming session at the recent Linux Foundation
collaboration summit, there were a number of kernel developers,
including James Bottomley, Greg K-H, Cristoph Hellwig (I think), and
others, who were actually generally symapthetic to the idea, if done
right.The idea that was tossed about was essentially printk hashes (hashed
on message plus filename, with optional reporting of filename+line
number), with the messaging catalog being maintained externally. Yes,
that will be a major pain for whoever wants to do the translation ---
but it puts the onus on the people who would be getting the value for
this to do the work.The other idea that was tossed about was that for subsystems that are
using structured reporting (i.e., dev_printk, and sdev_printk in the
SCSI subsystem --- guess who suggested that :-), that there is an
opportunity to push a lot more information out to userspace for people
who want to use this facility to more easily determine when something
has bad happened to a particular disk device, for example. This goes
a little a beyond the original stated desire for translation support,There are two separable desires being addressed here. The first is
"cute" messages such as "lp0: on fire". Yes, maybe those should be
fixed, but sometimes kernel developers *like* cute messages. (Sniff,
I'm pretty sure there used to be a "eaten by a grue" printk, but it
doesn't seem to be there any more. :-) Fixing these is largely a
political problem: "of course printer on fire makes sense".The second desire is where people want entire paragraphs discsusing
possible causes of the messages and recommended responses to be
carried out by the data center's 3rd shift operations guy (aka "tape
monkey"). That's not something you *ever* want to put in the kernel,
and who ever compiles such a long document will probably sell it for
$$$ as significant value add. Which is fine, because it is going toYep, I suspect it will only be used by distro kernels. I probably...
Sounds good to me.
Rob
--
"One of my most productive days was throwing away 1000 lines of code."
- Ken Thompson.
-
The tools can extract the strings if marked _() which is easy work to do
and you usually only want to hit a subset of strings anyway [the ones
that occur usually].Having implemented an encheferizer in a much older kernel its worth it
even for the humour value of a valspeak kernel (plus some people will
never be happy until it says things likeSYS-E-FOO: Incorrect operating system in use
-
If that is the opinion of the majority here, fine. If there is no hard
rule on how to define printk macros, one option for us would be to
define some new s390 specific printk macros for our device drivers.
Similar to hundreds of other driver specific printk macros in theMichael
-
Hi Micheal,
This is a late response to your summary below.
First of all, there is a lot of interest in this issue among Japanese
vendor community. Recently, I have built a Japanese mailing list to
discuss this issue. I'm posting this comment resulting from such discussion.(1) Your kernel development proposal will be greatly supported by
Japanese vendor community. At the same time, it needs support from the
kernel communities, as well.
(2) As for message ID's, you proposed 3 ways; (a)adding message numbers,
(b)printk hashes and (c)Format strings. (a) seems difficult to get
supports from kernel developers and (c) lacks uniqueness of each
message. Though (b) also lacks uniqueness, adding component id and/or
file name (files name could be hashed, as well), it could achieve some
practical level of uniqueness. To avoid ugly message format, it could be
possible to introduce a system parameter to suppress this hash ids.
Thus, our preference is (b).
(3) As for a documentation file, outside of kernel source tree would be
fine.
(4) When this kernel message scheme become feasible, it will be needed
to talk about the standardized contents of each description
(meanings/actions/etc).Takashi Kunai
--
Kunai, Takashi
The Linux Foundation Japan (New since '07/2/5)
Shibuya Mark City West 22nd Floor
1-12-1 Dogenzaka,Shibuya-ku,Tokyo,Japan
zip150-0043 tel+81-3-4360-5493-
We have generators for hash functions that guarantee unique results
for a set of inputs. They are even GPLed. As you are operating against
a known target, that should work.Regards
Oliver
-
Right, perfect hash generators require the input set to be known
But, I'm not sure they'd be operating against a known target -- I don't
really know what exactly would be hashed, but if it's kernel printk()
messages (the format string, obviously), then please remember that
new messages would get added all the time, and unless we're also
willing to change the hash function every time a printk() gets added
to the kernel (whew!) it's going to be a problem -- especially because
we don't really want to generate new hash functions for every kernel
version / or for every kernel build, because we'd obviously like the
same error message to hash to the same value across versions.If we really care about uniqueness, the only solution I see is to use
a strong/cryptographic hash function (say SHA-1, which would never
change in the future) that generates the hashes for all the printk()
messages that are getting compiled-in at build-time ... but it would be
slow, of course.Satyam
-
I suggest exactly that you build a new hash function for every build.
Nothing but your translating demon need ever see it. We build a new
System.map every time and it doesn't hurt.Regards
Oliver-
There is a very strong reason for the kernel community to NOT support
this: it makes it much harder to deal with bug reports.Like it or not, English is a lingua franca[1] of the technology
industry. When I deal with the rest of the kernel community, I use
English, instead of my native language (Swedish).For things that are targetted toward end users, that's a different
matter, of course, but kernel messages are inherently directed toward
developers and technically sophisticated users.-hpa
-
Hi,
I strongly agree with you.Please keep kernel clean.
-
In regard to translating kernel messages:
Agreed.
There's a proposal in play for translations of documentation, and to
recruit "language maintainers" (which is an idea I see that Matt Mackall came
up with before I did).A language maintainer is somebody who can accept a patch in language X,
translate its description to post on the appropriate english-only list with a
cc: to the appropriate maintainer(s), and translate questions and reviews
back and forth for the original author until the patch can be merged. (This
means that documentation translations don't result in a stream of unmergeable
patches.)As for the documentation translations themselves, I note that Eric Raymond
dissuaded me from actually hosting translations of kernel documentation on
http://kernel.org/doc due to his experience with translations of his own
writings. If he hosts the translations on his website, they never get
updated again. But if he makes the contributor host them on their own
website, then they sometimes get updated.For my part, I can't _tell_ when a given translation is out of date because I
can't read it, and I certainly can't update it. So I agree with Eric and I'm
linking to sites hosting kernel documentation in other languages rather than
hosting them myself. I've got a good link to a Japanese site, need to ping
the contributors of the chinese documentation and see if they have a site for
it...I await hearing back from Satoru Ueda who might have a lead on a potential
Japanese maintainer, probably after some event in Japan (a "Jamboree") in a
week or two...Rob
--
"One of my most productive days was throwing away 1000 lines of code."
- Ken Thompson.
-
If the documents are already maintained together on one site, it won't
be very hard to synchronize with kernel.org. Eric is right for the casePlease add a link to http://zh-kernel.org/docs for Chinese translated
kernel documentation.- Leo
-
Include the last git commit on this file in the translated document?
This would also make it easier for a translator to update a document
because a diff on the original document since the last translation wouldcu
Adrian--
"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed-
Ok, back up.
Let's look at _english_ documentation.
If you go to http://kernel.org/doc/ols you should find, nicely split up, all
the OLS papers from 2002-2007. By my count, there are 337 of them, totaling
61.8 megabytes when they're split up like that. Being PDFs, they don't
compress all that well.Which subset of these should be copied into the Documentation directory? How
do you update them? This is the documentation from just ONE SOURCE.And PDF isn't close to the worst of it: Linuxconf.au has lots of video, as
does google video. (I don't even have _english_ transcripts for those
videos, which would be nice.) Do you want to merge all of this into the
kernel tarball as well?How does this help keep anything up to date?
Rob
--
"One of my most productive days was throwing away 1000 lines of code."
- Ken Thompson.
-
Oooh! That's nice! I didn't notice the "nicely split up" part earlier.
Any chance we can get the original docbook inputs that OLS uses
for paper submissions? Have you asked Andrew or Craig about this?Also, it would be nice to correlate the talk names with the individual
PDFs. Do you want me to solicit inside CELF for a volunteer for this?
We'd probably produce a wiki page of links, based on your
list.txt file and the proceedings index.
-- Tim=============================
Tim Bird
Architecture Group Chair, CE Linux Forum
Senior Staff Engineer, Sony Corporation of America
=============================-
I've asked, but OLS was in the process of happening and they were kind of
I'm working on that: http://kernel.org/doc/ols/2002
I keep getting distracted by new material coming in. Need to shut it out for
Yes please. I'm happy to have volunteers help out with any of this, if I can
figure out how to sanely partition it.I'm not just collating names with papers, I'm also reading the paper and
trying to come up with a one page summary. If you look at
http://kernel.org/doc you'll see a (now stale) version of an index skeleton.
I'd like to link to all these papers from one big index. And also link the
Documentation files into the same index. And http://lwn.net/Kernel/Index/
and Linux Journal's archives and...That's the hard part. Indexing it. Piling up a big heap is easy.
You'll notice that Documentation has its own 00-index file, which doesn't even
refer to the make htmldocs output. The lwn kernel material has an excellent
index. The Linux Journal articles have a chronological archive. Every
volume of OLS papers starts with a brief index.And the problem is, every time somebody notices the problem they start a _new_
index that doesn't use any of the others. (And they keep wanting to do it as
a wiki, which dooms the project. In my experience wikis aren't stable and
only locally versioned. They're not designed to be snapshotted as a coherent
whole, which is the _point_ of an index. If you deep-link into a wiki you
get 404 errors after a while. They're a good tool for the "piling up
information" part, but a bad tool for editorial jobs like organizing and
indexing existing information. Wikis are designed to be decentralized, so
the left hand doesn't have to know what the right hand is doing, but
editorial functions is all about collating, coordinating, and correlatingI have a list.txt file? (Rummages.) Oh, that's actually extracted from Red
Hat's 2007 OLS web page (see the link at top, "mirrored from here".)I was using Red hat's b...
OLS uses LaTeX, not DocBook, for submissions AFAIK.
-hpa
-
Yeah, but their retention of the original latex has been... Iffy. And their
indexing was a bit rushed. http://www.linuxsymposium.org/proceedings.php
goes up to 2005. If you go to
http://www.linuxsymposium.org/2006/proceedings.php you'll see a mirror of the
other page with 2006 added (why not update the top level one? No idea.)
Then 2007 is off on a Red Hat site (mis-numbered) and not even hosted on
linuxsymposium.org.If you look at http://kernel.org/doc/ols/2006/slides/ you'll notice I mirrored
all the presentation slides (not the same as the papers). Two of them had
already gone down before I got there, but I managed to get a fresh copy of
Steven Hill's uClibc NPTL slides when I bumped into him at OLS. (My mirror
has it, the original site it links to is 404.) I still haven't tracked down
Kristen Accardi's slides, and that's one that was theoretically mirrored on
the OLS website itself, yet the link is 404...I'm not complaining, by the way: busy people get the data out and then move
on, it's up to people like me to go back and clean it up if you want any kind
of data retention. (And THEN you have to periodically figure out what's
still relevant and what's only of historical interest. Wheee...)Right now, I'd be happy to just get the PDFs of 2001 and earlier. There's a
apparently one year they only have on paper, and one of the others is on a CD
that Andrew thinks he knows where it is, but hadn't had time to dig up when
last I poked him...If latex shows up, I'm all for it. But for now, I'm happy with the PDFs.
(Hey Tim, you want something for a volunteer to do? Index the 2006 papers,
then match up the 2006 slides with the corresponding papers. I can go
through and add in summaries afterwards... And note that the index.html
should have _relative_ links, not absolute ones, because I want anyone to be
able to tarball up the whole site and locally mirror it. I need to do a big
script that fetches the external things like the ols papers ...
You don't have to copy everything.
And you anyway have to handle cases like e.g. most books where you are
You aren't legally permitted to update any OLS paper unless you've
gotten explicit permission by the author. And when he gives legal
permission, he can as well give you the LaTeX source. I'd expect legal
and technical update possibilities to usually be related this way.You can only update things you are legally and technically able to
cu
Adrian--
"Is there not promise of rain?" Ling Tan asked suddenly out
of the darkness. There had been need of rain for many days.
"Only a promise," Lao Er said.
Pearl S. Buck - Dragon Seed-
This is exactly what I'm saying. I don't want to copy the translated
documentation, I want to point people to it. Out on the web. Where it's
maintained by the people who translated it, which history says they'reA) http://www.linuxsymposium.org/2007/cfp.php under "Publication Rights":
Further, as stated in the official templates, and on the Credits page from
the Proceedings of this year and prior years: "Authors retain copyright to
all submitted papers, but have granted unlimited redistribution rights to
all as a condition of submission."So it's free as in speech but not beer.
B) I'm using these as examples of things to NOT merge into the kernel sources.
As an english speaker, I am not technically able to update non-english
documentation. Since the only common language required of linux kernel
developers has ever been English, only the english documentation makes sense
to merge into the kernel tarball. Merging anything else guarantees that the
vast majority of the contributors will never be able to review or update it,
so merging it into the kernel tarball does not result in extra review or
maintenance.Extrapolating the review benefits of C code that breaks the build for
everybody if you do it wrong to chinese documentation you can't even
_read_... Apples and oranges, it's a false comparison. I don't see howRob
--
"One of my most productive days was throwing away 1000 lines of code."
- Ken Thompson.
-
Yeah, but it seems like having a translations directory in the kernel
avoids that problem - anyone can update, it is a single source, no digging
for sites that aren't tied to the kernel, available in the distros
directly, etc.I'm not sure that the web site hosting argument is a good one. Arch
maintainers and Language Maintainers have some similarities. Also, being
able to clearly mark which version of a document was last translated
would help a bit with the fact that most of us aren't proficient in all
of the world's languages. But, knowing who the translation maintainer is,
and when the translation was last updated allows both the original doc
maintainer and the translation document maintainer to see when a document
likely needs to be updated. And that is probably good enough.gerrit
-
No. It doesn't help.
99% of the kernel directory is C. That means any random passerby can review
code. Everyone who has the kernel tarball should be able to review code
that's in there, plus when you compile it breaks. So merging _code_ into the
kernel helps keep it up to date.Merging documentation into the kernel doesn't help keep it up to date, because
documentation being out of date doesn't break the build. It may get the
documentation more review, but the existing state of Documentation/* argues
against that. It's a struggle to keep the english versions on the same
continent as "up to date" or "complete", and most of the _good_ documentation
is out in OLS papers and such (which I'm off indexing as we speak).Now add in the non-english nature of the new Documentation/stale
subdirectories you're proposing. Almost nobody in the existing kernel
community can even _read_ this documentation, let alone update it. People
who update Documentation/* _can't_ update the translations, and that will
_never_change_.Merging into the kernel is a great way to keep CODE up to date. Don't think
Ah, but It's not a language maintainer's job to update documentation. It's
their job to ACCEPT PATCHES. Translate patches, translate questions back and
forth. This has NOTHING to do with documentation unless they're convertingKeeping translations up to date is not something I can do, and thus not my
Thank you. You've just scared away all potential language maintainers by
making them think we want them to translate all the world's existing
documentation. Do you know how long it takes just to read through the
existing Documentation directory? (Have you done it?)When I'm talking about language maintainers I am NOT looking for them to
translate existing documentation or keep Documentation/* up to date for some
other langauge. That's a more than full-time job. I've been looking around
for weeks for someone to just accept Japanese patches, and everybody I'...
There are quite a lot kernel developers for each of the popular
language, AFAIK. For non-popular languages, there shouldn't be
translation available in the first place. It was really a surprise when
I post my Chinese translation on the LKML so many Chinese speakers have
commented on the translation and encouraged the translation work. They
are not visible as they usually don't talk too much. :) So I set up the
Chinese kernel development maillist(linux-kernel@zh-kernel.org), there
will be more and more experienced kernel developer who can read and
update the Chinese documents after they read the translatedIMHO, having contribution merged into the kernel has the MAGIC to
attract people to work for recognition. When more and more peopleLanguage maintainers can integrate updates to the documentation just
like integrating any updates to the code. Working on the documentation
is ,IMHO, a perfect task for novice kernel hacker to get familiar withIt won't be too hard if the work is shared by a community. Like the one
I'm trying to establish.- Leo
Advertisement time:
Chinese kernel development community http://zh-kernel.org :)-
I don't distinguish between "popular" and "non-popular" languages. If
somebody's willing to do the translation work, it's popular. If nobody's
willing to do the work, then even a language 1/3 of the planet's population
speaks isn't "popular" for kernel development.I wouldn't discourage a translator into Klingon if they were willing to keep
The chinese mailing list is highly cool, and my first instinct was to note it
on kernel.org/doc, but it would be better if the chinese website I already
link to notes it instead. (That way I don't have to worry about how to
spam-guard your email address. :)This also highlights the need for language maintainers to help the patches go
upstream to the english list. (If we can avoid armchair commentators
saddling them with the task of translating the entire Documentation directory
and keeping such a translation up to date, we might actually get one too.
Fielding patches and questions sounds like plenty to me...)Could you ask on said list if anyone is likely to volunteer for the position?
Obvious counter-arguments include the floppy driver, the floppy tape driver,
the tty layer, and most of the existing english Documentation directory...I'll happily stay out of the way of people who actually want to merge
translations of documentation into the kernel. I reserve the right to say "I
different than any other patches. Translate the description and questions
going back and forth. The patch itself doesn't get translated when it's C
and applies to scripts/kconfig/, why would it when it's UTF-8 and applies to
Documentation/?Of course this brings up the question "what kind of function and variable
names do chinese people pick?" (I honestly don't know, but I note that
attempts to use names that don't fit in 7-bit ascii would probably be frownedA list works fine as a point of contact. I note that in general, maintainers
are individuals (who delegate like mad, of course), because otherwise agenda
items languis...
The benefit of a localized maillist is that patches can be reviewed and
I do think the documentation translation is very necessary even when
there is a language maintainer, especially for the policy documents as
HOWTO, codestyle , and etc. The contributors should go through these
policies and check their code for compliance before going to the
language maintainer for help, or there will be too much for the language
maintainer to translate. The language maintainer doesn't need to
translate all the documents himself, but he can help to coordinate the
upstream.)If we do need a contact person, I can do it. However I don't think
there will be much translation work to do here. As I stated before,
most Chinese programmers are more or less capable of read/write
technical English. The difficult part is to let them know the benefit
of merging code in kernel and teach them how to do it. That's why the
responsibility.The documents and maillist are also linked in the front page. It's
better to link the top level page.- Leo
-
It would help if all the policy documents got grouped into a single
Documentation/development directory so we could separate "policy documents in
each language would be nice" from "that document about the amiga zorro bus
really needs to be kept up-to-date in Navajo and that should be in the kernel
tarball please".Lemme see, which ones are we talking about? The candidates are:
applying-patches.txt
BUG-HUNTING
Changes
CodingStyle
debugging-modules.txt
feature-removal-schedule.txt
HOWTO
kernel-docs.txt
language-maintainers.txt
ManagementStyle
oops-tracing.txt
SecurityBugs
sparse.txt
stable_api_nonsense.txt
stable_kernel_rules.txt
SubmitChecklist
SubmittingDrivers
SubmittingPatches
volatile-considered-harmful.txtThat's everything I noticed in the top level directory that's a good candidate
to be grouped into a "development" subdirectory. Did I miss anything?I note that Changes is a bit stale in places (16 bit assembly?),
feature-removal-schedule.txt changes often but is good to know,
kernel-docs.txt might be useless to translate considering it's mostly links
to english documentation, language-maintainers.txt is assuming my patch from
earlier today gets accepted...I can submit a patch grouping all that stuff together into a subdirectory if
Does the above look like a good list? There are more that need to be written,
but that's what I saw in Documentation...Rob
P.S. Dear kmail/postfix developers: having a transient DNS lookup failure on
one address in a long cc: list is _NOT_ a reason to have the message stay in
the kmail outbox. It should go into the postfix send queue and be retried
from there. Right now, if I tell it to resend, how do I know who it has and
hasn't been successfully distributed to on the first attempt? I've gotten
dinged for trimming the cc: list before, but now I'm about to send out
duplicates. Wheee...
--
"One of my most productive days was throwing away 1000 lines of code...
Yes, I do think this is a good list for translation.
Greg,
Do you have anything to add?- Leo
-
There are a few documents not in the kernel tree that you
may want to translate too, if your goal is to increase the
number of kernel developers:http://kernelnewbies.org/KernelGlossary
http://kernelnewbies.org/UpstreamMerge
--
Politics is the struggle between those who want to make their country
the best in the world, and those who believe it already is. Each group
calls the other unpatriotic.
-
How about adding;
kernel-doc-nano-HOWTO.txtThese three slightly include some policy in the documents but purpose
are mostly technical. (So, it's just comment)
devices.txt
kernel-parameters.txt
-
Yeah, I guess so. My mental filter was actually more like "how to do linux
development", and it seemed both short and easy to translate, and also
generally relevant to the majority of developers no matter what subsystem
they're working on.That one's not policy either, but it is general non-subsystem-specific
development. Probably "applying-patches.txt" above goes in the same bucket.Whether or not to include that bucket in the new directory depends on whether
The problem is, the generated htmdocs are in english. This file is about how
to generate (and author) English documentation that won't be translated.
What's the point of translating the instructions if the result won't be
translated?On the other hand, if the authors of patches _do_ put javadoc comments into
the source code, the language maintainer should be aware of them and shouldExtracting the policy out into separate documents I could see, but I agree
those are primarily technical.Rob
--
"One of my most productive days was throwing away 1000 lines of code."
- Ken Thompson.
-
People (who even in non-native) would better to know and read it such
htmldocs because there are good and important documents even in English.Further comment on this is that we may need to have another 00-INDEX
-
The english version of htmldocs is generated from the source code. If
translating remotely current versions of htmldocs into other languages was
feasible, then the english version wouldn't need to be in the source code in
the first place.Translating a document _about_ htmldocs boils down to "Dear non-english
speaker: here's something you can't read, nor can you update it either except
though your language maintainer."Rob
--
"One of my most productive days was throwing away 1000 lines of code."
- Ken Thompson.
-
No, kernel-doc-nano-HOWTO includes explanation of tools to extract the
document, format of extractable document in source files and so on.
I thought this file would help non-native people, how to extract or add
in-kernel extractable documents.
I understand that these tools will generate English documents but
that's OK. Such large volume of documents are not easy to translate
-
Which will be in english, so why can't the instructions on how to do it be in
Then the instructions how to do it in english should be ok too. If they can't
"Here's how to get a result that will be useless to you."
Why? What's the point? I'm not seeing it.
Rob
--
"One of my most productive days was throwing away 1000 lines of code."
- Ken Thompson.
-
It seems my explanation was not enough.
We (like me, usually not using English) can read English but it takes
more time than you (and any natives). So, reading large document takes
huge amount of time. In case of htmldocs, it is actually large and
developer may give up before start.
I thought that if some part (like how to do it) are translated into
his/her familiar language, he/she may not give it up.
Yes, it may not be.Another viewpoint is that if he/she need to modify some interface and
it may need to change some part of extractable document, this file
includes, "How to add extractable documentation to your source files".
It will be some help as well.
Yes, He/she should write English and it may take long time but hopefully
-
I would like to comment from Japanese situation.
I do also think the documentation translation is necessary even if
there are language maintainer are not there. HOWTO like very
fundamental documents will great help for early stage of developers.
The contributors/early stage of developer will be able to follow
coding style and so on if the documents are easy to read.So, maintain this kind of document in local language are necessary
even if there are no language maintainer.I believe the language maintainer should mostly take care about the
I also think that most Japanese developers can read/write technical
-
Proposed patch adding Li Yang to MAINTAINERS, and Documentation
describing what a language maintainer is.Signed-off-by: Rob Landley <rob@landley.net>
--
Woot! See attached patch and sign-off-by if you want the job. :)
The bit about "the maintainer forwards, not the list" is a suggestion to
prevent duplicates. It doesn't mean you can't delegate, just that if it's
open season on the list translating stuff _and_ forwarding it, then
linux-kernel will get dupes. (Plus other maintainers are more likely
to pay attention to somebody they've heard from before.)Greg KH had entire an OLS presentation about how the developer ->
maintainer -> subsystem -> anderew+linus forwarding is more
an ideal than a reality, but at least it gives us a frame of reference
to diverge from:
http://lwn.net/Articles/240402/diff -r edfd2d6f670d MAINTAINERS
--- a/MAINTAINERS Tue Jul 10 17:51:13 2007 -0700
+++ b/MAINTAINERS Thu Jul 12 11:51:19 2007 -0400
@@ -2146,6 +2146,13 @@ W: http://auxdisplay.googlepages.com/
W: http://auxdisplay.googlepages.com/
S: Maintained+LANGUAGE (CHINESE)
+P: Li Yang
+M: LeoLi@freescale.com
+L: linux-kernel@zh-kernel.org
+W: http://zh-kernel.org
+S: Maintained
+
LAPB module
L: linux-x25@vger.kernel.org
S: Orphan
--- /dev/null 2007-04-23 11:59:00.000000000 -0400
+++ linux-2.6/Documentation/language-maintainers.txt 2007-07-12 11:49:20.000000000 -0400
@@ -0,0 +1,20 @@
+The langauges in which the Linux kernel is developed are C and English.
+(Note that Linus Torvalds' native language is Swedish, yet he chose
+to hold technical discussions in English.)
+
+The job of a language maintainer is to provide a point of contact for
+non-english speaking developers who wish to merge their patches into the
+Linux kernel. Each language needs a specific language maintainer, who
+accepts non-english patch submissions on behalf of the Linux kernel.
+
+A language maintainer accepts patches to the Linux kernel, written in C, from
+authors who do not al...
In addiction to this responsibility, I would like to add two more which,
in my opinion, are more important. And these are what I'm trying to
do. :)
First, promoting contribution to Linux kernel in local language.-
Cool. It's good to do that, but not the problem I'm worried about solving.
I was trying to describe the minimum requirements for being a language
maintainer, I.E. what non-english users need in order to be able to merge
their patches. Because without someone to contribute patches to (I.E a
language maintainer), documentation in non-english languages promotes the
creation of patches that can't be merged. That's the problem I'm trying to
solve.To me, finding language maintainers is the flip side of the coin of
translating documentation.Rob
--
"One of my most productive days was throwing away 1000 lines of code."
- Ken Thompson.
-
I think you worried too much about this problem. :) Let me explain
the situation here in China more clearly. Actually, English is
mandatory in most schools and universities. Only very few people
learn other language as a second language. Therefore software
developers who are almost educated should have the basic English
skill. However, that doesn't mean that they can read English or
communicate with native English speaker very easily. Consider your
second language learn in school for analogy. Read in English will be
much slower and more likely to cause misunderstanding. This will
reduce the likelihood greatly of English documentation being read. If
we are promoting contribution to the Linux community, we should
maximum the possibility that these key documents being read.
Translation will serve this purpose very well.So the possibility is very little that a translator is needed between
the Linux maintainer and a Chinese developer. Although sometimes help
is needed when there is misunderstanding.After a brief talk with the Japanese translator, I think the case is
similar for Japanese too.Therefore, in my opinion, language maintainer should be more a helper
and promoter rather than a gatekeeper. I will give a proposed process
later about how this helper mechanism works.- Leo
-
Yes, In Japan, situation is mostly the same.
We are trying to increase number of Linux community developer with
Linux Foundation Japan or CELF people in Japan.
In our discussion, the problem is not only Language.In case of some developer, once he step forward (he try to send patch
or comment on LKML), he got some comment and he can work with
community even if it's slow (because of he was non-native).
So, I thought if some key document are available in Japanese like-
Here is the helper process I propose to help more people to participate.
Suggestions and comments are welcomed.1) Developer who can't speak English or has a problem going through the
submission process sends patches to the Language maintainer and cc the
local mail list provided.
2) Language maintainer and experienced Linux developer on the local mail
list can review the patch and give comments in native language.
3) When the language maintainer thinks the patch is good in general, he
will pass the patch onto corresponding subsystem maintainer and mail
list for further review, cc the author and local list.
4) The author communicates directly with the community.
5) If the author has a problem understanding the comments or expressing
himself in English, he can ask for help in native language on the local
list. The language maintainer and the developers on the list are
responsible to help out.
6) When the developer gets familiar with the submission process and can
go through it with no problem, he can then submit patch directly without
the helper process and probably join the mail list to help other new
developer.- Leo
-
You know your area better than I do. If you think that will work, I certainly
Rob
--
"One of my most productive days was throwing away 1000 lines of code."
- Ken Thompson.
-
I think you're absolutely right about that. The stuff that will help
most of have translated is (kernel)newbie type documentation, the stuff
one wants when being introduced to the community.-hpa
-
Actually, I disagree. English *is* the second language learned in
school for most European developers (except, obviously, the ones fromWhat we have found in Europe, is that that it has limited value, and
that the closer to the core you are, the less value it is, because at
that stage you should be communicating more with other developers.
Putting yourself behind a wall of translation is unfortunately a
detriment in that way.-hpa
-
There is somewhat of a difference though: English and both our native
languages are very much related. English, Dutch (my native language) and
Swedish (yours) are all Germanic languages -- English and Dutch both West
Germanic and Swedish only slightly farther removed as North Germanic. Word
for word translations not _too_ infrequently actually make okay or at least
understandable Dutch...Other than Germanic, the Slavic (Polish, Czech, Russian, ...) and Latin
(Italian, Spanish, French, ...) language families are two other direct
Indo-European descendants that are fairly well represented in the kernel
community but I believe it's a largely unsurprising observation that members
of both these families have a somewhat harder time adopting English. And
Chinese is not even Indo-European...However -- in Europe I notice culture might be even more important than
school _or_ language family is and as such I believe the above argument
isn't all that important anyway. English is the second language we learn in
school here in the Netherlands but it's much more popular than say German, a
language even closer to Dutch, due to us having heard English basically from
the time we're old enough to hear music and watch TV. Most _Dutch_ bands
sing in English and the ones that don't are for a part targetting the
elderly and/or mentally handicapped...German is close enough to Dutch (and English itself) to rule out most
differences related to native language, but in Germany a significantly
smaller percentage of people speaks English well enough to be comfortable
with it than in the Netherlands simply due to them producing more of their
own culture. It's a larger language zone to market to and they dub the
remaining English-language content on TV. Over here in the Netherlands we
sub-title.France is another good example. While a bit farther removed from English
family-wise, English has had lots of influences from French as well and in
any case, learning English shouldn't be...
Then this could be the main reason for the disagreement we have on
this topic. Many people here don't grasp English very well even after
the English classes.- Leo
-
Not all those from the British Isles. A first language an English as
school language is not that uncommon for segments of the population, and
in Wales schooling may also be such that English is learned as a first
foreign language.That aside, please remember that Europe as a whole is a small place on the
bigger world stage. The total volume of potential developers in the huge
and rapidly modernising nations like India and China is vast, and there
are large highly skilled technical nations that don't teach English to
everyone technical by default.Key documents in other languages is a big help, especially those about
values, culture and standards because they are things that are not easy
to understand if your use of English is technically oriented.Alan
-
No doubt. My point was merely that the closer to the core of
development, the less translated documents help as the emphasis on
interaction *has* to increase.In that sense, a translation of "Linux Kernel Internals" and the other
books written on the Linux kernel is more useful. That doesn't mean, of
course, that there isn't documentation distributed with the kernel that
is intended for users and therefore more useful in translation.
However, I do feel that trying to keep up-to-date translations of design
documentation is at least to some degree a fool's errand, which ends up
having people rely on incomplete and outdated documentation, and cut
them off from the overall community.-hpa
-
Several groups of people are translating the "important bits"
(a different selection for each culture) of the kernelnewbies
documentation to different languages already:http://kernelnewbies.org/RegionalNewbies
I can easily set up additional wikis for anybody who wants
to set up such a kernel documentation site in their language.--
Politics is the struggle between those who want to make their country
the best in the world, and those who believe it already is. Each group
calls the other unpatriotic.
-
Poor person... I'm not sure this can work for non-trivial patches.
Pavel
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
-
We'll see. Personally, I'm more worried about how people who don't speak
english are supposed to choose function and variable names. But translating
_just_ the patch is not the end of it, and I wanted to make that clear.I suppose a translator can always push back and ask for a _concise_ review,
for the sake of translation. But let's not invent problems before theyRob
--
"One of my most productive days was throwing away 1000 lines of code."
- Ken Thompson.
-
Choose \Choose\, v. t. [imp. {Chose}; p. p. {Chosen}, {Chose}
(Obs.); p. pr. & vb. n. {Choosing}.] [OE. chesen, cheosen,
AS. ce['o]san; akin to OS. kiosan, D. kiezen, G. kiesen,
Icel. kj[=o]sa, Goth. kiusan, L. gustare to taste, Gr. ?,
Skr. jush to enjoy. [root]46. Cf. {Choice}, 2d {Gust}.]Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.orgIn personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
-
^^^^^^^^^
^^^^^^^^^^^Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.orgIn personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
-
The guys at the Klingon Language Institute are going to have a fit - what's
the Klingon word for 'freezer' as used in our suspend code? :)
Considering that Klingon didn't have "to be" before Star Trek 6 needed hamlet,
I suspect they'll manage somehow.Rob
--
"One of my most productive days was throwing away 1000 lines of code."
- Ken Thompson.
-
One thing that would be a VERY good idea is to make sure that each
translated document is tagged with when it was last translated, and
against which kernel version (using either a GIT commit id or a
2.6.x.y revision, I don't care), and who is responsible for keeping
that particular document translated. That way, it becomes a lot
easier to recognize when something is stale, and if has gotten stale,
we can just delete it.If someone keeping some files translated into Klingon up to date for 3
months, and then disappears, we can just delete it, and it's no big
deal. You can even say "I told you so" when you submit the patch toI agree; if we're going to have a language translated in
Documentation/<lang>, there ought to be one or two overall language
maintainer, plus a maintainer for each file that is being translated,
who is responsible for updating the translated file when the base
English Documentation file is updated.- Ted
-
The English versions need a last updated too, that way we would know when
they are past their best before date (as most of them are)
-
You can get this out of git annotate. (Or in my case, hg annotate from
http://kernel.org/hg/linux-2.6 .)Cleaning up Documentation is on my todo list, but for this month I'm trying to
integrate the existing Documentation files with things like the OLS papers,
linux journal articles, lwn.net kernel articles, man-pages, and so on into
one big index. (Indexing it requires reading large chunks of it. My brain
hurts.)If there's interest, I can push some patches to clean up Documentation by
moving files into subdirectories, but Documentation's not well-suited to link
out to the web. (You need html for that, and it's text.)Rob
--
"One of my most productive days was throwing away 1000 lines of code."
- Ken Thompson.
-
I think that you should start moving Documentation/ files around
and adding subdirectories -- if you are pretty sure of where they
should go (i.e., they won't likely be moved again later on).---
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***
-
You mean like these?
http://www.uwsg.iu.edu/hypermail/linux/kernel/0705.3/2925.html
http://www.uwsg.iu.edu/hypermail/linux/kernel/0705.3/2924.htmlRob
--
"One of my most productive days was throwing away 1000 lines of code."
- Ken Thompson.
-
Yes. Have any of these been merged?
---
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***
-
Not that I know of. They seemed to meet with resounding indifference, so I
went on to other things...Rob
--
"One of my most productive days was throwing away 1000 lines of code."
- Ken Thompson.
-
You need to be persistent. Please re-submit this.
and since it's just file & dir moves and done via git, it should go to
Linus. However, he may not want it right now since the primary
merge window for 2.6.23 has closed (although he has been merging
some other doc updates recently).---
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***
-
Greg KH thinks it's a good idea to add language directories to the top level
of Documentation, and there are slightly more than two of those:
http://www.translatorscafe.com/cafe/Help.asp?HelpID=59Since you think it's worth doing, I'll resubmit the work I've already done
here, but I no longer think trying to shovel Documentation into some
semblance of order against the will of people like Greg is a good use of
time.These days I'm trying to create an html index that links into Documentation in
a coherent order (with categories and everything), and using automated tools
to detect files that aren't linked to, or links that point to a file that
isn't there anymore. This is obviously still a work in progress, but I thinkIf moving text files from one location to another in the Documentation
directory breaks the build or causes bugs in the kernel, we have bigger
problems. :)Rob
--
"One of my most productive days was throwing away 1000 lines of code."
- Ken Thompson.
-
Better than cleaning up what we have in the kernel source tree? Why not
work on that first, then the "automated" type stuff would be much easier
to do later, right?thanks,
greg k-h
-
How does an automated 404 checker that identifies files nothing's linking to
get easier if the source files are in a different order? They could be
alphabetical in one big directory and that would work the same.Moving Documentation around is pointless churn that does nothing to prevent
you from adding language directories to the top level on a whim, as if there
were only two instead of (as I pointed out last message), several dozen.
(While Randy Dunlap's poking me to resubmit my patch to group the
architecture documentation into an architecture subdirectory, you're adding
language directories to the top level instead of in their own subdirectory.)Documentation doesn't even cross-link to the output of make htmldocs (which
has its own structure imposed on it due to being extracted from the kernel
sources). The kernel tarball has _two_ documentation sources that don't
significantly cross-reference each other, and Rusty just submitted "make
Preparation!" for lguest that's totally unrelated to either of them (and
starts from a README file buried in the source code). None of this links to
the menuconfig help entries, and the only reference in Documentation/
to "make help" is in Documentation/kbuild/makefiles.txt which explains that
its purpose is to list the available architecture targets (something it does
not, in my experience, actually do).The idea that the kernel Documentation directory is the master repository of
kernel documentation is an unworkable fantasy. The Documentation directory
cannot index for all the kernel documentation resources out on the web,
because it's in text not html. Documentation was created on the assumption
that it would contain all interesting resources, as text files, but that
doesn't match reality. Documentation is merely one resource among many, and
to link _out_ you need HTML.Some of the resources out there are organized chronologically, such as the
Linux Journal archives [ message continues ]
Do you suggest HTML files in linux/Documentation? I think we can follow
URIs and other references in plaintext files just fine.(People who want clickable links in plaintext files can use plaintext
viewers which implement this, or utilities or browser plugins which
follow URLs in the clipboard.)
--
Stefan Richter
-=====-=-=== =--- --=--
http://arcgraph.de/sr/
-
I've thought about it, but right now Documentation is text. Converting all
the existing text files to html is a fairly intrusive change, and having
multiple file formats in there seems even more untidy. (What next, pdf?).I'm aware there are some docbook files in there, plus an ancient graphic file,
plus the bloody stains of various chicken sacrificies, but the point would beGo for it. Have fun. I'll be over here.
Rob
--
"One of my most productive days was throwing away 1000 lines of code."
- Ken Thompson.
-
My "will" is only that some of these documents be translated _and_ put
in the main kernel source tree. I really have no opinion on where they
need to go within that directory. If you have a better place for them,
please let me know.thanks,
greg k-h
-
A common subdirectory. I'd probably put it in "Documentation/translated" with
a README at the top level of that explaining what it's for.I can push a patch to move them, but reorganizing Documentation doesn't turn
it into an index that can link out resources outside itself. If reorganizing
it to be less of a compost heap is a separate goal in and of itself, I can do
that...Rob
--
"One of my most productive days was throwing away 1000 lines of code."
- Ken Thompson.
-
I've got the impression that whenever I saw a "last updated:" note in a
documentation, this note was out of date.
--
Stefan Richter
-=====-=-=== -=== -==-=
http://arcgraph.de/sr/
-
RCS and SCCS let you stick stuff like $DATE and $VERSION into the source, so
it would be automagically replaced at checkin/checkout time. Not sure how
well that would work across a mesh of 'git pull' and 'git push' across trees. :)
Good idea. So a "last updated" date field will be required for both the
English and translated documents. Date will be more straight forward
than using commit id, IMHO.- Leo
-
Well, date and kernel version id, then. Otherwise they may be
confusion if the translator is using 2.6.16.35 as opposed to
2.6.22-git3, etc. I would hope that the translator would always be
using only the latest development branch, but I wouldn't want to
always bet on that. One advantage of using git commit id is that
there's no question about what the source document version was for the
translation. It also makes it easier for the translator since they
can just diff between the last git commit id, and HEAD, and then
update their translation accordingly.- Ted
-
Hi Rob,
On Tue, 2007-07-10 at 12:12 -0400, Rob Landley wrote:
With the checker tool, which we suggested in the initial proposal, it is
possible to verify* that every marked message has a description
* that there are no descriptions without corresponding messages
* that format strings of message and description matchSo when compiling the kernel using C=1, you will at least see warnings,
CHK include/linux/version.h
CHK include/linux/utsrelease.h
CHECK drivers/kmsgtest/kmsgtest.c
drivers/kmsgtest/kmsgtest.c: Missing description for: kmsgtest.1
drivers/kmsgtest/kmsgtest.c: Description without message for: kmsgtest.3Michael
-
"Document message" is for the cases where the message itself does not convey
enough info.
No need to add more text when the initial message is good enough.Sam
-
Maybe a stupid idea but why do we want to assign these numbers by hand?
I can imagine it could introduce collisions when merging tons of patches
with new messages... Wouldn't it be better to compute say, 8-byte hash
from the message and use it as it's identifier? We could do this
automagically at compile time. I know it also has it's problems - you
fix a spelling and the message gets a different id and you have to
update translation/documentation catalogue but maybe that could be
solved too...Honza
-
Why hashes? Just key it off full message, and treat it like normal
translation problem.'lp%d: on fire' -> 'your printer failed basic tests, you should check
cabling'.--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
-
Hi Pavel,
Hmmm... What about extracting all format strings from the KMSG_DOC
macros and storing them in a file. E.g.:printk("lp%d: on fire");
/**
* message
*
* Description:
* Your printer failed basic tests, you should check cabling
...KMSG_DOC(lp, "lp%d: on fire");
Some build mechanism creates a file with all format strings of the
KMSG_DOC macros:E.g.: cat kmsgs.txt
# MSG: "lp%d: on fire"
# COMPONENT: lp
# DESC: Your printer failed basic tests, you should check cablingThen we provide a tool e.g. "kmsg", which gets as input the actual
kernel message and searches the message database for matching formatOf course, we can get duplicate hits, too.
The advantage of that approach is, that we don't need additional message
identifiers like hashes.Michael
-
Yes, that was the idea. But we have already tools and standard format
for this (gettext), we should just use that.
Pavel
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
-
Of course automatically generated message numbers would be great and
something like:hub.4a5bcd77: Detected some problem.
looks acceptable for me.
We could generate the hash using the format string of the printk. Since
we specify the format string also in KMSG_DOC, the hash for the
KMSG_DOC and the printk should match and we have the required link
between printk and description.So technically that's probably doable.
Problems are:
* hashes are not unique
* We need an additional preprocessor step
* The might be people, who find 8 character hash values ugly in printksSince in our approach the message catalog is created automatically for
exactly one kernel and the message catalog belongs therefore to exactly
one kernel, I think the problem of changing error numbers is not too
big.Michael
-
We just had a meeting with the Japanese and several other participants
from the vendor and community side and came up with a potential proposal
that is similar to many things discussed here. It has the benefit that
it seems implementable and low/no overhead on most kernel developers.The basic proposal is to use a tool, run by the kernel Makefile to
extract kernel messages from either the kernel source or the .i files
(both have advantages, although I prefer the source to the .i file
since it 1) gets all messages and 2) is probably a little quicker with
less impact to the standard kernel make.These messages would be stored in a file in the source tree, e.g.
usr/src/linux/Translations/English. As each message is added to that
file, we calculate, say, an MD5 sum of the printk (dev_printk, sdev_printk,
etc.) string, and the text file ultimately contains:MD5 Checksum of text; the printk text itself, the File name, the line number.
The checksum is run over just the printk. We definitely would not include
the line number since the line number is too volatile. Including the
file name in the hash *might* help disambiguate the hash a bit better in
the case of duplicates, but there was some debate that duplicates might
be better handled in other ways.Andrew mentioned a mechanism for adding a subsystem tag or other tag
which helps disambiguate the message, either in the message file or in
the end user documentation (e.g. the Message Pedia/mPedia that the Japanese
have already created with ~350 messages, and a total of ~700 targetted
by the end of the year).That tag could be appended to the beginning of the printk, to the end of
the printk, or even in a formatted comment at the end of the printk that
the tool could extract.Then, the translations could be managed by anyone outside of the normal/
core kernel community, by simply creating a translation file, e.g.
usr/src/linux/Translations/Japanese, which contained the MD5 sum, the
translated message, the file name and line...
Would the compiled-in text then also become replaceable?
Or is the MD5 sum output expected to be in addition to
the regular English message?If message replacement at compile-time is supported, this
could allow for creating "short" versions of the messages,
which could have a beneficial impact on kernel size.Right now, it is possible to completely disable printks
and re-claim about 100K of memory. However, in some
embedded configurations, even if you are space-constrained
it's desirable to retain some of the printks, for in-field
debugging. Thus not very many embedded developers
disable printks completely, even though the option has
been supported for a while. (That, and many aren't caught
up to the kernel version where it was introduced (2.6.10) :-)But compressed messages (shortened text through abbreviations,
or just outputting the ID alone, etc.) could save SOME
of the space, in trade for less readability. Heck, just
removing all vowels would probably save 10k, and not
hurt readability that much.Finally, for testing, it's handy to also
have automatic translation generators.
At a former company I worked for, they had translators
that would output:
* all messages shortened by 20%
* all messages lengthened by 20%
* every message converted to pig-latinThese were mostly used for testing if the strings broke
screen real-estate constraints (which don't apply to
kernel messages). But the automatic translators
would sometimes catch messages with weird attributes.=============================
Tim Bird
Architecture Group Chair, CE Linux Forum
Senior Staff Engineer, Sony Corporation of America
=============================-
The MD5 sum would be calculated at print time, no proposal in
here to replace the in-kernel text. And, I'm not sure that replacing
it with an MD5 sum would every be significantly shorter, ergo
I don't think this helps your problem.The methods of post-processing to "shrink" the kernel text here
seem too ugly to ponder. And I just pondered a few that made my
head hurt (sort the MD5 sums, re-insert the number of the MD5 sum
as an integer instead of the original text, and, beyond being gross,Which ones matter? Odds are you could use the KERNEL_LOGLEVEL or
Ick. Are you serious? How about running them through a valley
I don't think people are worried about the correctness of
the messages and message formats - much of that can actually
be detected by simple tools. The goal here was to at least
allow people that support operating systems and for whom
English (and English collation sequences) is not a primary
language do some initial system diagosis.I think compiling out the messages of something below some LOGLEVEL
is a lot more practical.gerrit
-
The best way to maintain such a subsystem tag most be supported by
kbuild. So say we have the subsystem "scsi" then we can set this subsystem
tag in drivers/scsi/Makefile and let drivers/scsi/arm/Makefile inherit
this vaule doing nothing.Addign the subsystem tag to the printk could than be done using the
C preprocessor and we are all fine.If we go by the kernel-doc way to document kernel messages (the few that
actually needs additional explanation) then we need to teach kernel-doc
to collect the same subsystem tag but that should be doable.Sam
-
Actually I would prefer that such a tool be a clone of
scripts/kernel-doc and use a (slightly?) modified tag instead of
the kernel-doc "/**" tag if this route is used at all.---
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***
-
Hi Gerrit,
The common thing of your and our approach is, that we need an ID to
identify a message either by:* Using hashes + component name (maybe)
* Or using hand-made message numbers + component name. Numbers have
to be unique within the kernel componentI think the main difference of your approach is, that documentation will
be maintained outside the kernel. This has advantages, but also
disadvantages:(+) Developers have less work to do :-)
(+) Kernel sources and patches have less lines of code, since message
descriptions are not contained in the kernel sources.
(+) You can support multiple languages(-) Hard to keep printks and descriptions up-to-date. If using hashes,
each typo fix in a printk breaks the link to your documentation.
(-) Since the developer knows the meaning of a printk best, he probably
would be the right person to write the description.
(-) For every Distribution or vanilla kernel you probably need separate
external message databases.I like the fact, that every printk gets an ID in your approach and you
do not need additional printk macros.Maybe both approaches are not mutually exclusive. If developers would
like to document their messages within the kernel sources, they still
could use kernel-doc and our KMSG_DOC macro do do that.I admit, that I am not sure about the the best solution here.
Michael
-
Hi Michael,
I initiated this discussion in The Linux Foundation Summit@Google Campus
last week from the viewpoint of requirements by Japanese vendors/users.As for a file to store message descriptions, I perfectly agree with your
analysis and we also noticed some (+) and (-) you pointed out in the
meeting last week. Our conclusion was to have a file outside of the
kernel source codes to lessen developers burdens and to encourage better
documentations of descriptions (as Andrew mentioned in his initial message).Takashi Kunai,
The Linux Foundation Japan--
Kunai, Takashi
The Linux Foundation Japan (New since '07/2/5)
Shibuya Mark City West 22nd Floor
1-12-1 Dogenzaka,Shibuya-ku,Tokyo,Japan
zip150-0043 tel+81-3-4360-5493-
Maybe I am missing something big, but why is an ID needed?
The message IS the ID right? That's the only thing that is robust
against code moving about....(And yes I am aware that very occasionally there might be a duplicate
message that REALLY is different, but I suspect that that is so
incredibly rare that it's just simpler to reword one of the two in such
case)-
Yes. As already discussed with Pavel, it is one option to use the format
string of the message as message ID. The disadvantage compared to
message IDs like hashes is, that format strings might be even less
unique than hashes and it's probably less convenient for searching by
operators.Michael
-
if the hash comes from the string in the first place I have a hard time
well.... surely the messages are caught by some userspace program,
right? (like syslog).. that can do the lookup and make it all
conveniently lookup-able and cross-referencable etc etc....--
if you want to mail me at work (you don't), use arjan (at) linux.intel.com
Test the interaction between Linux and your BIOS via http://www.linuxfirmwarekit.org-
On Mon, 2007-06-18 at 18:36 -0700, Arjan van de Ven wrote:
Ok, I agree. Maybe that's really a good idea!
So what about the following proposal:
* Use printk format strings as message IDs
* Use kernel-doc (or similar mechanism) for message documentation
* Use Subsystem tag/component ID for each printk. This might be
optional, but would make sense to get messages more unique.
* Implement a new tool (kmsg) to allow operators
to access kernel message descriptions in a convenient way.The kmsg tool will read the dmsg buffer together with the list of
documented printks, which has been created in the kernel build using
the format strings defined in the KMSG_DOC macros. It matches the known
format strings to the dmesg messages and informs the operator, for
which message he can get a description.Linux version 2.6.9-42.0.3.ELsmp...
....
Desciption: your printer failed basic tests, you should check cablingThe <ID> is generated by the kmsg tool and could be e.g. the hashes for
the matching format strings.Michael
-
Just think of all messages containing %s, which can expand to every
possible string.Michael
-
of course you hash on the string before you do the format stuff....
--
if you want to mail me at work (you don't), use arjan (at) linux.intel.com
Test the interaction between Linux and your BIOS via http://www.linuxfirmwarekit.org-
I think the problem is messages contain device numbers, and all similar
kind of data. So what you'd really like is to use >format string< as ID.
But that is not easily accessible for the user, so you'd have to print itHonza
--
Jan Kara <jack@suse.cz>
SuSE CR Labs
-
For those of us who have not been in on these meetings, I think that
some serious justifications are needed. The last paragraph began to
go in that direction, but it needs to be more detailed and convincing.
And "for debugging" doesn't cut it IMO.--
~Randy
*** Remember to use Documentation/SubmitChecklist when testing your code ***
-
Fair point, Randy.
This came up this time because people in Japan supporting Linux customers
are not always familiar with Linux kernel internals and thus debugging
problems based on a terse, English language message is just painful. Also,
any given message doesn't really provide any input about what *really*
failed, what should be done about it, how to correct this issue, or what
parts to pull out of your machine and replace with properly working parts.So, the Message Pedia is basically a Japanese language wiki today where
people doing support can annotate the messages with real life experience on
what to *do* about the error.Part of the problem is that the error messages when extracted don't
stand alone and don't easily allow tracing back to the real source. When
the problem is handed from the second line support folks deeper into the
support or development organization, the message has to be found in the
source tree in some non-ambiguous fashion.The other problem that comes up in other, non-English locales is that
debugging your Linux box when you are a non-native English speaker is
just plain impossible. Providing a means for getting localized kernel
messages allows more end users to at least reasonably debug their own
machine. Most every user level project today allows localization directly
but the kernel has never had any reasonable mechanism for localisation.Now, the proposal here doesn't make the kernel "as good as" user level
application, but it would at least provide a searchable key to help
people get localized guidance on problems.I'm sure there are other benefits that most can see based on just simple
debuggability. But the Japanese goal is really to construct a database
of debugging info & context based on their experiences.And, I'm sure that others can speak for themselves. I'm mostly playing
scribe on this one - we abandoned our error and event subsystem work years
ago, even though this was one of the biggest weaknesses we saw in custom...
Full "justification" has never really been clear outside of the need to
try to duplicate what other Unixes have had for their support
departments in the past. And yes, I've seen and sat through the
presentation by the Japanese group many different times, and talked to
the individual people who want this.And you know, that's fine. If anyone wants to go off and do such a
project like this, in a way that is almost entirely self-contained with
no affect on the development process or any kernel developer, I have no
objection to it at all.And I think the proposal that Andrew made meets that requirement, so
let's wait and see what actual code comes out of this and judge it on
that merit at that time.thanks,
greg k-h
-
Sorry, I first read: 8 characters not 8 bytes.
Indeed, "hub.d41d8cd98f00b204: Detected some problem." ... does not look
like very beautiful.But maybe also 4 bytes would be enough, since the hash only has to be
unique within one component e.g. "hub".Michael
-
It depends how large components you expect. For example for 10000
messages there is already 1% probability of collision so it means sooner or
later we are going to hit it... For 1000 messages the probability is
roughly 0.1% which is still not so small that I'd be comfortable with it.
On the other hand we could use something like gperf to generate perfect
hashing function and then we don't have to worry about colisions.Honza
--
Jan Kara <jack@suse.cz>
SuSE CR Labs
-
On Thu, 2007-06-14 at 14:26 +0200, Jan Kara wrote:
I wouldn't expect, that a "normal" component like a device driver will
have more than 100 documented messages.Collisions are ugly, but will not hurt much. The operator will see for a
message two possible descriptions. Normally it should be possible to
figure out manually which description is the right one.Michael
-
Some kind of id is always required to be able to identify the message.
There I have my doubts if this can work. If you keep an external
database with the additional information about the messages the kernel
code and the database will get out of sync. Thats why we advocate the
kernel-doc style approach: the message catalogue will always be in syncThis is a paint point with Michaels approach as well. The KMSG_COMPONENT
defines are rather ugly. A clever way how to generate kernel unique IDsWith the KMSG approach all that needs to be done is to replace the
KERN_xxx with KMSG_xxx(<number) and to add a comment at the end of theVery interesting. We did not know about this project. Thanks for the
hint.--
blue skies,
Martin."Reality continues to ruin my life." - Calvin.
-
Ick, why are you ignoring what we have already with dev_printk() and
friends? We are just finally getting developers to use that, I think it
will be almost impossible to get people to change to something else,
especially one that isn't even as "correct" as what dev_printk() offers
you today, will be quite hard.So, why not use what we already have and work off of it?
thanks,
greg k-h
-
dev_printk() and friends are great, since they already define something
like KMSG_COMPONENT: The driver name.But they unfortunately do not solve our problem. We need an identifier
for a documented message in order to find the right description for a
message.We could add new dev_printk macros for KMSG printks:
#define dev_printk_kmsg(kmsg, dev, format, arg...) \
printk(kmsg "%s: " format , (dev)->bus_id , ## arg)
#define dev_err_kmsg(dev, nr, format, arg...) \
dev_printk_kmsg(KMSG_ERR(nr) , dev , format , ## arg)E.g. hub.c:
===========#define KMSG_COMPONENT "hub"
dev_err_kmsg(&udev->dev, 1,
"can't read configurations, error %d\n", err);Which would result in:
hub.1 5-0:1.0: can't read configuration error 4711
Michael
-
I believe it better to simply add __FILE__ & __LINE__ to the
macro rather than some other externally specified unique
identifier that adds developer overhead and easily gets stale.If you go overboard, you could do something like:
#define dev_dbg(dev, format, arg...) \
dev_printk(KERN_DEBUG, dev, DBG_FMT format DBG_ARG, ## arg)#define dev_err(dev, format, arg...) \
dev_printk(KERN_ERR, dev, PR_FMT format PR_ARG, ## arg)etc...
and use config variables to control what additional info is printk'ed.
Go overboard without a life preserver and add __TIMESTAMP__ too.
/*
*/
#if defined DBG_FMT
#undef DBG_FMT
#endif
#if defined DBG_ARG
#undef DBG_ARG
#endif#if defined DBG_FILE && defined DBG_FUNCTION && defined DBG_LINE
#define DBG_FMT "(%s:%s:%u) "
#define DBG_ARG , __FILE__ , __FUNCTION__ , __LINE__
#elif defined DBG_FILE && defined DBG_FUNCTION && !defined DBG_LINE
#define DBG_FMT "(%s:%s) "
#define DBG_ARG , __FILE__ , __FUNCTION__
#elif defined DBG_FILE && !defined DBG_FUNCTION && defined DBG_LINE
#define DBG_FMT "(%s:%u) "
#define DBG_ARG , __FILE__ , __LINE__
#elif defined DBG_FILE && !defined DBG_FUNCTION && !defined DBG_LINE
#define DBG_FMT "(%s) "
#define DBG_ARG , __FILE__
#elif !defined DBG_FILE && defined DBG_FUNCTION && defined DBG_LINE
#define DBG_FMT "(%s:%u) "
#define DBG_ARG , __FUNCTION__ , __LINE__
#elif !defined DBG_FILE && defined DBG_FUNCTION && !defined DBG_LINE
#define DBG_FMT "(%s) "
#define DBG_ARG , __FUNCTION__
#elif !defined DBG_FILE && !defined DBG_FUNCTION && defined DBG_LINE
#define DBG_FMT "(%u) "
#define DBG_ARG , __LINE__
#else
#define DBG_FMT
#define DBG_ARG
#endif/*
*/#if defined PR_FMT
#undef PR_FMT
#endif
#if defined PR_ARG
#undef PR_ARG
#endif#if defined PR_FILE && defined PR_FUNCTION && defined PR_LINE
#define PR_FMT "(%s:%s:%u) "
#define ...
Erk, no. That bloats the kernel to the max. Especially since kernel
files are compiled with a rather longish path.Jan
--
-
There's been plenty of times I've wished for that. Now if we just found a way
to do something sane for drivers/net/wireless/mac80211/iwlwifi/base.c ;)Of course, I'm probably atypical - for me, kernel messages come in two forms,
the kind that are immediately obvious at first reading, and the kind that
you end up having to look at the code and wonder WTF? it was doing inside
that never-should-happen-on-this-hardware while loop in the first place... :)
Why don't you just redefine the KERN_* macros which is used by almost
every printk in the system to contain said __FILE__ and __LINE__, then?-hpa
-
They provide way more than that, they also provide the explicit device
that is being discussed, as well as other things depending on the
device.So if you are going to do this, please use the already-in-place macros
to hook into, don't try to get the driver authors to pick up something
new and different, as it's going to be _very_ difficult, trust me...thanks,
greg k-h
-
dev_printk() and friends provide additional information for a printk
that is related to a device. Not every printk is about a device, so I
think Michaels proposal is orthorgonal to dev_printk. We definitly
should have a dev_printk variant that uses the kmsg documentation tag
AND we should have a normal printk variant as well that uses the kmsgThere is no doubt that it will be difficult to get a larger part of the
developers use the kmsg scheme (e.g. see the reaction of Dave M.). We do
not have the illusion that we can replace every single message in the
kernel, nor do we think that it would make sense to do so. What we would
do for s390 is to check each message in drivers/s390 and think hard if
the message should be 1) removed, 2) replaced with a {dev_}printk_kmsg
or 3) left as it is. Fortunatly for us there are not too many drivers
for s390 ..--
blue skies,
Martin."Reality continues to ruin my life." - Calvin.
-
absolutely... I'm currently trying to convince everyone to get a generic
netdevice-centric printk macro (dev_printk does not print the interface name,
which the netdevice can't store locally since it can change) in and even that is
a pain :)Auke
-
Instead of keeping a list of kernel message ids somewhere, can you base
this off the dev_printk() format argument?You could keep a list of those somewhere, extracted from the kernel
source, and correlate documentation with the _format_ instead of an
arbitrarily assigned message number.-- Dave
-
Ick. Don't touch those checking kernel with sparse.
-
Of course we don't want to have that in the vanilla kernel. I just
wanted to show, how the checker tool has to be used.Michael
-
25 years ago, I did OS/MVT and OS/VS1 for a living, so I know *all* about
This is probably best addressed by cleaning up the actual messages so they're
Gaak. *NO*.
The *only* reason that the MVS and VM message catalogs worked at all is
because each component had a message repository that went across *all* the
source files - the instant you saw IEFnnns, you knew that IEF covered the
job scheduler, nnn was a *unique* number, and s was a Severe/Warning/Info
flag. IGG was always data management, and so on. This breaks horribly if
you have 2 C files that define subtly different KMSG_COMPONENT values (or
even worse, 2 or more duplicates).[/usr/src/linux-2.6.22-rc4-mm2] find . -name '*.c' | wc -l
9959
[/usr/src/linux-2.6.22-rc4-mm2] find . -name '*.h' | wc -l
9933
[/usr/src/linux-2.6.22-rc4-mm2] find . -type d | wc -l
1736You plan to maintain message uniqueness how?
[/usr/src/linux-2.6.22-rc4-mm2]1 find . -name '*.c' | sed -r 's?.*/([^/]*)?\1?' | sort | uniq -c | sort -nr | head
105 setup.c
90 irq.c
66 time.c
58 init.c
50 inode.c
39 io.c
38 pci.c
37 file.c
32 signal.c
32 ptrace.cLooks like you're going to have to embed a lot of the path in that KMSG_COMPONENT
If you don't understand 'Device /dev/foo offline', this description
doesn't help any. And that's true for *most* of the kernel messages
already - if you don't understand the message already, a paragraph
explanation isn't going to help much. Consider the average OOPS
message, which contains stuff like 'EIP=0x..'. Telling the user that
EIP means Execution Instruction Pointer isn't likely to help - if theyAnd this is where the weakness of this scheme *really* hits. I've actually run
into cases where an operator followed the listed "Operator Response" for a
"device offline", and issued a 'VARY 0C0,ONLINE'. And then we got a flood of
I/O errors because the previous shift downed the device because it was having
issues. The response the operator *should*...
I suppose no. If it is going to explode, it will tell you :-)
/* fs/super.c */
printk("VFS: Busy inodes after unmount of %s. "
"Self-destruct in 5 seconds. Have a nice day...\n",Jan
--
-
Hi Valdis,
Of course that would be good, too.
But I think, that we sometimes have the dilemma, that we want to keep
the printks short, but also want to provide as much information as
possible.If the information is to big for the printk itself, because you would
need 10 lines to explain what happened, wouldn't it be good to have aFor each kernel component, like a device driver, we could have one
KMSG_COMPONENT (e.g. "acpi", "pci", etc). Within that component the
message ids have to be unique. A tool could check, if messages are
unique within the kernel sources.We could use something like a Documentation/kmsg-components file with a
I agree with you, that most of the kernel messages do not need further
documentation. But I am convinced, that there are plenty of printks,I can understand your frustration here. But that's a general problem
with documentation. You never can foresee everything.But should this mean, that we shouldn't document anything?
Michael
-
Hi,
I think if a message really has to be 10 lines long to be clear then
it should just be 10 lines long. The keyword is "really".Example: oops.
--
Krzysztof Halasa
-
Isn't this what the severity levels are for? Not just filtering messages out
Seconded.
The point of a diagnostic message is to convey information. Deep in the
bowels of chipsets there are diagnostic messages that get spit out as
hexcodes that some program needs to interpret, but that's why we have tools
like http://kernel.org/pub/linux/kernel/people/davej/tools/parsemce.c and
such.If the diagnostic messages need a talmud, I see this is as more of a problem
If you're going to tweak printk, please make the darn thing take an integer
first argument rather than a string first argument, so we can use clever
macros to remove them at compile time rather than having them compiled in but
not displaying.This is one of those things buried down on my todo list. I think it can be
converted incrementallyGoing back to the original patch here, there are exactly two examples of what
This is just a thought: why not have the actual kprintf say "Device number %x
is %s" where %s is "online", "offline", or "broken"?kprintf(LEVEL "device %x not online, try 'chccwdev -e %x'", devnum, devnum)
Rob
-
I'm not sure we want to make Linux more like z/* in this regard. :)
The problem with your proposal is that every time a new message in the
kernel is created or modified, you need somebody to go update that
documentation. It's going to get out-of-sync very fast if this isn't
done, and you either need to convince and teach each and every kernel
contributor to follow your lead, or have a team of highly trained code
monkeys to watch git-commits and resubmit documentation for every diff
that touches a printk.I think it's a great idea to go and update some of these obtuse kernel
messages with more understandable wording. It might even be nice to
update the Documentation/ about what kinds of messages are good or bad
to have. But, I just don't think this is viable to convince everybody
to do this. Do you have a list of printks that are causing your
customers trouble?Does every printk need one of these? What do we do with the existing
printks? Who will convert them over? How do we enforce the rules if
new printks must have documentation written for them? Who writes the
documentation if the printk author does not?If we have a catalog of kernel messages, it obviously needs to be
versioned, but does that mean that we need to keep it in the kernel
tree?-- Dave
-
Hi Dave,
On Wed, 2007-06-13 at 09:37 -0700, Dave Hansen wrote:
You only have to document printks, which are using the KMSG macros.
Since there are tons of self-explaining printks, most of them do not
have to use them.If you change the meaning of a KMSG printk and you don't update the
documentation, it is the same thing like changing a kernel API functionIt is a matter of discipline. If a device driver maintainer decides to
document some messages using the KMSG macros, he has to take care that
the documentation is up-to-date. Since the printks and the descriptions
are maintained together in the kernel code, I think, that's doable.And the checker tool can help to keep the descriptions up-to-date, since
There are quite a lot of messages in our s390 device drivers which
should be documented. Especially for character device drivers (e.g.
tape), where the user has direct interaction with the device.One Example from the tape device driver: "Another host has reserved the
tape device"We should document, how to find out the host, which reserved the tape
and what has to be done on the other host in order to release the tapeAgain: Most printks don't need documentation. We can leave them as they
The maintainer of the component (e.g. device driver) is responsible for
the KMSG printks. If he accepts a patch, which modifies KMSG printks, heFor each kernel a separate message catalog can be automatically created.
This message catalog fits exactly to one kernel and should be installed
together with the kernel.Michael
-
This is no more and no less the same situation that we have with
the kernel-doc documented functions/data in the kernel.I like the concept that the description is kept close to the actual
usage, the tool support and that in general looks like ordinary
kernel-doc documentation.And if people do not dare to update the kernel-doc documentation of
a function then maybe they should not send patches in first place..If we then really want to have the important printk's documented
is another story.Sam
-
| Zhang, Yanmin | AIM7 40% regression with 2.6.26-rc1 |
| Bart Van Assche | Integration of SCST in the mainstream Linux kernel |
| Valdis.Kletnieks | Re: ndiswrapper and GPL-only symbols redux |
| Greg Kroah-Hartman | [PATCH 011/196] sysfs: Fix a copy-n-paste typo in comment |
git: | |
| Sander | 'struct task_struct' has no member named 'mems_allowed' (was: Re: 2.6.20-rc4-mm1) |
| Jarek Poplawski | [PATCH] pkt_sched: Destroy gen estimators under rtnl_lock(). |
| Gerrit Renker | [PATCH 15/37] dccp: Set per-connection CCIDs via socket options |
| Arjan van de Ven | Re: [GIT]: Networking |
| Antonio Almeida | Re: [PATCH iproute2] Re: HTB accuracy for high speed |
