Trust, Users and the Developer Division
m.facebook.com
m.facebook.com
But, let's put all that away. Everyone's guilty of looking at the past through rose-colored lenses. OWL was actually quite nice. MS's response, MFC, was an awful bare-thin wrapper over the windows API -- and that pig needed a lot more lipstick. MS was right to dump it. The problem was, looking from in from the outside, MS had too many cooks in too many kitchens, trying to do everything as fast as possible. In response, documentation was always pretty bad (there was lots of it, but the quality's pretty low), the APIs were rarely clear or straightforward, and you ended up single-stepping your debugger to figure out what the APIs really did.
Frankly, I think the APIs were always awful enough to warrant fixing, but they were never organized enough to do the real work in fixing it. It's not something you can grunt through, it requires a cohesive set of patterns, abstractions, mechanisms, and conventions. That kind of agreement just doesn't seem possible over such a large and contentious organization.
The biggest disappointment is how many times they've started from scratch within the .NET framework. The constant churn of database APIs mentioned in the article is a great example. Finally now MS has followed a more open-source-ish development process with EF.Net and MVC - ironically by switching to faster iterations I feel more confident using it because I know it's being well cared-for and won't get abandoned and deprecated.
The big disappointment is how .NET has failed to be "write once run anywhere" even within Microsoft's universe. Every platform except the server gets a restricted subset of it, and you often don't find out that your subset is unavailable until run-time.
As the OP alluded to, the way Microsoft is built today it has a fatal organizational flaw that prevents creating the next great Windows platform. The platform/dev tools team and the OS team are in completely different business groups within the company. The platform team develops the wonderful .NET platform for small/medium applications and server apps while the OS team keeps crudging along with Win32. Managed languages have their place, but they have yet to gain traction for any top shelf large-scale windows client application vendors (Adobe, even Microsoft Office itself, etc.)
Major client application development still relies on unmanaged APIs, and IMHO the Windows unmanaged APIs are arguably the worst (viable) development platform available today.
What Windows needs is a new subsystem/development platform to break with Win32, providing simplified, extensible unmanaged application development, with modern easy-to-use abstractions for hardware services such as graphics, data, audio and networking.
What Apple offers is not some revolutionary OS architecture, but their Cocoa and Carbon APIs, and their Core libraries which are for the most part, well thought out and have survived multiple architectural transitions (PPC -> Intel -> ARM, desktop -> mobile).
Something similar is starting to come to fruition with WinRT, but the inertia in large scale apps is unbelievable.
For example, there was a big push toward tools support for Office. MS said this was a pillar for VS2010. I spent a lot time doing Office development with VSTO/VSTA.
Windows Phone 7 was released with a new user experience and was the answer to iOS and Android. It actually got developers excited. But, a year later with Windows Phone 8, Microsoft told all the developers that the investments they made in Windows Phone was a waste of time because none of their apps will work on Windows Phone 8.
Huh? That never happened. Virtually all WP7 apps work on WP8.
You couldn't upgrade your device to the new OS!
Why is this worse? It leads to a very immature platform with few avenues to improve upon it. At least iOS 7 makes it easy to still target 6, where the hard part is UI changes. Microsoft changed little in the UI between 7 and 8, but somehow the phones and tools remained incompatible.
And toss in JS to get stuff done, too? Web frontend tech is quite a mess, and I can't imagine how anyone thinks it's not possible to design a better system from the ground up.
It might not be practical, and it might have traction issues, but working with WPF (XAML's just a serialization format...) was vastly easier than HTML and CSS.
I'm a bit confused by this, as it's certainly been called DevDiv between 2008 and the present.
"We had to rewrite VB to use the VS shell and this fundamentally changed the VB product and it user base forever. "
There's no reason the VB6 language couldn't have been changed to use the new shell or even the CLR. The real culprit was the decision not to attempt backwards compatibility between the new VB ("VB.NET") and the old one.
Whether commercial or open source, only time and market share can tell us which platforms are going to be winners.
They lost me when they changed “the” data framework from ADO .NET to LINQ to SQL to Entity Framework, simultaneously obsoleting Windows Forms in favor of WPF, and later in favor of Metro-ish Silverlight.
All this while Apple sticked with Foundation and Cocoa and built greater / high-level frameworks around them.
As Dare put it in the comments: “... platforms are being born and dying so often that it seems you need to subscribe to Mary Jo Foley's latest breakdown of Microsoft internal politics before deciding what to bet on...”.
Anyway - developers have long complained about Microsoft moving their cheese; when that's how Microsoft makes money it is guaranteed to be never-ending!
http://realworldsa.blogspot.com/2011/11/microsoft-moved-my-c...
> The Windows trust and value proposition was always compatibility,
There are other platforms, you know? If you say "compatibility", you might want to add "compatibility with other proprietary microsoft stuff".
> low-cost devices,
They could be cheaper when not being forced to pay for windows with them.
> and an open architecture (to name a few).
I don't really get it. Almost everything he talks about is proprietary closed source microsoft specific stuff. How "open" of an architecture is that?
But then I don't really understand why people would want to tie themselves completely to proprietary microsoft technology, even if it did not change so much.
Aren't there enough actual open and cross platform frameworks that people could use? Why specialize yourself to create software that does and will only ever work on windows?
> "How "open" of an architecture is that?"
Again is a jargon that was used way before that Linux came to light. He is talking in comparison with Apple which hardware was closed.
but whatever...MS is teh sux0rz! Hah!
Happy now?
But it's a good bad example for others to avoid.
What?
We don't say motor-vehicle anymore, electric lamp, and so on. People would probably think you're weird if you do that :)
Sometimes I think computer science history need to be at-least an elective subject for software engineering/computer science courses.
So for instance, the first IBM PC and Apple II were considered open, because you could extend it by adding peripherals. On the opposite side, the Apple IIc was closed because it wasn't upgradable from outside of Apple.
In the case of MS, they were really opened in terms of hardware that would accept since was the fabricant who would provide the drivers.
Lately, pretty much all PCs are open under that definition just devices like iPad or some smartphones would be considered closed.
The PC business guys reused the term as part of their strategy, but for engineers it always meant something else.
This is a really great idea, never thought about it before. Possibly even a decent book idea. Something that covers the hardware/software landscapes over the past 30 - 40 years, say.
Linux is much more open of course.
I wish Valve all the success. More platform choices would be good...I just doubt that they will succeed against Sony, MS, and Nintendo...but hey, I've been wrong before.
Anyway, it sounds like some of the new work at Microsoft gets that they need something closer to the metal without dumping c# developers. I won't link to it, because it too was linked to death around here.
You sure? :-P
Change happens. It's life. I guess you just pick your poison.
What? No, it doesn't have to, or at least not at the pace of once a year. It's not because everybody else does it, it's OK all of a sudden. I like php exactly because it's relatively stable (I'm not talking about the frameworks here, let's not go there).
But fuck all those others - that wasn't my point. The win platform could have been so much better for pragmatic developers who just want their foundation to be stable to just get shit done. Why abandon C++ in the way they did? Why the 4-5 different paradigms for UI development? Not incremental changes, or libraries, but completely incompatible new ways of doing things, and if you don't follow the trend, you'll be left out. If the dev tools group had known their place, they would have served developers as customers, instead of the situation we have now.
Of course the vocal minority of chase-the-next-thing developers brought this on us as well, it's similar to the 'disregard everything from the past and reinvent everything because I'm so much much than everybody else' often displayed on sites like here and reddit programming - 6 years ago Python was the hot thing, 4 years ago Rails, 2 years ago Node and I'm not even sure what it is now. Anyway, my point is that it's innate in inexperienced software people to want to dive into tech for the sake of it and forgetting the business case behind it. And that is what holds back the industry as a whole, reinventing and re-implementing everything every few years under the guise of 'innovation' or 'we'll do it right this time', but it's really just NIHS. And that goes for the Windows ecosystem, the OS ecosystem, others as well I guess but I don't know them well enough, or they're not old enough yet for this pattern to unfold).
In fact, my read of the article is "Microsoft, we were going to make money together, why are you throwing out the baby with the bathwater?"
If MS develops an altogether new thing, what's the chance that it wont get thrown out in 2 years, again?
I primarily work in the MS ecosystem and it is something I meet with trepidation with every product announcement.
(Also, if this was posted every couple of days, wouldn't it need to be posted a little longer ago than Jan 7?)
Borland and Digital Research put MS to shame back in the late 80s. (compilers and OS)
Then I got Linux around 95 and really liked it. MS API changes were maddening. (had been using a dozen other OSs, mostly *nix, at work the 2 or 3 years before that)
The last few years, I've had to interact with OSX, iOS & Android. It's not about open source vs closed, it's about "works" vs "sprawling, shifting, unreliable mess".
Perhaps MS's foibles would be more forgivable if it weren't perennially shoved down my throat as "industry leader". In what, crapware???
Isn't that completely false? All WP7 apps run on WP8, bar a few minor incompatibilities.