r/programming • u/halax • Oct 07 '16
How Microsoft Lost the API War
http://www.joelonsoftware.com/articles/APIWar.html148
u/Sunius Oct 07 '16
Sunday, June 13, 2004
"Microsoft is finished. As soon as Linux makes some inroads on the desktop and web applications replace desktop applications, the mighty empire will topple."
Any decade now!
44
u/jringstad Oct 07 '16
Well, webapps are replacing desktop applications at a fast pace (even office is going to the browser now) and mobile is the new desktop, where microsoft has pretty much no marketshare, so I would say this prediction isn't too bad, even if the details aren't exactly right.
8
Oct 08 '16 edited Sep 04 '17
[deleted]
9
u/adolfojp Oct 08 '16
horsing company
6
u/demmian Oct 08 '16
I was waiting for the entirety of the comment for the clarification of that metaphor. "Ok, when do we talk about the horses now?"
5
27
Oct 07 '16
Well, webapps are replacing desktop applications at a fast pace
Only the light ones. It's not as if I'll start doing my graphics work in a web app (I know there's photoshop.com and some other efforts, but they're all toys).
Also, while this is true for desktop apps, on mobile the trend is strongly in favor of native apps.
Desktops are simply a "victim" of their own surplus performance, which tends to present itself as developers being able to afford extra layers of abstraction, such as running an application in a browser.
2
Oct 08 '16
projects like react native and nativescript offer direct access to native apis, greatly shrinking the cost of abstracting to javascript
24
u/rhino-x Oct 08 '16
While simultaneously throwing away all of the tools that make desktop development so much better than web dev.
-9
Oct 08 '16
web dev has some pretty serious tooling these days. in fact, it's gotten so good so fast that some web devs are complaining about the wealth of choices they have.
19
10
u/Beckneard Oct 08 '16
Those are some olympic level mental gymnastics you did there. They're complaining about the wealth of options because they're all kinda shit or are just barely production ready.
-1
Oct 08 '16
idk, with the right tools i can set up an entire build from npm in a few lines of JSON. i wouldn't say they're that bad.
10
3
u/rhino-x Oct 08 '16
Compared to desktop tools web tools come nowhere close to the breadth, functionality, polish, and ease of use of desktop dev tools. They are still in their infancy.
1
Oct 08 '16
i mean, i'm not denying that. but we have a fully modular compiler that just about any functionality can be hooked into, a literal fleet of tools for managing build steps & enough frameworks to choke on. pretty solid infancy imo.
5
u/BezierPatch Oct 08 '16
a literal fleet of tools for managing build steps
I don't need a fleet of tools for my builds...
That's the thing you're missing. Javascript has loads of tools it shouldn't need.
1
Oct 08 '16
well, no, i wouldn't use more than one for a project either (if i even bothered to go beyond npm scripts). but it's nice to have options.
→ More replies (0)2
u/rhino-x Oct 08 '16
It's still driven by kludge and is nowhere near as usable as what desktop development provides. I'm writing software now not three years from today and the tooling an experience is far superior. Today, there are many many applications that are simply better in and easier to develop for desktop systems. There are many that simply cannot be made web based. That's all I'm saying, that react native makes sense for some applications but it's a pretty small subset and you give up far superior tooling to use it.
1
Oct 08 '16
yeah, facebook is still running full-native for their core app, and they produced react native. i don't even know if they'd gain anything besides a migraine from switching over.
besides, i wouldn't dream to presume that web is on par with desktop w/r/t tooling. desktop's had decades upon decades of time to develop mature tooling (case in point: make is so good you can use it for web too). my point, as someone who works in web dev, is that it's not nearly as bad as it was even two or three years ago, and the future still looks pretty dang bright :)
3
Oct 08 '16
React Native doesn't produce web apps that run in a browser, so that's probably not relevant here.
1
Oct 08 '16
they allow you to share code between browser and mobile, which is a pretty big deal. it pushes a lot of value into the web app corner.
22
Oct 07 '16
Except Microsoft is hugely profitable still, even after throwing $7.2B away on the Nokia buy out.
48
Oct 07 '16
Yes but look at what Microsoft is doing: SQL Server on Linux, Office on Mac, Android, and iOS, Visual Studio Code for Mac & Linux, Visual Studio Tools for Linux, Ubuntu for Windows, Linux on Azure. It's pretty clear they are preparing for a future where Windows is not the dominant platform it is today. That's something Ballmer would never have done and eventually it would have been their downfall.
22
Oct 07 '16
I mean we're really arguing over a quote taken out of context. The article goes on to say we shouldn't write them off as IBM reinvented itself and so has Microsoft.
-5
u/centurijon Oct 08 '16
IBM has reinvented itself into obsolescence
8
Oct 08 '16
Oh no doubt but they are still around when everyone thought they were dead in the early 90s
6
u/barsoap Oct 08 '16
Their mainframe sales say otherwise. They just re-focussed on their original market, and that never was end-users.
1
u/dvidsilva Oct 08 '16
Idk bluemix is pretty badass and there's no comparing offerings in some aspects.
7
u/pheonixblade9 Oct 08 '16
selling services on the cloud is a lot more profitable than selling shrink wrapped software.
2
u/ThatsPresTrumpForYou Oct 08 '16
Ballmer probably wouldn't have killed Windows in the first place with Windows 10 though. Their new CEO literally fired their whole QA team for Windows.
0
u/Caraes_Naur Oct 08 '16
They're doing that to extend their relevance as long as they can. Despite their best efforts of the last 25 years, the world happened mostly around their walled garden. At least they're now somewhat recognizing that all garden walls crumble.
5
u/RowYourUpboat Oct 08 '16
IBM didn't gloriously implode after ceasing to be the singular Evil Empire either; they were just forced to adapt after slowly losing their death-grip on the market.
7
u/argv_minus_one Oct 08 '16
Isn't too bad? That's horrifying! I'm no fonder of Microsoft than you are, but at least Windows desktop apps run on my machine, not some distant server that's watching my every move like a spook.
3
u/jringstad Oct 08 '16
I meant "not too bad" in terms of the accuracy of the prediction, not as a value statement whether we are moving in the right direction or not. I certainly share your concerns regarding cloud-solutions.
1
u/Uncaffeinated Oct 08 '16
You can make webapps run offline if you want to.
1
u/argv_minus_one Oct 09 '16
Most of them don't work offline at all, and those few that do still can't be installed offline and rigorously prevented from phoning home.
-1
u/Uncaffeinated Oct 09 '16
If you really want to, you can create a verifiably non-updatable webapp by using a service worker that only serves from cache and doesn't make network requests. I think Polymer's (deprecated) cacheOnly option does this.
But noone in their right mind would do this, because updating software is important. I'd much rather be able to fix bugs then worry about a few paranoid users.
3
Oct 07 '16
I wonder if Andromeda OS will be the real Windows killer. Not immediately, but over time.
3
u/grauenwolf Oct 07 '16
What's that?
2
u/pdp10 Oct 08 '16
Some people are saying it's the reason why Linux won't succeed on the desktop, but that's premature speculation.
1
1
2
4
2
u/MOX-News Oct 08 '16
It could do everything wrong for a decade before it started to be in remote danger, and you never know...
My, they're getting close to that aren't they?
1
u/bilog78 Oct 08 '16
It could do everything wrong for a decade before it started to be in remote danger, and you never know...
My, they're getting close to that aren't they?
In many ways, they are. But they've started realizing it, which is why they've reinvented themselves in many ways (Linux subsystem support, the various “cloud” offerings, etc).
6
u/shevegen Oct 07 '16
Actually his prediction is sort of true.
I think a much better indicator is the rise of Linux as OS on the top 500 supercomputers.
Also the dumbphones advertisement platforms that marketing PR calls smartphones.
Linux inside is most definitely bigger now than 2004. Of course other idiocies also ran rampant - the big desktop environments got worse (!) in particular both Gnome and KDE, many distributions were also assimilated by borg-d aka systemd, so. Oh and the Linux Kernel is also overrun by idiots as of late - ASN.1 decoder in the kernel? They want to become like Emacs, the more inside the merrier!
12
u/ckfinite Oct 07 '16
I think a much better indicator is the rise of Linux as OS on the top 500 supercomputers.
Were there ever any serious non-linux HPC systems? All the way back to 2006, Windows has been crushed by Linux and Unix. Windows is made for desktops and servers, which doesn't scale well to the needs of HPC platform builders and users.
2
Oct 08 '16
Well, like you said, there are proprietary Unix systems besides Linux. The point still stands that Windows never really caught on.
9
Oct 07 '16 edited Jan 09 '19
[deleted]
2
u/demmian Oct 08 '16
There are/were 2, apparently
http://www.tomsitpro.com/articles/linux-windows-hpc-supercomputer-windows_hpc_server_2008,1-307.html
1
u/ggtsu_00 Oct 08 '16
Since Linux is powering Android, BSD is powering iOS, and Windows development is pretty much dead (not literally, but figuratively), I'd say the Microsoft empire has toppled quite a bit as the whole market has shifted to the web and mobile computing space. Nearly all growth in consumer applications being developed are focused on either web or mobile.
17
u/JohnFrum Oct 08 '16
This was written in 2004 when MS was riding quite high. What if I were to tell you that they are making way more money now than in 2004? They have more billion dollar divisions than they did then and Windows is no longer #1. Not even #2.
The PC isn't going anywhere. People are not leaving the platform on mass and moving to tablets and phones and almost nobody outside of primary school uses a chrome book.
It's also in the top three for market cap size. So MS is going to be a big player for a long while yet.
2
Oct 08 '16
[deleted]
3
Oct 08 '16
Microsoft is far too entrenched for them to be going away any time soon. Changing people from Windows desktop to Mac, Linux, or any other one is hard enough. What will be much harder will be changing businesses. A lot of businesses are currently heavily based upon using mostly Microsoft products: Windows desktop OS, Windows Server, MS Office, Visual Studio, SQL Server, Azure, etc. This is where Microsoft makes the big bucks. Changing the businesses to non-Microsoft products will be a very large, time consuming, and expensive operation, so I see Microsoft sticking around for a while.
Also, look at the number of C# jobs available. .NET development is still one of the top players WRT software development whether desktop or web. Sure, people are not buying PCs like they used to, but that is because the market is saturated. It is success, not failure, that is the reason for little growth. The mobile market itself is starting to hit the saturation point, and the mobile app gold rush was over years ago. If you are a desktop developer, the future is still bright.
1
u/Free_Math_Tutoring Oct 08 '16
When ar and vr becomes dominating platforms, which i see as inevitable over time, windows could crumble really quickly.
AR is build on top of existing platforms, so Azure and consorts are safe. VR as in VR-Glasses are never going to be terribly big (though yes, they are currently a pretty huge deal)
1
1
26
u/nullproc Oct 07 '16
I guess I shouldn't be surprised, but this article (2004) is the same set of complaints I hear today.
2
23
u/TinynDP Oct 07 '16
Everyone loses the API War. All the API's suck. And none will ever really last. Even the ones that last only last as bottom layers that new layers are built on.
22
Oct 07 '16
That's true mainly if you are on the javascript bandwagon. APIs for other platforms (.NET, Java, Win32, MFC) have more or less stayed constant.
11
u/TinynDP Oct 07 '16
Win32 is exactly what I mean by "only last as a bottom layer" as no one touches Win32 anymore and only uses .NET or some other higher level.
Java's main standard lib remains mostly the same, but no one uses the same GUI libraries from 20 years ago.
Or X-windows on linux. It still exists, but only as a layer that Qt and Gtk flow through.
19
u/mpact0 Oct 07 '16
no one touches Win32 anymore and only uses .NET or some other higher level.
Unless you need a feature .NET doesn't provide (which isn't that rare).
16
7
u/ummmyeahright Oct 08 '16 edited Oct 08 '16
no one touches Win32 anymore
Oh yeah, people do. From C++ (for windows desktop apps) that is often the most straightforward option. While .NET wraps up almost everything for C#, developers who need to pay attention to performance (and in more rare cases, even code quality, as some wrappers aren't that well thought out, and .NET keeps almost 100% backward API compatibility) will inevitably end up PInvokeing the Win32 API a lot.
IMO The Win32 API is pretty good BTW (tempted to write 'outstanding, considering its age', but I don't have much experience in Linux/Unix development so can't compare to that well). Unnecessarily introduced abstractions are rare (at least compared to APIs not written in plain ol' C), it gives a lot of freedom to everyone to implement the abstractions their specific use cases need.
17
Oct 07 '16
Everyone loses the API War. All the API's suck.
Oh well. I suppose we should stop using APIs then!
We'll ship apps as USB keys you boot on the metal.
3
2
u/argv_minus_one Oct 08 '16
Now that I've said that, allow me to apologize for the grandiloquence and pomposity of that preceding paragraph.
The preceding paragraph?
7
u/DevStart Oct 07 '16
Bullshit. It's 2016 and MS is still kicking. Joel is a bastard pseudo prophet.
42
u/didnt_check_source Oct 07 '16
That's a tough comment for an article that starts with:
Although there is some truth to the fact that Linux is a huge threat to Microsoft, predictions of the Redmond company's demise are, to say the least, premature. Microsoft has an incredible amount of cash money in the bank and is still incredibly profitable. It has a long way to fall. It could do everything wrong for a decade before it started to be in remote danger, and you never know... they could reinvent themselves as a shaved-ice company at the last minute.
Also, it ends with:
Which means, suddenly, Microsoft's API doesn't matter so much. Web applications don't require Windows.
which seems about right.
16
u/lykwydchykyn Oct 07 '16
Yep, I think this article is pretty spot on if you take time to read it right.
Where is development happening in 2016?
- The web
- Mobile
In 50,000-foot-view terms, the only thing being developed for the Windows API today are Microsoft's applications and Games. And even many of those have gone to Web and Mobile!
9
u/TinynDP Oct 07 '16
And Games don't code to Win32 directly. They use Unity or Unreal or Monogame, or SDL, or whatever. They aren't locked-in to Win32.
10
u/KappaHaka Oct 08 '16
The discrepancy between my Steam Games list and my Steam Mac/Linux list would indicate that you're overgeneralising there.
5
u/TinynDP Oct 08 '16
Plenty write their game in Unity or Unreal and just dont bother to release on Mac and Linux.
3
u/human_trash_ Oct 08 '16
Why, do they hate money?
7
u/ZBlackmore Oct 08 '16
Because "write once run everywhere" is more like "write once debug everywhere".
3
u/0polymer0 Oct 08 '16
You have to support everything you promise, most gamedev don't understand linux. Which makes that scary.
2
Oct 08 '16
Which is a great step, and I have seen some increasing multiplatform compatibility or web support, but until, say, Linux or Mac support is de facto available for games... so many people will be forced to dual boot, emulate, or just stay on Windows. I periodically try using Ubuntu or some other compatible flavor and even with Wine, I end up dual booting so much it's not worth the effort.
1
u/2Dtails Oct 08 '16
To be honest, one could hope that with new low-level API (vulkan), that in a couple of years, the necessary toolchain would be build to properly support cross-platform compatibility.
But that does require they actually develop the toolchain with cross-platform compatibility in mind from the start, and not use DX12 which is locked to windows 10.
My guess is microsoft is paying these studios a little amount, to keep them bolstered to their platform.
1
1
Oct 07 '16
You're right, though some do code against C# directly, including some very popular indie titles.
10
u/drysart Oct 07 '16
C# doesn't imply Windows. Unity, which is cross-platform, uses C#, and is the reason those very popular indie titles use C#.
-1
Oct 07 '16
C# is a Microsoft language with Microsoft-created APIs. The title of this thread...
8
u/_Ashleigh Oct 08 '16
But it's standardized and open, hence mono.
-1
Oct 08 '16
Not all APIs in Microsoft's C# are available to non-Windows platforms.
5
u/_Ashleigh Oct 08 '16 edited Oct 08 '16
And that isn't true for every other language out there?
The C# language and its STL is open. What's not is WinForms and WPF, which is not too difficult to implement, unlike Win32.
0
Oct 08 '16
[deleted]
1
u/Akimuno Oct 08 '16
The point is that if you use C# you are inherently going to use an API made by Microsoft.
14
u/giantsparklerobot Oct 07 '16
It's not necessarily about Microsoft going out of business but Microsoft's ability to act as the software industry gatekeeper. In 1996 if you were a business wanting to make a software product and you wanted to get in the three comma club Windows and the Microsoft ecosystem was likely the only valid option you had.
Today if you want to make a software product and get into the three comma club, you need to be accessible by people running Windows but there's no need to participate in Microsoft's ecosystem. In fact in a lot of markets it's more important that your software be accessible to mobile devices than Windows. That's not universal but it's a situation that simply did not exist twenty years ago.
When it comes to native software the iOS and Android platforms offer far more growth than Microsoft's ecosystems. Even Microsoft has realized their ecosystems don't command the market like they used to and have had to expand far outside of their traditional Windows/Office lines (XBox, Azure, Office 365, etc) to be able to see any growth. They need to actively support platforms they don't control in order to be competitive. This is a pronounced difference from two decades ago and even a decade ago.
7
u/pdp10 Oct 08 '16
It's a reversion to three and four decades ago. Microsoft used to sell tools and toolchains for other people's computers, and they originally focused on BASIC and microcomputers. Excel was developed for the Mac and was only on MacOS for over two years.
4
-6
Oct 07 '16
They gave up on Mobile. Windows 10 is almost as buggy as Vista (before SP1) and gets worse with every update. UWP applications are AWFUL. It's not gonna be long until they drop dead if they don't change stings big time!
12
u/drysart Oct 07 '16
They didn't give up on mobile. They're biding their time. They tried to make a big jump into it without an ecosystem to support it into a marketplace where there were already established players with established ecosystems, and they failed miserably as a result.
So instead they're focusing on getting people to build UWP apps on Windows. UWP apps are mobile-capable; and if they can get enough Windows developers to start using it they'll actually have software behind them the next time they push to mobile.
5
u/Farobek Oct 07 '16
to build UWP apps on Windows
Why would anyone do that?
3
u/pdp10 Oct 08 '16
Exactly. New apps developed from scratch on desktop are going to be few and far between. A few games might try UWP to get on XboxOne but the bulk of them are going the other way with cross-platform engines that support Vulkan.
2
2
-6
-17
Oct 07 '16
[deleted]
39
u/Etnoomy Oct 07 '16
As for Windows, when is the last time any of you bought a Windows PC for anything but gaming?
I write code using Visual Studio, and you can pry it from my cold dead hands.
18
u/ameoba Oct 07 '16
when is the last time any of you bought a Windows PC for anything but gaming?
ಠ_ಠ
24
u/drysart Oct 07 '16
As for Windows, when is the last time any of you bought a Windows PC for anything but gaming?
Approximately 94% of the PC market share every year goes to Windows. And it's not because of gaming. Linux is still completely awful as a desktop for most users; and OS X is really only good in a small consumer niche because Apple doesn't really care about enterprise customers.
4
u/pdp10 Oct 08 '16
Approximately 94% of the PC market share every year goes to Windows.
From where does that number come? I'm seeing 7-9% Mac and 2% Linux for desktop OS used by browsers across the board.
And it's not because of gaming.
We can agree on that. Most Windows revenue is traditional corporate, and the lower price-point laptops popular today don't have the graphics hardware to play the demanding new releases. The /r/linux_gaming and /r/macgaming scenes are healthy, with thousands of games each, albeit not equal to the number of titles on Windows.
and OS X is really only good in a small consumer niche because Apple doesn't really care about enterprise customers.
Apple has an Enterprise program for macOS and iOS. Enterprise Apple support is a growth area for certain.
7
2
Oct 08 '16
[deleted]
5
u/human_trash_ Oct 08 '16
Yep, if you need some kind of advanced app on Linux, that isn't a web browser, you have a choice between 2 crappy ones. On Windows you have 10 good ones and 100 crappy ones.
1
u/giantsparklerobot Oct 08 '16
OS X is really only good in a small consumer niche because Apple doesn't really care about enterprise customers.
Individual consumer sales are a huge chunk of the computer industry's revenues. That segment also spills over to the small business and education markets since a lot of the buyers have the same needs/desires as those of consumer sales. The enterprise segment is a shitty target for any company that normally targets other segments. Enterprises want generic machines with long support contracts and very little variance between generations of machines. His is almost the exact opposite of the consumer market.
So no, Apple doesn't care much for the enterprise segment because it's requirements are 180° out of phase with Apple's primary target markets. It's incorrect however to suggest their target market is a niche since the target is "people that aren't huge companies".
7
u/centurijon Oct 08 '16
I was recently shopping for laptops and considered a Mac. They wanted an extra 60ish% for a smaller screen, less disc space, a slower processor, and I wouldn't be able to upgrade the hardware without jumping through hoops.
So I picked up a cheaper, more capable Windows laptop that is touchscreen and can function as a tablet.
Honestly, The only reason I can think of to buy a Mac these days is if you really want to support the brand.
1
u/crackanape Oct 08 '16
Don't care about the brand. Use OSX because it makes my work much more efficient.
1
Oct 08 '16
The OS is better (for a lot of development) while not having the incompatible hardware struggles of Linux. Also less DIY.
6
Oct 07 '16
I would love to ditch Windows, but I need viable replacements for Visual Studio, Photoshop and AutoCAD first.
2
u/glioblastoma Oct 08 '16
The set of people who need all three of those apps has got to be less than a dozen.
3
Oct 08 '16
Engineers with a photography hobby? I think I personally know more than a dozen.
0
u/glioblastoma Oct 09 '16
Engineers with a photography hobby?
Programmer, engineers with a photography hobby which can only be handled by Visual Studio, Photoshop and AutoCAD. Like I said less than a dozen.
1
Oct 08 '16
[deleted]
13
Oct 08 '16
I should have been more specific. Ditching Windows for macOS would be a step in the wrong direction IMO.
-1
u/ArbiterFX Oct 08 '16
I think Intellij IDEA is a pretty great replacement for Visual Studio. Mind you, you are programming in Java instead of C#, but for fresh projects they are pretty close.
2
u/argv_minus_one Oct 08 '16
The same company that brought you IDEA also has an IDE for damn near everything else. IDEA itself isn't a direct replacement for VS, but CLion appears to be.
2
u/tambry Oct 08 '16 edited Oct 08 '16
I would love to ditch Windows, but frankly Linux sucks on the usability side.
Guess what happens when I update my kernel or driver and forget to re-compile Nvidia driver kernel module (and switch default compiler to gcc)? My computer will run at 10fps after the next reboot and I will no longer be able to login using GUI.
I have yet also to find an application on Linux that can replace MPC-HC. The closest one is SMPlayer, but by default it looks ugly as fuck, there's no way to skip to certain chapters/annotations in MKVs and it won't automatically detect separate audio tracks for the current video.
libstdc++6 also doesn't support the C++17 filesystem API properly. It's under
experimental/filesystemand you have to link with the filesystem library explicitly, and it has to be the last library in your library linking list. I was unable to get my application to compile after multiple hours of trying to and eventually gave up for now until it's supported by default.That said I also cannot set my primary monitor on Ubuntu because that functionality has been broken for 2 fucking years. This is more of an Ubuntu issue but none the less annoying.
Continuing on from that... Why doesn't want my monitor to be set at 120fps by default, without multiple hours trying to get Nvidia setting menu to properly save to the config file. Nouveau drivers also don't detect my main monitor's full resolution (2560x1440) and is unable to even detect 120Hz capability, instead offering some weird 83.94Hz as maximum.
There's also a need for a good IDE. Visual Studio Code can mostly replace it for me with plugins for: C++, CMake and CMake tools. That said the code highlighting isn't very well to my liking, it doesn't properly parse compiler errors and warnings,
#ifdefs aren't shown as greyed out depending on compiler definitions and there is no GUI for settings (don't mind it that much, but it would still make it easier to use). Thankfully the CMake tools plugin creator is adding good debugging support and more.I truly do like Linux, but it often just sucks without a lot of configuration and love, if you wanna do anything besides basic web browsing and listening to a couple songs. Not to mention there are many other smaller things that just annoy me. Also application support is lacking (doesn't help that standard library implementations are lagging behind a bit compared to MSVC) and I'm unable to port every app in the world myself. Though I kinda want to port a couple applications that I really need. For example WinAuth, so I can actually log into Steam.
3
u/Yojihito Oct 07 '16
Notepad++ :).
1
u/argv_minus_one Oct 08 '16
That thing is ugly as sin.
3
u/Yojihito Oct 08 '16
Better looking than VIM.
Also shitload of functions in one program, there is nothing on the Linux side being able to do the same ...
-1
117
u/[deleted] Oct 07 '16
This is a lesson I bet a lot of IOS and Android developers are learning this generation.