Posted | archive
See, component owners are generally openly hostile to outside patches: if you're a dev, accepting an outside patch makes your lead angry (due to the need to maintain this patch and to justify in in shiproom the unplanned design change), makes test angry (because test is on the hook for making sure the change doesn't break anything, and you just made work for them), and PM is angry (due to the schedule implications of code churn). There's just no incentive to accept changes from outside your own team. You can always find a reason to say "no", and you have very little incentive to say "yes".
Another reason for the quality gap is that that we've been having trouble keeping talented people. Google and other large Seattle-area companies keep poaching our best, most experienced developers,
- We can't touch named pipes. Let's add %INTERNAL_NOTIFICATION_SYSTEM%! (Oh, and let's make %INTERNAL_NOTIFICATION_SYSTEM% inconsistent with virtually every other named NT primitive.)
- We can't expose %INTERNAL_NOTIFICATION_SYSTEM% to the rest of the world because we don't want to fill out paperwork and we're not losing sales because we only have 1990s-era Win32 APIs available publicly.
- We can't touch DCOM. Let's create %C#_REMOTING_FLAVOR_OF_THE_WEEK%!
- XNA. Need I say more?
- Why would anyone need an archive format that supports files larger than 2GB?
- Let's support symbolic links (Can I have a one on my review score now?), but make sure that nobody can use them so I don't get blamed for security vulnerabilities (Great! I got that one on my review score, and now I get to look sage and responsible!)
- We can't touch Source Depot, so let's hack together SDX!
- We can't touch SDX, so let's pretend for four releases that we're moving to TFS while not actually changing anything!
- Oh god, the NTFS code is a purple opium-fueled Victorian horror novel that uses global recursive locks and SEH for flow control. Let's write ReFs instead. (And hey, let's start by copying and pasting the NTFS source code and removing half the features! Then let's add checksums, because checksums are cool, right, and now with checksums we're just as good as ZFS? Right? Do I get a one on my review score now? And who the hell needs quotas anyway?)
- We just can't be fucked to implement C11 support, and variadic templates were just too hard to implement in a year. (But ohmygosh I turned "^" into a reference-counted pointer operator. Can I have my patent cube and one on my review score now? Oh, and what's a reference cycle?)
在大学的时候也接触过微软技术体系，感觉是有牛逼的地方，有亮点，但是偶数代会把奇数代的技术否定掉。记得有个哥们花了很大力气学习翻译了.NET Atlas AJAX，结果beta一完毕，整个AJAX体系就变得面目全非了。