The topic of proper spelling in kernel code surfaces now and again, often with a flurry of spelling correction patches appearing shortly before a major release. The fixing of spelling mistakes in comments is a questionable pastime, as the end goal is generally superficial and yet it can accidently result in breaking things. Or, perhaps the word in question has different spellings in different areas around the globe, such as "flavour" versus "flavor" [story].
Michael Hayes recently looked at spelling in the 2.6.2 kernel, reviewing all the added lines of code to see how many introduced spelling errors. He summarizes, "it turns out that there are around 200 new spelling errors in 2.6.2." More specifically, "A 'wether' (castrated goat) has appeared, along with a 'Rusell' that should be stamped out before it spreads. Someone had a dreadful time with 'technology' and its variants, spelling it wrong 9 different ways." Read on for the complete list.
From: Michael Hayes [email blocked] To: linux-kernel Subject: Spelling in 2.6.2 Date: Tue, 10 Feb 2004 12:09:01 -0800 Relax, this is not a spelling patch. I was curious how fast spelling errors flow into the kernel, so I looked at the + lines in the 2.6.2 patch. A few of the errors already existed, but most of them are new. It turns out that there are around 200 new spelling errors in 2.6.2. A "wether" (castrated goat) has appeared, along with a "Rusell" that should be stamped out before it spreads. Someone had a dreadful time with "technology" and its variants, spelling it wrong 9 different ways. Here's what I found: File Error Should be # ------------------------------------------------------------------------------- Documentation/kernel-parameters.txt Trigge Trigger 1 Documentation/power/video.txt carefull careful 1 Documentation/s390/driver-model.txt registerd registered 1 Documentation/scsi/qla2xxx.revision.notes Consoldate Consolidate 1 Documentation/scsi/qla2xxx.revision.notes disparite disparate 1 Documentation/scsi/qla2xxx.revision.notes resouces resources 1 Documentation/scsi/qla2xxx.revision.notes unecessary unnecessary 1 Documentation/scsi/qla2xxx.revision.notes uneeded unneeded 1 Documentation/sh/new-machine.txt heirarchy hierarchy 2 arch/i386/kernel/acpi/boot.c recogznied recognized 1 arch/ia64/sn/io/drivers/ioconfig_bus.c Unabled Unable 1 arch/ia64/sn/io/sn2/pcibr/pcibr_intr.c requred required 1 arch/m68k/kernel/traps.c propably probably 1 arch/m68knommu/kernel/module.c postition position 1 arch/ppc64/kernel/iSeries_IoMmTable.c assiged assigned 1 arch/ppc64/kernel/iSeries_IoMmTable.c initalizes initializes 1 arch/ppc64/kernel/iSeries_IoMmTable.h Initalizes Initializes 1 arch/ppc64/kernel/iSeries_IoMmTable.h psuedo pseudo 1 arch/ppc64/kernel/iSeries_VpdInfo.c requrested requested 1 arch/ppc64/kernel/process.c dont don't 1 arch/ppc64/kernel/setup.c dont don't 1 arch/ppc64/kernel/signal.c spurrious spurious 1 arch/ppc64/kernel/signal.c wether whether 1 arch/ppc64/kernel/stab.c dont don't 1 arch/ppc64/kernel/viopath.c doesnt doesn't 4 arch/ppc64/mm/hash_low.S Retreive Retrieve 4 arch/ppc64/mm/init.c nonexistant nonexistent 1 arch/s390/kernel/compat_signal.c Alwys Always 1 arch/s390/kernel/signal.c Alwys Always 1 arch/s390/lib/uaccess.S cant't can't 1 arch/s390/lib/uaccess64.S cant't can't 1 arch/sh/Kconfig existance existence 1 arch/sh/drivers/pci/ops-bigsur.c Funtion Function 1 arch/sh/drivers/pci/ops-dreamcast.c existance existence 1 arch/sh/drivers/pci/ops-snapgear.c Funtion Function 1 arch/sh/drivers/pci/pci-sh7751.c exitst exists 1 arch/sh/drivers/pci/pci-sh7751.c genereated generated 1 arch/sh/drivers/pci/pci-sh7751.c intialization initialization 1 arch/sh/drivers/pci/pci-sh7751.c overruning overrunning 1 arch/sh/drivers/pci/pci-sh7751.h Funtion Function 1 arch/sh/drivers/pci/pci-st40.h Defintions Definitions 1 arch/sh/kernel/cpu/sh4/sq.c Infact In fact 1 arch/x86_64/kernel/acpi/boot.c recogznied recognized 1 arch/x86_64/kernel/time.c everytime every time 1 arch/x86_64/kernel/time.c interuppts interrupts 1 drivers/base/class_simple.c assiociated associated 1 drivers/block/as-iosched.c exitted exited 1 drivers/block/as-iosched.c guage gauge 1 drivers/block/ll_rw_blk.c didnt didn't 1 drivers/char/viocons.c wierd weird 1 drivers/char/watchdog/machzwd.c unconditionaly unconditionally 1 drivers/i2c/busses/Kconfig prefered preferred 1 drivers/i2c/chips/asb100.c suprise surprise 1 drivers/i2c/chips/lm85.c Unrecgonized Unrecognized 2 drivers/ieee1394/ohci1394.c dont don't 1 drivers/ieee1394/oui.db Compny Company 1 drivers/ieee1394/oui.db Corperation Corporation 1 drivers/ieee1394/oui.db Corportation Corporation 1 drivers/ieee1394/oui.db Corpotation Corporation 1 drivers/ieee1394/oui.db Develoment Development 1 drivers/ieee1394/oui.db Enterpirse Enterprise 1 drivers/ieee1394/oui.db Incoporation Incorporation 1 drivers/ieee1394/oui.db Reserch Research 1 drivers/ieee1394/oui.db TECHNOLGIES TECHNOLOGIES 1 drivers/ieee1394/oui.db Tchnology Technology 1 drivers/ieee1394/oui.db Technolgies Technologies 1 drivers/ieee1394/oui.db Technoligy Technology 1 drivers/ieee1394/oui.db Technoloiges Technologies 1 drivers/ieee1394/oui.db Technonlogy Technology 1 drivers/ieee1394/oui.db Techologies Technologies 1 drivers/ieee1394/oui.db Techonology Technology 1 drivers/ieee1394/oui.db Tehnology Technology 1 drivers/ieee1394/oui.db resarch research 1 drivers/ieee1394/oui.db telecomunication telecommunication 1 drivers/input/serio/i8042.c conrtoller controller 1 drivers/md/mktables.c Bostom Boston 1 drivers/md/raid6.h Bostom Boston 1 drivers/md/raid6algos.c Bostom Boston 1 drivers/md/raid6int.uc Bostom Boston 1 drivers/md/raid6main.c coverred covered 1 drivers/md/raid6mmx.c Bostom Boston 1 drivers/md/raid6recov.c Bostom Boston 1 drivers/md/raid6sse1.c Bostom Boston 1 drivers/md/raid6sse2.c Bostom Boston 1 drivers/md/raid6test/test.c Bostom Boston 1 drivers/md/raid6x86.h Bostom Boston 1 drivers/media/dvb/ttpci/av7110_v4l.c comparision comparison 1 drivers/media/video/bttv-gpio.c intented intended 1 drivers/media/video/cx88/cx88-core.c enougth enough 1 drivers/media/video/cx88/cx88-video.c Threshholds Thresholds 1 drivers/media/video/cx88/cx88-video.c adaptibe adaptive 1 drivers/media/video/cx88/cx88-video.c interupts interrupts 1 drivers/media/video/tuner.c Initalization Initialization 1 drivers/net/forcedeth.c Miscelaneous Miscellaneous 1 drivers/net/forcedeth.c Substract Subtract 1 drivers/net/irda/act200l-sir.c Regsiter Register 1 drivers/net/irda/girbil-sir.c alread already 1 drivers/net/irda/girbil-sir.c emmited emitted 1 drivers/net/irda/litelink-sir.c avaiable available 1 drivers/net/sk98lin/skge.c Initalize Initialize 1 drivers/net/sk98lin/skge.c deattaches detaches 1 drivers/net/sk98lin/skge.c maintianed maintained 1 drivers/net/sk98lin/skge.c suitables suitable 1 drivers/net/sk98lin/skproc.c Transmited Transmitted 2 drivers/net/tg3.c currupted corrupted 1 drivers/net/wan/hd64572.h transmition transmission 1 drivers/net/wireless/atmel.c encyption encryption 1 drivers/net/wireless/atmel.c implemenents implements 1 drivers/pci/pci.ids formely formerly 1 drivers/pci/pci.ids usefull useful 1 drivers/s390/block/dasd_eckd.c Returnes Returns 1 drivers/s390/char/fs3270.c sucessfully successfully 1 drivers/s390/char/raw3270.c Heigth Height 1 drivers/s390/char/raw3270.c Sucessfully Successfully 1 drivers/s390/char/tape_34xx.c Cartdridge Cartridge 1 drivers/s390/char/tape_34xx.c cartdridge cartridge 1 drivers/s390/char/tape_char.c immediatly immediately 1 drivers/s390/char/tape_core.c Hutplug Hotplug 1 drivers/s390/char/tape_std.c sewuential sequential 1 drivers/s390/char/tty3270.c characeter character 1 drivers/s390/char/tty3270.c successfull successful 1 drivers/s390/scsi/zfcp_erp.c appropiate appropriate 1 drivers/scsi/ips.c Utilites Utilities 1 drivers/scsi/qla1280.c aboring aborting 2 drivers/scsi/qla1280.c paramaters parameters 1 drivers/scsi/qla1280.c quantites quantities 3 drivers/scsi/qla2xxx/qla_def.h accomodate accommodate 1 drivers/scsi/qla2xxx/qla_def.h adpaters adapters 1 drivers/scsi/qla2xxx/qla_def.h aquire acquire 1 drivers/scsi/qla2xxx/qla_init.c adapeter adapter 1 drivers/scsi/qla2xxx/qla_init.c asyncronous asynchronous 1 drivers/scsi/qla2xxx/qla_init.c discoverying discovering 1 drivers/scsi/qla2xxx/qla_init.c remainning remaining 1 drivers/scsi/qla2xxx/qla_inline.h occured occurred 1 drivers/scsi/qla2xxx/qla_iocb.c decriptors descriptors 2 drivers/scsi/qla2xxx/qla_iocb.c occured occurred 2 drivers/scsi/qla2xxx/qla_isr.c aynchronous asynchronous 1 drivers/scsi/qla2xxx/qla_isr.c hammmer hammer 1 drivers/scsi/qla2xxx/qla_isr.c occured occurred 3 drivers/scsi/qla2xxx/qla_isr.c recieved received 1 drivers/scsi/qla2xxx/qla_os.c Opertions Operations 1 drivers/scsi/qla2xxx/qla_os.c adpaters adapters 1 drivers/scsi/qla2xxx/qla_os.c paramaters parameters 1 drivers/scsi/qla2xxx/qla_os.c qeueue queue 1 drivers/scsi/qla2xxx/qla_os.c recieved received 1 drivers/scsi/qla2xxx/qla_os.c remainning remaining 2 drivers/scsi/qla2xxx/qla_os.c succeded succeeded 2 drivers/scsi/qla2xxx/qla_os.c unsued unused 1 drivers/scsi/qla2xxx/qla_rscn.c Retrive Retrieve 3 drivers/scsi/qla2xxx/qla_rscn.c descriptiors descriptors 1 drivers/scsi/qla2xxx/qla_sup.c recommeds recommends 1 drivers/usb/gadget/file_storage.c oonsistent consistent 1 drivers/usb/gadget/pxa2xx_udc.c dont don't 1 drivers/usb/host/ohci-omap.c Rusell Russell 1 drivers/usb/media/w9968cf.c paramater parameter 1 drivers/usb/media/w9968cf.c paramaters parameters 1 drivers/usb/media/w9968cf.h incative inactive 1 drivers/usb/misc/emi62.c inialization initialization 1 drivers/video/kyro/STG4000InitDevice.c comparater comparator 1 drivers/video/kyro/STG4000OverlayDevice.c factror factor 1 drivers/video/kyro/STG4000OverlayDevice.c largets largest 1 drivers/video/kyro/STG4000Reg.h appropraite appropriate 1 drivers/video/kyro/fbdev.c horrizontal horizontal 1 drivers/video/kyro/fbdev.c infact in fact 1 fs/afs/cell.c bizzare bizarre 1 fs/xfs/linux/kmem.h recusive recursive 1 fs/xfs/xfs_behavior.c Attemps Attempts 1 fs/xfs/xfs_behavior.c postition position 1 fs/xfs/xfs_behavior.h interpostion interposition 1 include/asm-i386/byteorder.h exhange exchange 1 include/asm-ia64/sn/pci/pcibr_private.h Dont Don't 1 include/asm-ia64/sn/sn2/sn_private.h gaurd guard 1 include/asm-sparc/pgtsrmmu.h tabes tables 1 include/linux/videodev2.h excisting existing 1 include/media/ir-common.h enougth enough 1 include/video/kyro.h Usefull Useful 1 kernel/fork.c dont don't 1 net/ipv6/addrconf.c prefered preferred 1 net/irda/irlap_event.c negociate negotiate 1 net/irda/irlap_frame.c adjustement adjustment 2 net/irda/irlap_frame.c begining beginning 1 net/sctp/sm_make_chunk.c paramter parameter 2 net/sctp/sm_make_chunk.c paramters parameters 1 sound/oss/trident.c Begine Begin 1 sound/oss/trident.c comsumed consumed 1 sound/oss/trident.c dealed dealt 1 sound/oss/trident.c defered deferred 1 sound/oss/trident.c manangement management 1 sound/oss/trident.c redundacy redundancy 1 sound/oss/trident.c wehre where 1
"Technology"/"Technologies" misspellings...
Those misspellings are in a database file... Is this a database of vendor ID strings? If so, then could the misspellings be intentional, say, to match the vendors' spelling? Also, are the vendors misspelling it sometimes to fit within a particular field width? (Some of them clearly aren't, but others look like contractions.)
sppeeling
Misspelling is a mark of a good programmer. They have over written the area of their brain that contains information about grammer and diction with more important things such as the full C ANSI standard or the ASCII table or maybe even the principals of SMP computing. I say english is out dated and makes no sense to the programmer mind, we should all speak in C.
don't agree
A programmer that doesn't understand grammar shouldn't use any programming language. Texts with spelling errors do not compile in my brain. They also hurts my integrated pattern matching engine.
However, these errors seems to be due to fast typing (especially in comments).
update
You need to update your pattern recognition scheme to a more fluid algorythum capable of handling many more patterns then the normal pre-encoded ones based of the english algorythum.
algorithm
algorithm
doh
I feel somebody is lacking sence of humor...
(I'm not the author of previous post and, yes, I mispelled sense intentionally)
Not important
I think spelling errors in code should only be corrected when they are in output (obviously), or when somebody happens to change something more fundamentally important in the same lines or file. That would hopefully force the anal spelling-geeks to also contribute some useful code changes.
Moreover, if people prefer alternative spellings, it should not up to others to impose their own preference on other people's work. In a global project, the point is being understood. Communication is (here) just an aid, not the goal.
Pointless
I mean, a few spelling errors and typos? Is it really that important to make changes?
I mean, its sorta like:
"Well Peter, Great job on that TPS report! However, our new TPS reports require two spaces behind each period instead of just one. Did you get that memo Peter?"
If your going to be picky about sometime so minute as spelling why not require bugfree code as well? I feel it's an unnessecary obligation to put on these code contributors. I really appreciate the hardwork and dedication put into the code. Why make them stress out and use proper grammar when infact that the only true importance in english is the fact that point is communicated clearly enough that a reader understands the output. So is proper grammar really nessecary? Not in my mind, I understand most of the error messages conveyed to me in the kernel. Mainly due to the fact that the messages do not need to be conveyed in proper english due to their technical jargon.
I'm quite pleased that there is the amount of comments there are in the kernel code. My opinion is just be happy with what you have, its not breaking any system stablility issues by angering the Grammar gods.
That's pretty much what I sai
That's pretty much what I said, yes. ;)
But although spelling's not important, it would be stupid not to correct it for somebody patching the file later on anyway - if you come across a typo while you are changing the code, you might as well get rid of it. Deliberately keeping it there while you're changing the rest, is also rather pointless.
Maybe...
Well, this also causes problems. As long as you only correct output and comments. yes, correcting spelling is ok. Anyone remember the color/colour thread a while back? Yeah, not a good idea to be changing any spelling errors that are actually used in the code.
But yeah, If you submit patches, I say go for it, correct those errors is you happen to pass one. But don't go spelling checking your code :-P
(just showing support) -Cracker
One variant of Unix in the 19
One variant of Unix in the 1980's had "KERNAL" throughout the code, including #defined constants in header files that other programs used. It was like this for years; I don't know whether it was because the company had a policy of not releasing changes too frequently or because the OS was basically maintained by one guy.
English as a second language...
I'm curious as to how many kernel developers do not use English as their primary language. Obviously that could be a partial explanation.
I agree with the above poster that this is indeed unimportant.
... is a blessing
Huh. My experience (as a non-native English speaker who used to live in English-speaking countries) is that the native speakers are the worst spellers.
Seriously though, I'm with ESR on the theory that good hackers care about the details of everything they do, and this includes spelling and grammar.
You've obviously never read a
You've obviously never read an Alan Cox post. He's quite a talented hacker, and uses just enough words to make his point--if you know all the other details ahead of time. Grammar and spelling take a backseat to terseness in many of his posts.
on Alan Cox's spelling
Alan Cox has actually always given me the impression of being exactly aware of the way he uses spelling. He may sometimes write things in a terse, 'spoken' way but it seems a choice or even taste thing rather than actual erroneous misspelling.
Clarity
I think that good spelling should be important, but not required. Running a patch through a spell check isn't all that hard, even for non-english users. If comments are added for clarity, that's what they should add.
Uhm, what?
Running a patch through a spell check isn't all that hard, even for non-english users.
That might be true if the patch contains no code, but since it's probably 80% code, you're sure to have to wade through tons and tons of "misspelled" variable names and such.
I am very much in favor of fixing spelling mistakes, but you make it sound a lot easier than it actually is.
Also, if you'd run your post through a spell checker (it "isn't all that hard"!), you would've probably found out that English is supposed to be capitalized. POT IS EATING THE KETTLE.
ms code.
I wonder if a spelling audit of microsoft code would lead to better or worse results. on one hand, they could be really crazy about making sure it's right, and therefore forgetting the important part of all of it (a good product). on the other hand, there lack of readable comments (as a result of many many many mispellings) could be a reason why ms code is so buggy.
:wq!
MFC Code
You can have a look at the MFC sources which are AFAIK written by Microsoft programmers. Inline Documentation is sparse, sometimes tries to be funny, full of typos and obsolete when referring to other modules. Reminds me of some OSS projects.
The programming style is more formal than what I am used to, but there a lot more bugs than in the OSS world, most of them are obvious, some are small puzzles.
I don't think the number of typos in the inline comments are related to the number of programming bugs.
ms code has something right
Maybe these should be spell-checked:
http://mjt.nysv.org/w2k_greps/
"z" or "s"
Being a speaker of real English :o), i'd quibble about the use of "initialize" - I would use "initialise"
-ize / -ise
It's a common misconception that non-U.S. English requires -ise rather than -ize; check the OED, which gives both, with preference to -ize. Etymologically, -ize usually comes from the Greek verbal suffix -izein, meaning to cause something to have the characteristics of the noun to which it is attached. There are of course words in -ise, such as surprise or revise, which are Latin and do not contain the -izein suffix. USAns mistakenly, imho, spell these with z.
There are of course words in
There are of course words in -ise, such as surprise or revise, which are Latin and do not contain the -izein suffix. USAns mistakenly, imho, spell these with z.
If they spell them that way, then they're spelling them wrong, according to standard U.S. English spelling.
face it
Face it english is a messed up language and needs desperate fixing.
no
It's not....
it's just most people speak some approximation to English. Hence the confusion.
yes
Sure. And Windows isn't buggy, it just crashes, chokes and barfs all the time because so many people use it wrong.
New language
We should take everything that we like about English, make it more like Latin, and call it Latin#.
typo's
programmers make many typo's in comments because they are already thinking about the next problem to solve when they are writing a comment.
they just let their fingers roll out a sentence they thought of, but once they start typing it's automatical, their mind is focused on something else.
most of my typo's here are because my english sucks, but i comment my code in my native language (dutch) and make typo's for the reasons mentioned above
"Then" instead of "than"
One of the most common mistakes made by second-language speakers.
E.g. "This tree is taller then that one over there."
should be
"This tree is taller than that one over there."
actually
that kind of mistake made more often by native english speakers then non-native ones
Indeed
You mean "than non-native ones"
"Then" instead of "than"
should be
"The tree is taller than the one over there."
or even "The tree taller than
or even "The tree taller than one over there"
Tree1 > tree2
Tree1 > tree2
tree1 > tree2 > [my patience]
tree1 > tree2 > [my patience] ;therefore I waste not my time