Microsoft Developer Explains Why Windows Kernel Development Falls Behind
New submitter mha writes "In a response that truly seems to be from a core Microsoft developer, we are told about why Windows kernel development continues to fall further and further behind that of the Linux kernel. He says, 'The cause of the problem is social. There's almost none of the improvement for its own sake, for the sake of glory, that you see in the Linux world. ... There's no formal or informal program of systemic performance improvement. We started caring about security because pre-SP3 Windows XP was an existential threat to the business. Our low performance is not an existential threat to the business. 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."'"
"Oh god, the NTFS code is a purple opium-fueled Victorian horror novel [...]" -- lol!
I think therefore I am... a Linux geek.
People at M$ only innit for the money. Microsoft's got good people no doubt, but I am reminded of line from Chef in Apocalypse Now: "They lined us all up in front of a hundred yards of prime rib. Magnificent meat, beautifully marbled. Then they started throwing it in these big cauldrons. All of it. Boiling." That's Microsoft: boiled prime rib.
its because of her genes though
The quality of Slashdot trolling has gone way down recently.
These NIH type problems are hardly unique to Microsoft, or even proprietary software. It's human nature. Big success contains the seeds of its own destruction. Open source has the forking mechanism which provides an outlet against some of the worst abuses (only).
Sounds like the guy was just frustrated and venting. Lots of us do that sometimes, and this one seems ready made to please the slashdot crowd. But do read the retraction the guy posted.
First, I want to clarify that much of what I wrote is tongue-in-cheek and over the top --- NTFS does use SEH internally, but the filesystem is very solid and well tested. The people who maintain it are some of the most talented and experienced I know. (Granted, I think they maintain ugly code, but ugly code can back good, reliable components, and ugliness is inherently subjective.) The same goes for our other core components. Yes, there are some components that I feel could benefit from more experienced maintenance, but we're not talking about letting monkeys run the place. (Besides: you guys have systemd, which if I'm going to treat it the same way I treated NTFS, is an all-devouring octopus monster about crawl out of the sea and eat Tokyo and spit it out as a giant binary logfile.) ...
All of the problems listed there are the direct result of poor management.
Accepting an outside patch makes your lead angry because . . . .
makes test angry because . . . .
and PM is angry because . . . .
There's just no incentive to accept changes from outside your own team.
When this happens, the manager who is in charge of all those people steps in and says "You will co-operate and get things done, or else you will no longer work here". Sadly, too many managers are too lazy and/or gutless to do this.
I submitted this story. I am only human - what was I thinking? I guess I thought of the many strange comments I could elicit...
I am so sorry, guys. I must say that shortly after reading the story reason set in (but I was too quick on /.) - there is nothing unexpected in it. It is no big deal. It is a non-story. Everything described is not "Microsoft", it is human, including the complaints. I don't think the points are invalid, it's just that one can make a long list like this for ANY large (or even medium) project. Life is messy - but I got my first story submitted (which means nothing).
My apologies.
I just hope that the guys managers, should they find out, react maturely - by doing exactly nothing (at least no punishment). Stuff like this happens, and if it does so only once it should be overlooked.
PS: On the other hand, enough people voted this to the front page...
Sigh. She's married now. The hot grits will just never taste the same.
Don't blame me, I voted for Baltar.
It is possible that you can make some kind of pretty good hybrid tablet/desktop OS if you thoroughly plan and execute it really well. We cannot fully know. The problem is only that Windows 8 is way too far from such vision. They just released a hacked Windows desktop with this Metro screen thingy taped on it. Everything is all over the place with no good integration and smooth workflow. There is no posh: the graphics are only sharp squares with plain colors. It feels like a tech concept demo thrown together over a weekend.
Dilbert-esqe. Change the details and its the last two "insert Big Co Name Here" jobs I spent a decade and a half at.
andy
If a project has enough churn, you can actually justify cleaning up design, interfaces and even entire subsystems in some cases. If all you do is make each piece of code you touch suck just a little bit less, you'll hate having to work on that code less and less over time. All you have to do is look at the code and think "it doesn't HAVE to be this way!" If that old application everyone hates has gotten to the point where it requires a full time position just to maintain it, there's usually no reason why the design couldn't be improved along the way. My goal in maintenance positions is to eliminate the need for that job. There'll always be SOMETHING that needs maintenance, so I don't feel bad about doing so.
I'm trying to teach myself to set people on fire with my mind... Is it hot in here?
exactly.
Take the ribbon, love it or hate it, if you really look at it the ribbon all it does is change the shape of the menu system of earlier versions of office. The exact same dialog boxes are there behind the scenes, showing up when you least expect them.
Even in windows 8 if you look around you can find the old windows 9X series dialog boxes and components in the seldom accessed areas. They are slowly being phased out but they are still there.
i thought once I was found, but it was only a dream.
Actually I remember reading that Windows 8 ignores certain entries in the hosts file - this was an article a while back on Slashdot.
I'm starting to think GNU is the problem with "GNU/Linux" these days.
From Pournelle's web site:
Pournelle's Iron Law of Bureaucracy states that in any bureaucratic organization there will be two kinds of people":
First, there will be those who are devoted to the goals of the organization. Examples are dedicated classroom teachers in an educational bureaucracy, many of the engineers and launch technicians and scientists at NASA, even some agricultural scientists and advisors in the former Soviet Union collective farming administration.
Secondly, there will be those dedicated to the organization itself. Examples are many of the administrators in the education system, many professors of education, many teachers union officials, much of the NASA headquarters staff, etc.
The Iron Law states that in every case the second group will gain and keep control of the organization. It will write the rules, and control promotions within the organization.
*** Finding a way to effectively deal with bureaucratic capture of institutions is probably the number one human problem.
C++ is made by a standards committee mostly composed of industrials and a couple of academics.
The features that are added are added due to demand of members of the committee.
There are at least two major people on the committee that are from Microsoft.
I am a fairly active linux contributor. I have patches all over the kernel tree. I also review drivers/staging code.
Most of the patches that I send are things that I cannot test because I don't have the hardware. Even though I'm careful, there are still a few times where I have introduced bugs. The most recent example was code like this "if (!attributes & 0x4000)". That has a precedence bug so the condition is always false. Unfortunately changing it to "if (!(attributes & 0x4000))" disabled certain graphics card. The correct thing was to delete the condition.
Breaking stuff is just a part of development, you try your best but don't let fear of breaking things stop you from applying patches.
Probably over 5% of the 10,000 patches in every new kernel are cleanups. We're always merging API changes and unlike Microsoft we don't care if it affects out of tree drivers. There isn't any subsystem where the owner says, "This code is stable now and I'm only accepting actual bug fixes."
The other thing that helps is the short release cycle. If something does break, it's easy to fix.
Some people find linux development frustrating. One developer told me, "Ever since XXX took over the YYY subsystem he has been constantly changing the API and re-writing my code. Does he ever sleep? I don't know how anything works any more."
It's hard on reviewers as well. I have reviewed literally over 3000 cleanup patches to the comedi subsystem. I have mornings when I feel lazy and it doesn't fill me with joy to see 40 new cleanup patches in my inbox. The process is expensive.
But I do feel a great deal of pride in the work.
It sounds like MS has become like most IT departments in the world; the department of NO.
Generally IT people are operating under a a system where they are brutally punished if things go wrong, are vaguely rewarded if they do what someone wants, and not rewarded for doing things that people don't understand (like simplifying the usage of VPNs). So these IT departments see any change requests as increasing the possibility of disaster and thus bad. This results in a combination of refusing to adapt to the company's needs as both dictated through employe requests and through changing technology. This is evidenced through many larger older organizations still running a bunch of SUN servers or a Novell network.
But it is often far more vicious where you have IT people actively reaching out into the company and telling them what technology they may use and how they might use it. One advantage of the iPhone over the Blackberry was that generally iPhones were impossible to ruin through "Corporate Policy" and BlackBerries could be completely neutered through an easy to use interface. But out of control IT people need not fear for long as horrible companies came along to give them the tools to mangle even the iPhones.
IT people might blah blah about corporate security and various data management laws but the simple fact is that if companies don't exist for the sake of their IT departments. IT is a tool that most companies use to achieve their core goal. Yet you have IT departments treating say the head of marketing of a $20 billion dollar company like an infant "for his own good". Where I find it interesting is when IT meets the President or the CEO. Often the president will say something like "I don't want to change my password every 30 days" The IT people don't dare pull the "corporate policy" card but resort to whining about the rational with the CEO concluding, "I'm going to change my password at the exact same frequency that I change the head of IT. So set things up accordingly."
Again this is not all because IT is filled with evil trolls but because their rewards are structured incorrectly. The best run companies that I have ever seen structured IT really well so that when some guy comes in with his Vic-20 and wanted to use it for presentations they either showed him how bad an idea it was or made it happen but then billed his department for the effort. Saying NO just wasn't something they were insented to do. The result was the more stupid the requests from various departments the more budget that went to IT. This way you don't cut ITs budget you told the various department heads to be less stupid with their money.
Back to Microsoft. It sound like MS has created a similar case of fiefdoms that have perverse incentives that are not aligned with the basic goals of the company. I know in the old days of MS they would hand out stock options like candy. This resulted in many people becoming insanely rich. Maybe they need to go back to that same structure. If a small department does something extraordinary they get some big bucks. This would have to be carefully managed as I can see a few superstar programmers doing the heroic only to watch their manager pull up in a new Porsche on Monday and for them to quit on Tuesday.
Code turns to crap with indenting screwed up and code which nobody knows the purpose of. Nobody wants to fool with it because of the risk.
http://michaelsmith.id.au
In contrast, employees of a company are doing whatever it takes to make a paycheck
That is totally wrong. Many programming employees at companies ALSO enjoy what they do. They are ALSO good programmers.
But as this article attests to, what they cannot do is influence code outside the group they are in, even if they have access to it. So the effect they can have, even if they are very good, is often reigned in a great deal beyond what it could be.
The reason Linux does so much better is because restraints are based on ability, not on arbitrary non-technical boundaries.
"There is more worth loving than we have strength to love." - Brian Jay Stanley
Instead of everyone getting upset because they have work to do while making adjustments to new changes, how about you just do your damn job and maybe things will get done faster, with better quality. It's not a war, it's software development. If you want to stay relevant, you will do everything in your power to understand this and become better at what you do. In the case you don't want a job, keep getting "pissed" every time changes come down the pike. Consumers don't care about your personal struggle with adapting to change. This isn't a daycare, it's business.
It has been said that the job of a good software manager is less about getting the developers motivated than it is about keeping them going while not de-motivating them. Geeks have a tendency to drive themselves, and often drive themselves harder than they can be driven by others. The challenge is less in getting them to work than in getting them to work on the right things.
I worked once in a company which practised Management By Intimidation, and swore afterwards that no amount of money would ever persuade me to work for another company like that ever again. Pushing phrases like "if you want to stay relevant", "do everything in your power", and "this isn't a daycare" will have me heading for the exit faster than you can scream "You're fired!".
Ultimately, I'm in the profession for 2 reasons. 1: I enjoy what I do. 2: I'm pretty good at it. I'm not really in it for the money. I could make a lot more doing other things in other places, but I like what I'm doing now and it suffices. In that, I think I'm a lot like most of the Linux developers. They have their own agendas, and while Linus may not be the ultimate diplomat, he's a leader, not a manager.
Microsoft, conversely, is a lot about driving the developers rather than persuading them, and if I was to be really cynical, I'd even suggest that their marketing-driven agendas passed on to low-cost developers has a lot to do with their current woes. The Linux developers are often unpaid, but there's never been a "Slaves of the Penguin" book to match "MicroSerfs" and the thought of Linus telling his minions that "if they want to stay relevant..." strikes me as outright comical.
I work at a place with that attitude. "You changed the copyright string from 2012 to 2013 and re-compiled. MUST RUN FULL WEEK-LONG TEST PLAN AGAIN BECAUSE ANYTHING COULD HAVE BROKE!"
My understanding is this can be turned off. It is less Windows and more Windows Defender:
"Windows 8, set for release on 26 October, automatically deletes entries in the HOSTS file for specific domains. Try, for example, to prevent attempts to access Facebook.com, Twitter.com or ad servers such as ad.doubleclick.net by rerouting them to 127.0.0.1 by adding entries to the HOSTS file and the relevant entries will soon disappear from the HOSTS file as if by magic, leaving nothing but an empty line."
This behavior is due to Windows Defender in Windows 8 thinking it has discovered malicious modification of the Hosts file. Windows Defender is enabled by default in Windows 8. Users who would like to continue using the Hosts file as a simple, albeit effective method of blocking certain sites, can do so by adding the Hosts file to Defender's exceptions list. Of course, that means that Defender will never be able to notice any actual malicious changes to the Hosts file.
Windows 8 seems to be rather prejudicial about which entries in the Hosts file Defender will automatically delete. It automatically deletes Twitter, Facebook, doubleclick and other ad sites but other domains such as "heise.de" it leaves intact.
www.h-online.com/security/news/i927.html
Doctors destroy health, lawyers destroy justice, universities destroy knowledge, religion destroys spirituality
An early boss put it to me this way: In the corporate world, you are only ever going to be motivated to be just better enough than the competition to convince people to buy your product over theirs. If there are competiters, that means you get into a spiral of 'little advancement by one, followed by copying and little advancement in the others.".. its slow innovation. In a monopoly, you get no innovation at all.
In the open source world, you're motivated by what the problem really is. You're doing it to make a batter product, that meets a better need. It leads to much greater innovation. You don't stop when you're better than the competators. Whats more, if the need is great, anyone else can move it forward, not just the company/individual.
This is not unique microsoft, its something nearly every company struggles with.
- --
"I Hate Quotes" -- Samuel L. Clemens
one of the advantages Microsoft has is that they're paying people to do the boring parts. It's hard to get people to finish making open office stable and user friendly because all the glory is in adding new features. After the features are added and they work in 90% of the cases nobody does the dull work of making them work for that last 10%. Trouble is if you use it a lot you're gonna hit one of those last 10% cases sooner than later...
Hi! I make Firefox Plug-ins. Check 'em out @ https://addons.mozilla.org/en-US/firefox/addon/youtube-mp3-podcaster/
When you can show me ONE distro, just one, that can pass "The Hairyfeet Challenge"* then you have something to brag about.
*.- For those that don't know "The Hairyfeet Challenge" simulates the typical 5 year cycle of your average PC, we take one random laptop and one random desktop out of the pile, we install ANY distro release from 5 years ago and we update it to current. Wanna guess what happens when you hold Linux up to just HALF the Windows lifecycle? it DIES, it DIES HARD, it shits all over its drivers and by the end you'll be lucky if even 30% of what was working at the start is 100% functional at the end.
Well I for one, are introducing the "Reverse Hairyfeet Challenge".
You do the same with Windows. But with one little specific detail: you do it from the point of view not of a corporate user, but a at-home end-user.
So you try surviving going all the way from Win98, all the way though WinME, and end up with Windows XP Home. See if you can keep you sanity going through this mess.
(I could have been even worse, I could have asked to start the challenge at Windows 3.11 and end-up at Vista, but I would probably get arrested for violating international laws against torture just for suggesting this).
And even if you managed to keep sanity you would probably not keep the hardware: at each major jump you'll end up noticing that your hardware is from a noname aisan manufacturer who since long went belly up and didn't bother writting drivers for the newer OS architecture. Requiring you to buy another piece of hardware from another manufacturer).
For the record, the laptop on which I am writing this is happily running opensuse for more than 2 years now, each update being done simply by live-updating to the newer version - while the distro is still running and used at the same time.
And 2 years ago, this laptop wasn't installed clean from scratch. I simply carried over the disk content from its predecessor. (Yup, try doing that with windows without entering a world of pain: you take a running Windows XP from one laptop, then yank out the disk, plug it into another laptop, and have it start. On linux, its mostly without problems. On Windows, your only hope is to clear huge part of the registry and configuration, to put it back into a "fristboot mode" where all the hardware is scanned again).
And I've got probably desktop carrying over the same installation for much longer. I think the jump from 32 to 64 bits was the last time I did a fresh install, then kept simply ugrading over.
"Sufficiently advanced satire is indistinguishable from reality." - [Tips: 1DrYakQDKCQ6y52z6QbnkxHXAocMZJE61o ]
E.g. going from one mainline trunk to another (e.g. Ubuntu 8 to Ubuntu 13). That's not a fair comparison.
Well, either the system is designed with a long-term maintenance cycle or isn't. Most Linux distros aren't, period. Most userland apps from 10 years ago won't even run on a modern system without recompiling. I'm actually a huge fan of FreeBSD and OpenBSD - I can pick a 10 year old FreeBSD system and upgrade it to the most stable version without (mostly) no issues. I'll probably have problems doing the same on a 2 year old OpenBSD system. That is also ok, some operating systems require a reinstall to truely work properly. And a ton of software changes - the configuration files change, the syntax changes, shared libraries are different, etc. There is nothing wrong with that - its just the way it is.
Try taking your Win XP box to Win 8 and see how that works out for you unless you've got bog standard gear, in which case your Ubuntu upgrade probably worked too.
Did you tried it? Windows 8 actually runs better than XP on not-so-old hardware. I have a 6 year old laptop with it, and works quite well. And I can run 10 or 15 year old apps without a problem. If I really need XP, thats fine - I can even run a virtualized version of it. The release cycle for Windows is different than for Linux. Microsoft needs to make shure it doesn't break compatibility with most of the huge application catalog available. Linux has a different development pace, different priorities, and it is used on an ecosystem where most of the important stuff can be recompiled, and/or are provided by the companies that drive the change in kernel (Oracle, IBM, Redhat, etc). Long-term compatibility isn't a priority - at all. But there are a lot of users for which long-term compatibility is important. Denying it is just stupid.
How about we keep this in the current millenium?
Of course the migration path from Win3.11 up to Windows 8 is almost impossible, I'm half joking. But I try to attract the attention to a few key points (yes I know. Don't explain the joke...):
- HairyFeet's challenge works more or less because he's cherry picked a few key point (I wanna have working wifi) and a specific time frame (very recent history of windows, where it is more or less the same kernel under the hood, with only relatively minor additions).
The thing is, before comparing, you have to decide which criteria you're using to compare in order to avoid comparing oranges and apples, and be sure you're on a common ground. What's constitute an actually good common ground can be somewhat subjective.
My joke is about breaking the test by changing these conditions. Selecting things which are completely unfair to Windows.
You mention that a machine able to run Win95 or even able to run Win3.11 is very unlikely to have the ompf to run Windows 8. Simply order of magnitudes differences in requirement.
Well, just think about Linux. It happens that you can run lots of modern distribution on *very old* hardware.
Of course, it does require some tweaking (during the "upgrade game", installer would probably suggest jumping from KDE 2.x to KDE 3.x and then KDE4.x because that's what most people needed back then. If you need to run your distro on out-dated hardware, you might need to prefer jumping to another DE with much lower requirement and stick to it. FXCE is a possibility, LXDE is another. There are even other environment with simpler requirement).
Linux has two big advantages: the ability for the end-user to tune its environment for much lower requirement, and better support for older hardware (older hardware for Linux means more time to get tested and better support. For windows it usually means the maker went belly up and nobody is here to write driver for newer versions of windows, so usually every big upgrade also means throwing away all your cheap old noname peripherals).
Starting with your "stay at the same millenia" criterium, I could also speak about "staying with approximately the same generation of technology". .SYS and win3x .DRV, then Win9x. VXD, then WinME's ugly hack, then WinNT's .SYS - 100% guaranteed breakage)
Hairyfeet's challenge exactly as formulated is unfair to linux because, under the hood there's almost no difference between Windows 2000 and Windows 8. It's a nearly identical kernel with nearly identical APIs during the whole lifetime. The only minor changes are a few changes with the graphic driver model (but which isn't covered by the Hairyfeet challenge. But which regularily kick you back into non accelerated famre buffer mode at each major change - indeed breaking) and security having been overhauled around the time of XP SP3 and Vista, because microsoft was forcibliy dragged kicking and screaming into doing it, because of business needs. (For why just everything else stagnated, just refer to TFA - yes, I know, slashdot, etc.)
(If we had started earlier, we would go thourgh racidally different types of drivers, dos
Meanwhile Linux has seen quite a few changes in architecture and its a miracle that you can actually upgrade accross so much distribution generation. This miracle is mostly due to package managers being clever (hal is deprecated by udev and everything is un-installed and re-installed as necessary, thank you RPM-/DEB-'s dependency checking !) and the software being opensource (at each generation switch, package manager can have access to almost everything needed to make sure that everything plays out nicely).
Only two exceptions exist:
- graphic drivers - they are produced by 3rd parties and not in control of the distribution's package manager. Distribution could play a little bit around (writing package which try to automatically pull the correct blob while leveraging the package dependenc
"Sufficiently advanced satire is indistinguishable from reality." - [Tips: 1DrYakQDKCQ6y52z6QbnkxHXAocMZJE61o ]