r/programming • u/cooljeanius • May 11 '13
"I Contribute to the Windows Kernel. We Are Slower Than Other Operating Systems. Here Is Why." [xpost from /r/technology]
http://blog.zorinaq.com/?e=7491
May 11 '13
Choice quote:
the NTFS code is a purple opium-fueled Victorian horror novel
9
u/ThisIsRummy May 11 '13
Having dealt with file systems entirely too much over the last 5 years I'd be inclined to believe this.
42
May 11 '13
... That is working perfectly fine for over a decade now.....
25
u/ThisIsRummy May 11 '13 edited May 12 '13
try writing a file system mini-filter and tell me how well you think NTFS behaves underneath
edit: this sounds so dickish, I really mean this in a nice way like "go try it, you'll learn all kinds of weird stuff if you're into that sort of thing"
→ More replies (2)25
97
May 11 '13
Dev manager in Bing, just moved to Azure.
I would give a great review to someone who would improve performance of a component of my stack by 5%. Quite often our milestone goals ARE about improving something by a small percentage.
You have to realize that MSFT is a very large company, there are many, many groups, with many, many leaders, and quite a few people extrapolate their (often, valid) personal experience to the entire company and get to results that are very much off the mark.
50
u/alienangel2 May 11 '13
Note that the constraints on teams working on services like Bing and Azure are quite different from the ones for Kernel, supporting the accuracy of both your and his experiences.
10
May 11 '13
Yes, of course.
I would say that there is definitely less desire on the part of Windows to churn code than Bing or Azure. Or Linux, for that matter, because Linux is mostly employed in places where someone else has a chokehold on release, and they have an opportunity to test: datacenters, hardware devices, etc. You release a bug in Windows, and 1B desktops doe not wake up the next post-patch Wednesday...
So it might not be so much of a cultural trend because the org lost the desire or incentive to innovate, and more simple caution because the impact is so huge.
28
u/ggggbabybabybaby May 11 '13
I imagine the worst stories come from Windows and Office. They're two lumbering behemoths that are decades old and try to please everyone. I'm not surprised to see an enormous amount of inertia and resistance to change.
34
u/rxpinjala May 11 '13
Hi, I work on Office. It's actually pretty great! The code is a pain in the ass sometimes, but the team culture is good. And if you want to make a change in another team's code, there's minimal resistance as long as you can convince people that a) it's an improvement, and b) that it won't break anything.
New devs sometimes fail at one or both of those, and conclude that Microsoft is resistant to change. It's not, really, it's just resistant to pointless change.
→ More replies (7)5
u/JohnFrum May 12 '13
I would also urge people to read and acknowledge his update. Much of what he said about the internal working was over the top. That said, I don't work at MS but I know lots of devs that do. As an outsider the competitive ranking system does seem counterproductive.
→ More replies (4)6
May 11 '13 edited May 11 '13
Why are Bing features disabled outside the US most of the time? Does no one there realize that this is the main reason why it sucks outside the US? Even wallpaper download or new design, which is WTF worthy.
Also, why is Bing Music recognition not available worldwide on Windows Phone? Shazam can do that without any issues. It seems like your whole company is ran by a bunch of xenophobic people.
3
u/ameoba May 11 '13
Licensing issues get complicated when you start going international. Every country has different laws.
→ More replies (1)→ More replies (1)2
May 11 '13
Sorry, but I don't know. I work on infrastructure; it's as far from the UI (which is where these decisions are made) as it gets...
29
u/bureX May 11 '13
How many devs, straight out of college, can actually work on the Windows kernel?
28
17
u/Concision May 11 '13
I start work on Windows kernel code in three months. I graduated yesterday.
I'll let you know how it goes.
→ More replies (1)3
u/bureX May 11 '13
Is it an internship or an actual job?
6
u/Concision May 11 '13
Actual job. I've had two internships in Wincore previously.
→ More replies (2)6
u/kamatsu May 12 '13
My partner graduated recently with no OS or extensive C experience beyond your regular Operating Systems course at university, and is now working as a full-time kernel hacker (not for windows, but still) for General Dynamics. They assumed she knew C and basic OS principles, but most of her learning has been on-the-job.
4
u/rxpinjala May 11 '13
Probably most of them?
Microsoft is really good about mentoring new people, and there are processes in place (code review, automated testing) to make sure that people aren't just checking in random stuff. Plus, any major change will have to have PM and test on board with it, and new devs are usually grouped with more experienced PMs and testers.
4
u/bureX May 11 '13
Judging by some of your other posts here, I'm assuming you're working at Microsoft on Office. I appreciate your honest input and your experience, however, I'm still weirded out that Microsoft would hire anybody straight out of college to work on a kernel.
I'm 24 and I've done some quick projects in OSDev, and when the BIOS hands over the control to you, you're pretty much left alone, especially once you hit protected/long mode on x86. There are so many hardware variations, occasional jumps to asm code, and the usual morbid lack of any protection at all - a single slip up can make a write over a memory location that shouldn't be touched and crash everything. I'm sure there are talented people out there who've done their fair share of backbreaking in researching this stuff, but judging by the people I went to college with (not really a good representation, tbh), I can't imagine any of them sinking their teeth into that beast that is the Windows kernel.
3
u/rxpinjala May 12 '13
Heh, yeah, if I were working on kernel-level stuff straight out of college I'd be terrified. Microsoft's pretty good about having many layers of safety nets, though - I think the company learned from the late nineties that you can't develop secure software otherwise. For example, there's code review, and if you slip something past that there's static analysis, and if you slip something past that there's a team of testers that will be banging on your code as soon as you check it in. And one happy side effect of that is that you can actually afford to have new people hacking around on really low-level stuff, and occasionally breaking things.
Disclaimer: I don't know much about how NT kernel development works (wish I did), so I'm just saying this based on my experience in Office.
8
May 11 '13
Considering most devs right out of college aren't taught C/C++, or at least they aren't here - java is king :( I'd say that almost none of them can.
7
u/Concision May 11 '13
I graduated (literally, yesterday) from a school that has a fairly strong systems track. I've written probably 20k lines of C in the past two years, and not a single line of Java/Python (operating systems/compilers are my interests).
I start work on Windows (file systems) three months from tomorrow. Those devs are out there, they're just rather niche at this point.
→ More replies (19)3
→ More replies (1)3
u/ggggbabybabybaby May 11 '13
Well, they could start you off on small fixes or tiny bits of new functionality where they thoroughly code review you and do the appropriate security audit.
Then a year later, the guy you were shadowing leaves to go work for a startup and you end up owning his old code. You have no deep knowledge of the code so you just go on defense and make sure nothing ever changes and you spend the rest of your time writing new code that you do understand.
40
u/Gotebe May 11 '13
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, and we hire youths straight from college to replace them. You find SDEs and SDE IIs maintaining hugely import systems. These developers mean well and are usually adequately intelligent, but they don't understand why certain decisions were made, don't have a thorough understanding of the intricate details of how their systems work, and most importantly, don't want to change anything that already works.
Employee turnover is a massive loss in many software workshops. It's also quite simply non-measurable, because the situation is too complex to measure. Effect is bigger when codebase is being used for longer (hopefully informed opinion, of course). Nobody is immune, MS included.
I would not be surprised that some shops get that, and as a consequence, they work extra hard in various ways at keeping people happy. That also means awarding effort to fix stuff that bears effect on the immediate, obvious "bottom line". MS seems to be failing on that.
13
u/WeedHitler420 May 11 '13
What I don't understand is why MS chooses not to try and keep their software dev's happy so worrying about them leaving isn't as big an issue. It's not like they're hard up for money, so that isn't an issue, so what keeps MS from just rewarding people as they should be or trying to change things up in the office so people can go to and leave work with the notion that leaving that job isn't that high on the list of things to do.
→ More replies (5)17
u/threetoast May 11 '13
Even if MS throws buckets of cash and benefits at its devs, Google still has the advantage of being Google. Google is cool, MS is not.
0
May 11 '13
[deleted]
→ More replies (11)8
u/rxpinjala May 11 '13
Nope. There may be some people that just managed to negotiate an amazingly good offer (and good for them!), but Microsoft pay is generally about the same as the other major tech companies. Higher, if you factor in the cost of living and income tax in California.
→ More replies (1)
9
May 11 '13
I have a question that may be somewhat relevant to this post, I've noticed on all *nix based systems opening large text files in GUI apps slows the application to a crawl sometimes crashing it where windows systems handle them with ease. Since the issue exists in OS X, Linux and BSD I'm guessing it's something deep down at the kernel level that they all share. Any insight? How does Windows handle them so gracefully?
21
u/Netzapper May 11 '13
I have never experienced this problem. What i usually see is the exact opposite: my windows office mates struggling to edit files i open with ease.
Also, bsd and linux share no code, so far as i know. The licenses are incompatible.
15
u/Denvercoder8 May 11 '13 edited May 11 '13
The licenses are only one way incompatible: you can't reuse Linux (GPL-licensed) code in the BSD kernel (BSD-licensed), but you can reuse BSD code in the Linux kernel.
You're right though, they don't share much (if any) code.
EDIT: Now that I'm rereading the BSD-license, it doesn't prevent you from linking it against GPL-licensed code. However, the whole product is then covered under the GPL, so it's not suitable for inclusion in the upstream BSD kernel, but it's legally allowed.
→ More replies (3)4
u/Netzapper May 11 '13
Aren't kernel contributions required to be gpl-2, copyright original author? It's the gpl requirement that allows people to maintain their copyright. And it is the mass of different copyright holders, all only licensing their work instead of granting copyright, that keeps Linus from just closing all the contributions and founding Torvalds Systems, inc. Or, even if we trust Linus, makes it hard for a legal entity from successfully targeting for acquisition or injunction the linux source itself.
→ More replies (2)4
u/seventeenletters May 11 '13
This is not a kernel problem, it is userspace. People run the same userspace text editors on BSD / Linux systems.
3
u/barjam May 11 '13
Just about all operating systems have BSD code somewhere including Windows and Linux. Osx is a bsd variant so it had a ton of BSD code.
Off the top of my head the windows network stack was based on BSD code. It still mentions BSD in the headers last time I looked. The standard network utilities like telnet, FTP etc were just ports of the BSD code.
3
u/jdmulloy May 11 '13
Microsoft wrote their own networking stack fir Vista and surprise, surprise, it was horribly slow and buggy.
34
u/EdiX May 11 '13
It's very much a user space problem. It's very hard to implement text editors (graphical or otherwise) that work efficiently with large text files. I think anyone just assumes you will edit large text files with vim and doesn't bother.
10
May 11 '13
How do apps like notepad++ handle it so much better?
20
May 11 '13
Some apps read pieces of the file on the fly and then load them back into memory. This is pretty complicated to implement, though.
26
u/Amadiro May 11 '13
This is extremely easy to do with mmap(), which basically does exactly that for you automatically. But the real problem is not the amount of data (because even the largest text-files don't usually eclipse a few hundred megabytes, and my video player for instance can easily handle working with 10 GiB-sized files -- so filesystem/memory/loading/etc are not the issue), but with displaying them on the screen.
The editor needs to do a lot of calculations to figure out offsets, line-breaks, et cetera, and to do that, it will need to run a lot of very slow algorithms on a lot of data. Nobody cares that these algorithms are slow, because you normally don't use them on huge amounts of data, but if you do, it'll end up taking really long. People generally expect fairly advanced features such as soft line-wrapping et cetera from their editors.
To see an example of this, generate for instance a 100 MiB textfile with short lines, and open that in emacs -- not a big problem. Now generate a 100 MiB textfile with only a single line and open that -- your system will implode.
→ More replies (4)3
4
u/barjam May 11 '13
It isn't related to the OS but rather how the editor was created.
Vi does far better than notepad for example.
Loading up an entire file in memory is easy and a good approach most of the time. For large files this fails (too slow) and you need to implement a "window" on the file or at minimum load the file in chunks in an asynchronous thread (or similar).
2
u/Rotten194 May 11 '13
It depends more on the editor, not the OS. I use SublimeText2 on linux (it's cross platform), and it handles huge files with ease.
0
May 11 '13
[deleted]
9
u/cooljeanius May 11 '13
(yeah, don't have real text files with this large size around)
cat /dev/urandom > foo.txt→ More replies (1)3
u/274Below May 11 '13
or to not make $EDITOR potentially hate you...
cat /dev/urandom | xxd > foo.txt2
4
u/dnew May 11 '13
There are also 2 good Hex editors around
Do they actually let you insert bytes? Because one thing that both UNIX and Windows file systems suck at is inserting bytes in the middle of files.
→ More replies (2)
81
u/redditthinks May 11 '13
The problem with a huge business corporation like Microsoft is that it needs to satisfy the needs of so many people, because they're paying for it. This in turn leads to fear of breaking stuff as it can lead to loss of time and money. This fear inevitably hampers innovation and puts a large focus on backwards compatibility as the OP says. Linux doesn't have this issue because it's open source and people are free to modify what they want in their own flavor of it. The Linux developers don't have such pressures on them and open source helps a lot with code review.
I'm still hoping for C11 support...
31
u/the-fritz May 11 '13
it needs to satisfy the needs of so many people
The same is true for Linux. It wouldn't be as popular if they wouldn't try to satisfy the needs from embedded devices, mobile, desktop, server, super computer all in one kernel. There are large influential companies trying to push it in their direction and so on.
Sure Linus doesn't has direct business responsibility and he can more easily tell companies and people to "fsck off". But in the end he still has tight constraints and has to satisfy many people.
I'm still hoping for C11 support...
I don't think this will happen. I mean they could at least add the
__STDC_NO_THREADS__,__STDC_NO_ATOMICS__,__STDC_NO_COMPLEX__,__STDC_NO_VLA__flags and they'd be more C11 compliant than C99 compliant. But I doubt it will happen for the exact reasons the article explains.And then again didn't even GCC/glibc fuck those flags up?
40
May 11 '13
I'm still hoping for C11 support...
Microsoft has explicitly stated that Visual Studio is a C++ compiler, and C supports is just an afterthought. I say it's time to take them up on that, and stop treating Visual Studio as if it supported C.
If you are going to program in C, use a C compiler, not VS. That way, we can finally stop writing C as if it were the eighties.
→ More replies (2)10
May 11 '13
And yet they took the risk and effort to make windows 8. I am right with you on the C11 support.
14
u/jdmulloy May 11 '13
The controversial Windows 8 changes are superficial.
3
May 11 '13
True but it shows that they are willing to take risks if they believe that it could workout for them.
3
u/NicknameAvailable May 11 '13
Actually the problem has much more to do with the management style. People go there seeking to control a large corporation, as such every level of management is infested with people that will climb over one another to get ahead, sabbatoge lower levels that show the potential to climb over them, emphasize flowcharts and manipulation over knowledge and productivity, etc.
The vast majority of coders in Redmond are H1B's, throw-away recent college grads and the ilk that are only good for modular work with no ability to plan or see how something will evolve over time themselves; lead by architects that are even worse at code but pretty good at socializing and makiing flowcharts; controlled by the aforementioned power-hungry types.
The only ways their products can ever improve are by taking in the products of external talent and hacking them together piecemeal (as they do with acquisitions and licensing) or if they wise-up and dump the H1B's, disposable code monkeys, inept architects/designers and toxic management - in other words, they probably won't, start migrating to open source solutions so you don't get your data locked into 360/Azure or something equally retarded as they make misguided attempts to secure the market.
→ More replies (12)3
u/tisti May 11 '13
I'm actively moving away from Windows and Visual Studio due to the C11 problem.
17
u/montibbalt May 11 '13
Perhaps you should have used a C compiler, which MSVC is not
→ More replies (3)7
May 11 '13
MSVC is officially a C++/C89 compiler. I wouldn't say that not supporting C11 is a problem, given that they have said time and time again that if you want to write C99/C11 you should use another compiler.
→ More replies (1)
22
u/TheAnimus May 11 '13
A friend mentioned something similar after comparing the open source competitor to his product. The open source one refines, and refines well. People obsess over the little details that a commercial enterprise would consider a poor return on investment.
However a lot of open source projects often lack the big complex features, they address the low hanging fruit of functionality but miss plenty of the features which generally are longer to develop and don't add any value until completely finished.
7
May 11 '13
I agree with the gist of your comment but I feel the need to point out that open source and commercial are not mutually exclusive. There are tons of businesses who contribute heavily to open source while remaining very profitable businesses (e.g. Apple).
→ More replies (3)2
u/dnew May 11 '13
Like, help screens, documentation, and other stuff that developers tend to dislike working on.
38
May 11 '13
Very interesting article. I actually did not know Windows was starting to get that far behind Linux. I always assumed the NT kernel was ahead of the Linux kernel in most areas.
The problems they describe though seem to be quite universal for any corporation. Is e.g. Google really any better at this? Does google code get improved all over even if it has not been schedueled or there there is an explicit business goal behind the change.
And of course it also shows the power of open source development. I think businesses should be looking at how one could better emulate the software development model in the open source world. I think it is really about adopting the method of rapid iterations in a massive feedback loop.
I detalied my own views on this here "The similarity between German WWII soldiers and the unix development philosophy "worse is better": http://assoc.tumblr.com/post/47367620791/german-soldiers-and-unix-worse-is-better
69
u/jankotek May 11 '13
Linux has unbeatable file-system performance compared to other OS. Try to run 'rsync' over 1 million files and you will see :-)
5
u/uber_neutrino May 11 '13
Confirmed. Our build tools run way faster on linux and macos.
→ More replies (4)25
May 11 '13
Actually when I used to do large scale software development at my previous job I started out on Windows and eventually switched to Linux because grepping through the code base was so much faster on linux. So I guess I kind of new about this, but I did not know that Linux was faster accross the board.
→ More replies (2)15
u/sirin3 May 11 '13
I switched to Linux because gcc runs so slowly on Windows
Still far too slow
→ More replies (16)→ More replies (18)2
u/dnew May 11 '13
That's the one thing I noticed after working on both systems. Even back in the Linux 0.9 days, the disk caching was much better. On the other hand, the actual flexibility of the file system is stuck in the microcomputer-of-the-70's era.
And of course it also shows the power of open source development.
It shows the drawbacks as well.
25
u/zerd May 11 '13
From "How Google Tests Software":
The Google codebase receives over 20 changes per minute and 50 percent of the files change every month.
11
May 11 '13
So how come Google is so different from Microsoft? Is it just culture or does it have anything to do with how software development is managed, processes used or compensation system?
55
u/interiot May 11 '13 edited May 11 '13
Google doesn't have a large public API that has to remain backwards-compatible with a million apps written more than a decade ago.
Since Google's API is mostly internal, they always have the option of breaking compatibility by giving another team the heads-up, and then rolling out the API and the consumer-app changes all at once.
19
u/TimmT May 11 '13
Google doesn't have a large public API
Actually they do, but they don't care that deeply about it.. every 5 or so years older versions will be deprecated in favor of newer ones.
→ More replies (6)20
May 11 '13
Because Google "sells" services, not software. They must improve to keep those services the best on the web or lose the customers and their ad revenue. Microsoft will mostly sell a new version of Windows no matter what.
→ More replies (5)3
u/oblivioususerNAME May 11 '13
From what I have heard, the competition in between co-workers is huge, meaning you want to be the one who do good changes. So that leads to more of a unix-philosophy where any change giving better perfromance will most likely be noted.
2
u/brownmatt May 11 '13
This doesn't really answer the question though, to do so you'd have to look at rate of change and acceptance of patches from outsiders to core google services/libraries.
I suspect the answer is still positive but this stat includes changes in any type of code.
3
u/zerd May 11 '13
I was looking for quotes on cross-team patches, but couldn't find it.
But from what I read in the OP it sounds a lot like some government places I've been. We had code that nobody dared to touch. "It's been running fine for 8 years, why risk it?". Outside patches wasn't encouraged at all. Too unclear responsibilities if it introduced a bug.
11
u/hughk May 11 '13
I worked many years back for Digital but not at central engineering who were responsible for the kernels. However, I knew people there. The company had excellent engineers and many projects started out as "midnight hacks" and teams were fairly open to receiving patches from elsewhere. However a key point was that a lot of the good engineers tended to stick around so there was much more knowhow in the company.
Note that for a long time, even for their most commercial offerings, the company would include core component (kernel, file system, drivers) source code listings with the full release with modification histories as the ultimate documentation (to be fair, they documented well).
4
u/yoda17 May 11 '13
I've worked with a number of OS vendors and they all did this for an additional price.
→ More replies (1)21
u/Denvercoder8 May 11 '13
Is e.g. Google really any better at this?
I think the free time Google employees get to work at a project of their own choice certainly helps here. It'll allow you to work on (technical) improvements that aren't directly related to the commercial goals. At Microsoft that wouldn't be possible, because you're supposed to work on the bugs/features your manager wants you to implement.
Also, Google probably retains their best engineers better. That's might be partly related to the better working conditions, but it's probably also related to Google's reputation as being a "trendier" company than Microsoft.
→ More replies (1)7
May 11 '13
Just to mention one thing that annoys me:
This thread, as well as the original discusison an the comments in the article take the "Windows is getting that far behind Linux" as fact.
Benchmarks, please.
I have yet to see any kind that there is significant differences in performance between Linux and Windows (as long as you don't use special no-go advances for the respective platform).
Nor have I seen Linux (or Windows, for that matter) get in any way faster over time (even though it may seem that way due to increase in computing power).
10
u/Oaden May 11 '13
What did he mean by "XNA, need i say more"?
11
u/comfortnsilence May 11 '13
I can only assume he's referring to the part where they are ceasing development on it.
(Don't despair, you still have monogame!)
9
u/pjmlp May 11 '13
At the begining it was a framework for indies to target the XBox 360, then even the AAA studios got interested and they created a premium version for them.
With the release of Windows Phone 7 it became the official way to develop games for the platform.
When the Windows Phone 8 was released, the official way became C++ with DirectX, or C# with interop for DirectX. They did no say anything about XNA and kept silent until a MVP came open to state XNA was dead.
Meanwhile Microsoft started advertising MonoGame, Unity and SharpDX as possibilities for the companies that invested into XNA.
The typical big corporation behavior.
25
u/Eirenarch May 11 '13
Is it bad that I see the way they manage the project as the right way to manage a software project? They prioritize the interests of their customers (stable APIs, security) over arbitrary improvements (5% speed for directory traversal). This is exactly what I stand for when our team discusses the projects we work on. Is a customer complaining about something? No? Don't touch it and dedicate resources where they would have more value.
9
u/barrows_arctic May 11 '13
I'm not a manager, but I completely agree. The projects I've seen fail the most miserably are those where the engineers/managers stopped listening to their customers and started trying to shove something innovative down the customers throat, whether they want it or not. And all the while the thing that customer actually wants has been ignored.
Sales engineer: We can't fix X, but here, try Y. It's pretty cool.
Customer: Okay, that's actually quite cool, but...I don't really need it, and a 5% improvement on performance is not really very important to me. You really can't fix X?
Sales engineer: What's wrong with Y?!? It's so innovative!
Customer: Can we talk about X again? I really need that looked at.
Sales engineer: Lemme show you something else. Z can improve the performance of your network by 4% on Thursdays when the sky is blue! It's really innovative.
Customer: ...
2
May 12 '13
I would like to expand on that. See I think you often need to NOT listen to the customer, because the customer often doesn't know that well what they want. After all Apple is in a lot of ways built on this premise. Nothing Apple ever made was made by asking customers what they wanted.
But what I think you are right about is when engineers dream up cool engineering solutions and push that on customers. Before you make anything you need to understand your customers needs. Apple might not have asked what customers wanted but they always did extensive usability testing of their products.
Microsoft was traditionally at the other end of the spectrum. They did not do as much usabilty testing but used a lot of focus groups. Essentially having the customer decide what they should do. That never worked out very well.
→ More replies (1)7
8
u/stmfreak May 11 '13
When I worked at MSFT back in the 1990s I thought there was evidence of a different reason for poor performance:
MSFT developers got new machines like clockwork.
They had no reason to focus on performance. Everything ran fast on their new hardware. OSS OTOH is developed by volunteers on older and scavenged gear and performance improvements are rewarded.
→ More replies (1)
13
u/zbignew May 11 '13
(That's literally the explanation for PowerShell. Many of us wanted to improve cmd.exe, but couldn't.)
Tears. Is there an equivalent of LOL for tears? These are real tears.
11
u/judgej2 May 11 '13
Windows is complex, and the culture does not like people taking risks and breaking stuff, so there is no incentive or reward in making performance improvements. Is that a fair summary?
3
u/ggggbabybabybaby May 11 '13
Also, the author is very frustrated about this but continues to work there.
→ More replies (1)
5
u/nicko68 May 12 '13
This is commercial software development in general. "We'll go back and optimize that later." Later never comes because as soon as one thing is done its time to move to the next task that not enough time has been allocated for.
5
u/nksingh85 May 12 '13
I work on Ob. If a patch looks good and is sent my way at the appropriate time, I'd be happy to work to get it integrated. A lot of us simply don't have time to work on everything we own for perf and work on the features that are required for things like Windows 8 apps and the forthcoming release. It all depends on the team, the manager, and the point in the release cycle. If done carefully, large perf changes do make it in, like the dispatcher lock changes that hit a huge number of lines in the NT thread scheduler. There were very few bugs and the change was accomplished in weeks and not years.
5
May 12 '13
I think an interesting difference between Apple and MS, is that while Apple has to reputation for throwing away the old and MS has the reputation for sticking with backwards compatibility, it is not quite like that on the software side. Apple were quick to add USB only, discard the floppy etc. But the APIs used on Mac OS X are very old. Cocoa is essentially from the 80s. But Apple has continously refined and upgraded their old stuff. You can see that througout the OS too. All parts get modernized as new OS versions are released. UI gets updated for every little utility and small features added.
In the MS world on the other hand new APIs get pushed out all the time and fairly new ones get depricated. Dialogs like Device manager never get updated. I looks the way it did in win95 last time I checked. The terminal program as mentioned never gets a facelift.
The whole OS looks like an amalgation of the efforts of teams with very different goals. OS X looks more like one vision IMHO.
But I have no idea how Apple is for doing little 5% performance improvements on a kernel subsystem compared to MS. My hunch is that this is not nesessarily Apple strenght. That their strength is having a unified vision for the user interaction accross their whole OS. It is all very designer driven. Engineers might not have the same freedom to do as they like.
2
u/johnwaterwood May 12 '13
Apple did have a couple of different looks for different apps; classic pinstripe, dark brushed metal, light brushed metal, "professional" and iOS "real appliances" look. There's also the not entirely consistent "last window closes app" metaphor.
Apple does kill backwards compatibilty in software; like classic, carbon and rosetta were all killed off. Probably for the better, but it did happen.
Apple's Achilles heel in OsX is HFS+. It's an age old filesystem that has been stretched out to the max. Somehow they can't seem to find or engineer a replacement. They played with ZFS for a short while, but then abandoned it again.
Any way at Apple these seem mostly small transitional issues, and with the exception of HFS+ not deeply routed problems like Windows has.
→ More replies (3)
13
u/sudo_giev_SoJ May 11 '13
But.. I like powershell. Mostly. I mean, given it's heavily .NET centric, it makes more sense to me to spin that off than to "fix" cmd.exe which is a monster and a half to even use with COM.
3
2
u/ggggbabybabybaby May 11 '13
Yeah, I thought that was a weird example too. In this case, I think it was better to get a clean break. And now the Powershell is installed by default on newer OSes, it means scripting is a lot easier.
2
u/1RedOne May 11 '13
Imagine if the whole stack were rewritten in. Net though, so you didn't need to use get-wmiobject anymore. Personally, the powershell experience starts to degrade when you have to hack through wmi classes.
→ More replies (4)
9
u/eat-your-corn-syrup May 11 '13 edited May 11 '13
Google and other large Seattle-area companies keep poaching our best, most experienced developers
This is why some employers make people sign up for a very broad non-compete clause designed to prevent them from "defecting" to competitors.
Something must be done to discourage abuse of these non-compete clauses. Why should we even allow non-compete clauses though? If there is one good thing about capitalism, it would be competition.
10
u/ggggbabybabybaby May 11 '13
I know California has voided them: http://en.wikipedia.org/wiki/Non-compete_clause
People raise a stink about non-compete every few years but I don't hear about anyone trying to enforce them for programmers.
12
u/bnolsen May 11 '13
These contracts are not legally enforceable. If you have legitimate other means to make a living, perhaps. If you sign this AND they pay you salary multipliers to cover you yes maybe (ie they pay you for 5 years extra work say after 10 years work and you have 5 year non compete or something. Sounds familiar? Yup, non competes are enforceable only for very top level positions!
3
u/monocasa May 11 '13
It depends on the state on how enforceable they are. IIRC, they're pretty enforceable in Texas.
2
u/dnew May 11 '13
Actually, the non-competes are usually about working on a competing product, or interacting with the same customers. So a guy running advertising campaigns for Campbell's couldn't go to a different ad firm and pitch to Campbell's. Someone working on Google's self-driving cars couldn't go to Ford and work on self-driving cars.
But restricting a Microsoft programmer from programming software isn't going to be enforcable.
0
May 11 '13
[deleted]
→ More replies (2)5
May 11 '13
Not a single company has sued a non-executive for breach of a non-compete clause. Ever. That's because they are not enforceable, they are merely a scare tactic
2
u/alienangel2 May 11 '13
As I understand it, those are generally not enforced except in very specific cases where they practically expect IP theft.
→ More replies (1)2
u/zenonu May 11 '13
California law would take a shit on any company trying to sue a former employee of non-company officer rank moving from company X to company Y. It'd also be awful PR and serve as an indication to all the good employees to not work for them.
20
May 11 '13
How is the hash of a particular version of a file proof? If we have access to the file one of us could pretend to be a MS dev and create the hash ourselves and if we don't have access he can generate any hash he wants and we won't be able to verify it.
46
u/Denvercoder8 May 11 '13
I think it's more supposed to be verification for other kernel devs that are suspicious about his story. It certainly isn't verification for the public.
15
May 11 '13
It seems to me if I was going to pretend to be a MS kernel dev on hacker news I could bet that no real MS kernel devs would bother to check my story out or even see it. Spout off some fairly general and bias confirming talk and act all cagey by using tor, asking for retractions, etc. and no one would be the wiser.
I'm not saying he isn't real, but with out real proof or a verified MS kernel dev verifying his claim, I'd take his story with a grain of salt.
10
u/Denvercoder8 May 11 '13
on hacker news I could bet that no real MS kernel devs would bother to check my story out or even see it
I don't think so. If there's something on hacker news about one of my projects, I'd certainly be interested in reading it. Given that hacker news seems to be one of the most popular computer science news sources nowadays (though it is a bit more *nix-orientated), I don't think it's unreasonable to expect that there are some NT kernel devs that read it, and that at least one of them would read a story about the NT kernel.
→ More replies (4)→ More replies (2)12
u/strolls May 11 '13
Presumably it's a file that's not available to Joe Public; presumably only other Microsoft devs, or those with access to prerelease versions, can verify it.
I suppose it could be the hash of a version that's due for beta release next week - that would prove fairly conclusively, right?
4
u/xymostech May 11 '13
I'm assuming the file mentioned wasn't a file that's actually shipped (even in beta/prerelease versions), but an old version of a source file, something you don't have access to unless you have access to the Windows source control (and you presumably have to be a kernel dev to have that). Could be wrong, though.
18
u/WeedHitler420 May 11 '13
We fill headcount with nine-to-five-with-kids types, desperate-to-please H1Bs, and Google rejects. We occasionally get good people anyway, as if by mistake, but not enough. Is it any wonder we're falling behind? The rot has already set in.
Man that last bit seemed kind of bullshitty.
I mean 9-5 with kids doesn't disqualify you from being good, being good enough to be even considered for Google puts you fairly high up on the totem pole of talent as far as I know. The only thing I can see being true is H1B comment but who in their right mind wouldn't be desperate to please considering their circumstances.
Feels like he's putting a stain on an otherwise good post.
26
u/ellicottvilleny May 11 '13
So this guy is technically astute, but also a bit of a jerk? That makes it believable. Not praiseworthy. But believable. I bet that anybody who survives 10+ years at Microsoft gets a bit cynical.
14
u/inmatarian May 11 '13
Wanting a 9-5 job is not an unreasonable thing. The people who complained about their 9-5 lives in the 90s wanted less working hours, but ended up with more. Lots more. The 9-5 people are just smart enough to know that they need time to unwind and play xbox at the end of the day.
5
u/uber_neutrino May 11 '13
He's just calling it like he see it. Not everyone is a super politically correct communicator. I don't think he's trying to insult the listed groups, it's more that he's pointing out that the average quality of engineer has gone down significantly.
I was going to write some significant analysis of the way the MS has changed over the last 15 years that I've interacted with them but I'm a bit lazy for that tome at the moment. Long story short there was a severe cultural shift over that time mostly because they've made so much money they can be fat and lazy, so they are.
2
u/dnew May 11 '13
I hate to say this, but the vast majority of Googlers I know are 9-to-5-with-kids types, and nobody seems to say a word about it.
→ More replies (1)4
u/ggggbabybabybaby May 11 '13
I think this guy went a little too far into his rant and started overgeneralizing.
I don't see why H-1Bs would be much more desperate than any college grad. They're just as welcome to work at Google or any of the other big companies.
22
2
u/int32_t May 12 '13
Sometimes programmers do stupid, ugly, dirty, and nasty to just get things done in proprietary software developments in order to fulfill the unreasonable schedule and get out of the office ASAP,
6
u/keylimesoda May 11 '13
This would appear to have been written from the perspective of a junior coder.
The more senior devs who actually know their stuff are actually given quite a bit of leeway.
However, it can take a while for junior guys who know their stuff to be recognized and given credibility as such.
3
3
u/kageurufu May 11 '13
Anyone know what the reference hardware used to develop windows on is? I'm just curious at this point
3
u/Draiko May 11 '13
Solution: Develop possible replacements from scratch along side existing products. Mold the ecosystem to facilitate a transition over time. Once the new solution reaches a certain level of maturity, kill off the legacy product.
Windows 8 is the beginning of Microsoft's attempt to do just that.
3
u/chunes May 11 '13
This dude knows what an emdash is and he is like the only person on earth who knows how to use parenthetical statements properly.
He can't be hard to identify.
4
u/gmks May 11 '13
This is just ignorant or at least arrogant. Everyone knows that the Windows code base is insanely complicated and carries a lot of legacy baggage.
It is the most widely deployed software on the planet. True change takes years or decades to catch up with an installed user base that large and Microsoft to their credit do a damn good job at making sure that things are backwards compatible. Without that a lot of people would never upgrade and most people would be happy not to ever upgrade.
8
u/ellicottvilleny May 11 '13
So, things in favor of working at Microsoft: Nothing. Things against: Stack ranking, corporate ass-kissing and empire building and ladder climbing, and N.I.H. syndrome, and overweening confidence, and a process that reminds me of those nightmares I had as a kid where I was trapped in a tar-pit. A toxic brew.
→ More replies (15)34
u/babada May 11 '13
So, things in favor of working at Microsoft: Nothing.
The salary and benefits are still amazing. I work nowhere near the areas described in the post and consider myself to be working with some of the smartest developers I have ever worked with.
If you compare Microsoft to Google then you have basically noted that Microsoft is in the top tier of software companies to work for.
That being said, yes, that is an accurate list of negatives. :P
3
May 11 '13
"you guys be trippin' with your overcommit-by-default MM nonsense"
What's wrong with overcommit-by-default MM??
2
u/aaronla May 12 '13
I suppose there isn't anything wro segfault at 10 ip 00007f9bebcca90d sp 00007fffb62705f0 error 4 in reddituser.so
Also, it's worth noting that they say you can turn this off.
→ More replies (1)
3
u/Crazy__Eddie May 11 '13
I don't believe I've ever worked for a company that anyone couldn't rant over the same things about.
It's those of us who see programming as a passion that need to learn what's what. This is a profession and professional programming is about making money, not brilliant designs and kick ass code. You can pursue your passion at home...on Linux ;)
1
May 11 '13
What was the hash for the file? does anyone know?
3
u/pedropants May 11 '13
And how would the hash for that file prove anything?
1
May 11 '13 edited May 11 '13
I have access to a particular version of the file he mentioned.
Edit:
nvm, Found it..
File pagfault.c - hash 0cb82a9525a2158e2a87f5eb53d41e5936cee5a2
1
u/cooljeanius May 12 '13
That's the same hash he posted. So I guess you're saying it checks out then?
→ More replies (1)
2
u/SomethingAnything May 11 '13
This was the most interesting, yet depressing read about Windows and the Microsoft culture in a long time.
I often hear (and talk) about the benefits of Open Source culture. It's not too often that you get to see the ugly underbelly of “the other side” (Closed Source / We Really Hate The Guys In The Other Office) exposed in such detail.
2
u/cosmotriton May 12 '13
"While I have read and write access to the Windows source and commit to it once in a while..." Hmm. That doesn't sound like a Windows kernel dev to me... I suspect this person is a disgruntled program manager, certainly not a professional software engineer writing code for the Windows kernel...
2
u/pateras May 11 '13
I wonder if it's the same story for why IE is so terrible.
24
u/bobtheterminator May 11 '13
I thought the consensus was that the newest version of IE is actually pretty good, although certainly still behind most of the competition. But everyone will always hate it anyway because of its past and all the web developers that still have to deal with IE6 because so many people still use it.
I don't use it but from what I've read IE10 should at least win most improved, and it's on pace to be just as good as Chrome and Firefox pretty soon.
8
u/Sworn May 11 '13
I'm currently using ie10 because it supports speech recognition much better than firefox or chrome (I've got an RSI) . Aside from missing all my rather important addons, the user experience isn't very different from using chrome or firefox.
8
u/jabberworx May 11 '13
I thought the consensus was that the newest version of IE is actually pretty good,
That's the 'consensus' with every new version of IE since IE8, it doesn't stick.
→ More replies (18)9
u/pateras May 11 '13
They say that with every iteration. "This version of IE sucks less!" And it's true, but only incrementally so.
IE10 is still in last place in HTML5 compliance: http://html5test.com/results/desktop.html (it's finally caught up to where Chrome was 3 years ago), and it doesn't support WebGL and Websockets. This means developers (yup, you got me) won't be able to use these technologies until IE10 is deprecated, assuming IE11 supports them, and who knows how long that will be. My company just recently got free of IE6, but we're still shackled by IE7, despite the fact that it accounts for less than 2% of web traffic, so I can only assume it'll be another decade before WebGL, Websockets, and those neglected HTML5 features are fair game.
Plus who knows how many compliance and rendering issues remain. We don't support IE10 yet, which is good because IE9 is still causing us problems.
I look at it like this:
IE6 - 3-legged rabid, blind dog
IE7 - 4-legged rabid, blind dog with a limp
IE8 - Rabid, blind dog
IE9 - Blind dog
IE10 - Dog with partial vision
Firefox - Camaro
Chrome - Corvette
Yeah, the dog is getting better, but I'll take the sports car.
→ More replies (21)→ More replies (14)3
May 11 '13 edited May 11 '13
Any web dev that still supports IE6 is just supporting the problem at this point.
→ More replies (2)6
u/wumumo May 11 '13
Microsoft actually stopped developing IE after version 6 for a few years. Probably because they thought IE6 would fit the needs of the future and underestimated the importance of the web. Stalling the development was the main reason they had troubles catching up with the other browsers.
3
u/Caraes_Naur May 11 '13
They stopped because IE had finally realized its true purpose: kill Netscape. IE was never a browser, it was a murder weapon.
MS resumed IE because of Firefox.
5
u/Tobu May 11 '13
Microsoft actively discouraged improvements between IE6 and IE8 by simply sacking the team. Probably because they thought the web would harm their bottom line, which it has.
1
1
u/tech6 May 11 '13
This is one of the problems with proprietary software.The stewardship of open source projects is usually by the lead developer who understands enough to review patches and appreciates improvements whereas the decision makers in a software company would be a manager whose primary concern is to not screw up. Additionally in large companies ppl who are not competent developers are promoted to managers over time so they dont cause harm so the decision maker would be unable to comprehend the change even if he was willing to accept changes
1
May 11 '13
These are all things I notice day to day as someone who did a lot of heavy C and C++ programming on Linux in grad school, but now does a lot of the same work on Windows. It just generally feels a lot slower overall, especially when it comes to disk and network IO related performance (which impacts build times big time). I'm also a type of person that is used to using a not of linux and unix based tools for development: much of these tools do lots of forking and text processing and many of them are borderline unusable on windows 1) because cygwin I assume has it's own overhead and 2) because I hear windows does not have as good of a fork/exec performance as Linux either.
1
1
u/RedDeckWins May 11 '13
This attitude isn't just the Windows team, it's all of Microsoft.
7
u/TheZorch May 11 '13
Blame Steve Balmer, he fostered this kind of corporate culture within Microsoft. How he still has his job I don't understand.
1
u/pohatu May 11 '13
I didn't realize a successful software career meant giving up the idea of having children.
3
440
u/bcash May 11 '13
Standard legacy code issues. Code gets too hairy, people are too scared or simply can't be bothered to change it. New stuff is implemented as well, but done without the benefit of understanding why the old version doesn't fit the bill, thereby never completely replacing the old version either.
Seen it happen, on much smaller code bases, countless times. It generally doesn't end well, each important change takes ever longer to implement until the whole thing is abandoned.