Frameworks, Kits and Caboodles
May 15th, 2006John Gruber is annoyed by the simultaneous use of “Web Kit” and “WebKit” when ostensibly referring to the same thing. While his complaint boils down to allegations of editorial laziness, there may be a more benign cause. In any case his post opens up a can of very interesting worms.
I think the confusion comes from the fact that in most cases, when these distinct terms are used, the author is not referring to exactly the same thing. The Web Kit is a development technology from Apple. There is a tradition of calling such an aggregation of functionality a “kit.” So among all the kits that Apple provides, the Web Kit is, you know, the Web one.
The framework called WebKit is the principal code component of Web Kit, but not the only one. WebCore and JavaScriptCore are important sub-frameworks. Gruber points out that WebCore is consistently referred to with its CamelCase form. That’s because it’s a framework only. Not a kit or any otherwise loftier entity.
As programmers who deal largely in framework and header names, we tend towards using the CamelCase versions of such technology names. This habit probably comes partly from technical geekiness, and partly because doing otherwise in our code would result in compiler errors.
Admittedly, the use of umbrella frameworks by Apple prevents us from frequently doing:
#import <AppKit/AppKit.h>
But when we do find occasional to include from or load code dynamically from that framework, we must refer to it as “AppKit.” This is more than convention, it’s the law! Similarly, programmers who employ Apple’s Web Kit must cite it by it’s fundamental framework’s name:
#import <WebKit/WebKit.h>
Similarly, in my last position at Apple, I worked on the “Core Services” team. But our framework was (and is) called CoreServices. Both terms are in common use.
Let’s take a look at the primary violation cited in Gruber’s article. His snapshot of an Apple web page shows use of WebKit and Web Kit side-by-side:
But notice the (relative) consistency here. Web Kit is a concept. A big thing. It’s got a Version Matrix (caps and spaces!) for crying out loud. WebKit on the other hand is “the system framework used [on Mac OS X].” The paragraph goes on to inform developers that they can download the sources to WebKit (the framework) and build their own. By using the sans-espace WebKit nomenclature, the author communicates to developers that the framework itself is specifically being referred to.
This issue is a condensation of the difference between technical writing and technical typing. As a programmer who dabbles in both typing and writing, I appreciate Gruber’s complaint for all its pedantic charm. But these inconsistencies are welcome in my world. Programmers will tend toward using the framework name, and the situation is even “worse” than Gruber fears. He cites a few frameworks that seem less vulnerable to CamelCasing than others:
We don’t frequently see this erroneous closing-up of kit names with I/O Kit or PDF Kit because closing up their names looks bad.
But these supposed abuses are in fact common in my lexicon. I refer to IOKit and PDFKit just like that, because compilers and other programmers are most likely to understand me when I do. They are also shorter, instantly imply their singularity, and even wiki-able, if that floats you boat. I even think they look beautiful all closed up like that.
The OED lists the etymology of “caboodle” as supposedly a “corruption of the phrase kit and boodle.” So even if Gruber’s complaint proves well-founded, abusing the word “kit” is a time-honored tradition that will no-doubt be preserved.
May 15th, 2006 at 7:37 am
Once upon a time I was trying to download the WebKit framework, I think it was for Jaguar, before it was built-in. I couldn’t find the darned thing by searching for “WebKit” at apple.com. As I recall, when I finally found it I saw that searching for “Web Kit” would have worked, but even then it might not have been the top hit in the search results. I was so pissed at (a) the spelling inconsistency and (b) Apple’s lame search.
I’m not convinced by arguments that rationalize the inconsistency. I agree that “PDFKit” and “IOKit” look perfectly okay — I had the same thought when I read John’s article. I wish they had left the spaces out everywhere.
The “Application Kit” / “AppKit” distinction actually cost me a tiny bit of development time, since there are places where AppKiDo has to realize they’re the same thing (it standardizes on “AppKit” for all display purposes, by the way).
Speaking of consistent wording, I noticed the docs for the various versions of -setDelegate: all use different wordings to say “sets the delegate,” and only some of them mention that it doesn’t retain the delegate. I didn’t bother asking that all the docs use the same wording, but I did submit a comment saying they should all mention the non-retaining, because it’s the kind of thing a person could easily trip on.
May 15th, 2006 at 7:39 am
P.S. I realize it’s a personal decision whether to have comments on one’s blog, but I’m glad you do, because John doesn’t and I wanted a place to put my two cents. :)
May 15th, 2006 at 10:15 am
Hmm, regarding the use of this word: pedantic.
“…I appreciate Gruber”™s complaint for all its pedantic charm.”
I would say that there is not a trace of the pedant in any of Gruber’s post, it is merely idiosyncratic and fastidious.
The very first line of his post “As a stickler for detail and consistency, this has been driving me nuts ever since the framework was announced.” makes this rather plain.
Pedantic relates specifically to form, procedure, or learning (knowledge). Thus within the definitions of the word, a pedant can be called narrow-minded, for example, but it is only applicable if he is in fact narrow-minded in his adherence to form, procedure, or learning.
Gruber’s last line “But I don”™t really care which spelling Apple settles on, I just want it settled.” indicated that he does not care at all about form, procedure, or learning (knowledge), and therefore falls outside of the definitions of the word.
One can find “pedantic charm,” however, in sentence like “By using the sans-espace WebKit nomenclature, the author communicates to developers that the framework itself is specifically being referred to. “A narrow-minded observation of form” could be appropriately used by a critic to describe that sentence. In that sentence you justify the use of the naming form and leave out the possibility of non-developers having trouble interpreting the the word’s additional meaning.
Although there are several definitions of the word, especially cross-referencing British and American English dictionaries, I have chosen one to illustrate the dependence of the word to form, procedure, or learning (knowledge).
And of course, my reply is rather pedantic…
I love Red Sweater and Daring Fireball, both are exceptionally creative and interesting reads.
Keep up the good work ^^;
May 15th, 2006 at 3:20 pm
I’ve heard they are working on a framework called “Foundation User Controls” and that the Apple Usage Manual (preliminary) is unequivocal about the spacing: Not only will the abbreviation be separated from the word “Kit”, it must be separated by a full carriage return. Thus, it will appear as the
FUC
Kit
There’s speculation that, in the final version, the seperator may be a full page break.
May 15th, 2006 at 8:32 pm
I just sprayed coffee all over my keyboard! MacFanDave, that’s the funniest thing I’ve read in a l long time.
May 16th, 2006 at 2:23 am
Years back a colleage and I developed an Access DB to track user calls to our (small) help desk.. We called it the Follow Up Call Utility…..
May 16th, 2006 at 12:37 pm
[…] You just got to love Daniel Jalkut’s take on John Grube’s plea for consistent spacing and casing. However, I think he’s sadly mistaken on the benefit of casing PDFKit just so. Of course it’s PdfKit. Upper-casing PDF makes the Kit part hard to read, giving PDF unjustified attention. […]
May 17th, 2006 at 5:48 am
[…] (On a pedantic note, I see from comparing his original post with this one, that the browser is built with the WebKit demo from the Web Kit development team. I am still confused about this, despite John Gruber’s post on the differences and Daniel Jalkut’s patient further explanation ). […]