What APIs do I own?

by Michael S. Kaplan, published on 2005/06/22 02:01 -04:00, original URI: http://blogs.msdn.com/b/michkap/archive/2005/06/22/431394.aspx

Yesterday, in a comment to my conversation about SHAnsiToUnicode/SHUnicodeToAnsi, Rosyna asked some interesting questions:

This actually brings up an interesting point. If someone working on one group at MS sees a problem in another group's software that affects them, can get just fix the other group's code?

Generally speaking, people would not directly change code in other groups. But you may work with them and provide opinions and expertise and assistance. There is a lot of dogfooding of products that also goes on....

There are exceptions, but by and large its how things that I have seen have worked.

Within a group, people will often work with code that others own to help fix bugs and load balance work -- we are all in a very cooperative environment. :-)

And when you're in a group at MS, how much code is your (individually, one person's) responsibility? An entire DLL? A few functions in a DLL? A lot of DLLs under the same "genre"?

That depends on the dev, on the group, on the complexity, and on the expertise. I can only really answer for me, so I will try to do that right now. :-)

I own the following APIs (and I know people who own more and people who own less):

Plus some that I do not own but kind of de facto own since they are thin wrappers around one of the above functions and their behavior comes off of them 100%, e.g. lstrcmpW, CharUpperW, CharNextW

Plus several new APIs I will talk about after Longhorn Beta 1 and Beta 2 are out:

(I may have added in some random extra stars to explicitly foil guessers. Sorry!)

Plus some tools and libraries:

Plus the managed equivalents of the above:

Plus some various infrastructure pieces (e.g. I am the development owner of the Windows keyboard layouts, though it is actually the data PM who is the real owner; I am just the guy who checks them in and gets them into setup).

And I help out now and again with locales and such, though not as much as I used to.

And I am involved with Unicode, sometimes as an alternate rep, other times as just a technical person who participates.....

It's a living.:-)


This post brought to you by "の" (U+306e, a.k.a. HIRAGANA LETTER NO)

# Rosyna on 22 Jun 2005 12:19 AM:

Wow, that *thoroughly* answered my questions. Thanks.

# Mike G on 22 Jun 2005 4:13 AM:

Interesting post! Roughly how many lines of code does that run to?

# Michael S. Kaplan on 22 Jun 2005 4:20 AM:

Hey Mike --

I haven't a clue, I have always sucked at those sorts of estimates. I did manage to remove about 1000 lines of it in Longhorn by streamlining a few things, though. Negative production that week? :-)

I suppose I should run one of those K-LOC tools on it all one of these days, though. It's one of those cool numbers you can bat around at [geeky] parties....

# Mike G on 22 Jun 2005 7:26 AM:

I used a little utility called "Counting" last week, which gives code/comment line counts. You can get it from here: http://www.codeguru.com/Cpp/data/data-misc/fileinformation/article.php/c4547/

Neat little interface and very quick.

# Daniel Garlans on 22 Jun 2005 8:17 AM:

Michael, when you develop these API's, do you design the whole thing from the bottom up, or do "they" give you some prototypes and a specification to work off of?

In other words, do you get to develop the whole thing or do you have to just implement what they tell you to?

I'm just curious as to how much freedom they give you to work on these API's :)

# Michael S. Kaplan on 22 Jun 2005 9:22 AM:

Hey Mike --

Someone pointed me to an internal tool. :-)

Ok, all of the above stuff totals in at around just over 78,000 lines. About half is code I wrote from scratch (projects like MSLU and MSKLC), aznd of the other half some that I wrote, some that I have modified, and some that I just maintain.

If memory serves, the Access wizard project was a bit larger than that, but that was mostly VBA so I don't think it counts. :-)

# Michael S. Kaplan on 22 Jun 2005 9:28 AM:

Hi Daniel,

Many of the APIs listed there predate me, and I was a mere external user of them for years. But the stuff I have developed I have so far just about always been the person who wrote the design doc (I have also written many design docs for features in which I was interested but which I did not end up implementing myself).

(see http://blogs.msdn.com/michkap/archive/2005/01/03/346090.aspx for my opinions on design docs)


In this group, devs have a lot of say in the design of what they develop. And there is a lot of meeting and discussing and deciding to help shape how it ends up....

# Michael S. Kaplan on 22 Jun 2005 9:38 AM:

Uh oh, forgot a project!

Its actually more like 103K lines when you include it all....

# Mihai on 22 Jun 2005 11:21 AM:

Interesting post.
Now two questions:
- if we have a problem with some API, where can we complain?
- can we play Hangman on the "stars API"?
Is there an 'a'? Is there an "Ex" ? :-)

# Michael S. Kaplan on 22 Jun 2005 1:30 PM:

Hello Mihai!

>>> - if we have a problem with some API, where can we complain?

Well, you can always complain here, of course. Especially if it is one I own!

>>> - can we play Hangman on the "stars API"?
>>> Is there an 'a'? Is there an "Ex" ? :-)

Heh heh heh -- no clues, like I said I even added extra stars to keep people from trying to guess. You'll find out soon enough....

# Mihai on 23 Jun 2005 1:32 AM:

The complain: a full family of Enum functions.
On the happy side, none of them are yours :-)

The functions do not take and extra parameter that can be used to transfer a pointer to a structure or a class.
As a result, you have to use global variables or classes with static members (which is pretty much the same thing).

Some functions get it right.
Here is a list (probably not complete, and targeting I18N/L10N API):

--- The Good ---

--- The Bad ---

--- The Ugly :-) ---

# Michael S. Kaplan on 23 Jun 2005 5:58 AM:

Hmmmm... not sure I understand. But you are right, I don't own any of them....

Random832 on 9 Aug 2009 11:24 PM:

You recently linked back to this article - just out of curiosity, what are the "Longhorn" (i.e. Vista) APIs that you starred out?

referenced by

2009/07/20 Garbage in, garbage out -- and this means Ü!

2008/12/16 UCS-2 to UTF-16, Part 9: The torrents of breaking CharNext/CharPrev

2007/04/19 Is CharNextExA broken?

2005/06/24 LCMapString's *other* job

go to newer or older post, or back to index or month or day