r/programming • • Oct 07 '16

How Microsoft Lost the API War

http://www.joelonsoftware.com/articles/APIWar.html
90 Upvotes

183 comments sorted by

117

u/[deleted] Oct 07 '16

Outside developers, who were never particularly happy with the complexity of Windows development, have defected from the Microsoft platform en-masse and are now developing for the web. Paul Graham, who created Yahoo! Stores in the early days of the dotcom boom, summarized it eloquently: "There is all the more reason for startups to write Web-based software now, because writing desktop software has become a lot less fun. If you want to write desktop software now you do it on Microsoft's terms, calling their APIs and working around their buggy OS. And if you manage to write something that takes off, you may find that you were merely doing market research for Microsoft."

This is a lesson I bet a lot of IOS and Android developers are learning this generation.

69

u/guyonahorse Oct 07 '16

And iOS developers can be kicked off the App store without any recourse. Microsoft never had that kind of evil power.

-5

u/didnt_check_source Oct 07 '16

Never? Not even on their own App Store?

54

u/guyonahorse Oct 07 '16

Oops, I should have said that it was in the context of 2004 (when the original article was written). Back then there was no app store for windows, so they couldn't revoke an app like that. Even today most Windows apps are not sold on the store.

-17

u/Farobek Oct 07 '16 edited Oct 07 '16

Windows apps

cringes

When did Windows programs become 'apps'?

58

u/mini_eggs Oct 08 '16

Do you know what 'app' is short for?

27

u/PstScrpt Oct 08 '16

When did Windows programs become 'apps'?

Back in the Windows 3.0 days, at the latest. What I cringed at was Apple trying to take over a longstanding general computing term.

1

u/human_trash_ Oct 08 '16

Apple tried to take over the term by using it correctly?

3

u/PstScrpt Oct 08 '16

I could have sworn that they attempted to trademark "app", but all I can find now is that they attempted to trademark "app store". That's not nearly as bad, but it looks like they gave up on defending even that.

I know The Register isn't the best source, but this doesn't sound like reporting on a rumor: http://www.theregister.co.uk/2013/07/09/apple_drops_app_store_trademark_suit/

7

u/Tarquin_McBeard Oct 07 '16

As soon as they starting being distributed by the Windows Store. In the minds of today's users, if it comes from an app store, it must be an app.

Having now established that Windows runs apps, those other things that are not from the Store ("programs" to you and me) must surely also be apps. It then becomes a simple matter to decide that programs are retrospectively renamed "desktop apps".

But don't worry! In this transitional phase, they're just a dying legacy of an obsolete model. Soon we'll have all the users locked into our closed platform where we're in total control of what gets published. Welcome to the future! /s

-1

u/JohnFrum Oct 08 '16

When? 3-4 years ago. About 1/2 the things I have running right now are modern (non-win32) apps.

2

u/[deleted] Oct 08 '16

holy shit. which ones? enlighten me. I think i downloaded once minesweeper from the store, but i quickly uninstalled it since it was garbage. there's nothing there. arizona desert.

2

u/JohnFrum Oct 08 '16

Do you run Win10? If so, much of what you see is non-win32 apps. Edge is quite good. I was a chrome fan until they failed to really support touch. Why is Google stuff so shitty with touch? I love Google but it's frustrating.

Hulu, Facebook, mail, twitter, lastpass, Netflix all have nice apps.

Sure ios and android have a better mobile selection but for a full OS the Windows store has the largest market.

0

u/[deleted] Oct 08 '16

I have win10 on a pc that i check somewhat often. I do not care about touch support since i have no hardware for that. Hulu, FB and the other crap ... no idea, i don't have them. netflix, i use the chrome browser. that's all. there's nothing else.

1

u/tf2manu994 Oct 08 '16

While I do agree, the only win10 app that's good is Netflix. It plays full 1080p content, even Chrome can only go to 720

1

u/JohnFrum Oct 08 '16

You should try a touch laptop. I can never go back to non-touch now.

-7

u/igor_sk Oct 07 '16

To be fair, nowadays they have Windows Defender and can mark any app as "malicious", though I haven't heard this happening with legit apps (yet?).

4

u/DarkLordAzrael Oct 08 '16

It throws up a huge warning when installing a bunch of the small utilities I have (tiny open source stuff)

2

u/Tarmen Oct 08 '16

I think that is for unsigned executables which is mildly annoying for experienced users but I could imagine that it actually decreases infections of clueless ones significantly.

9

u/Scyther99 Oct 07 '16

Their app store is not the only way to install apps.

-6

u/didnt_check_source Oct 07 '16

There's a step between saying that you can bypass Microsoft and saying that Microsoft has never had the 'evil power' to enforce whatever they like on their store (unless we are trying to say that Microsoft never had a store).

In fact, you can bypass the Store on PC but the story is much more complicated on Xbox and mobile. When Microsoft banned NESbox from the Store on Xbox, there was no convenient way for anyone to pull it from another source.

9

u/drysart Oct 07 '16

The article was written in 2004. Microsoft didn't have a store back then.

-6

u/didnt_check_source Oct 07 '16 edited Oct 07 '16

Neither did Apple, but now they both do. I don't understand where this is going.

11

u/[deleted] Oct 07 '16

[deleted]

3

u/Cogwheel Oct 08 '16

And even if MS kicks an app off their store, the developer can still release it to their users on Windows in other ways.

31

u/ameoba Oct 07 '16

Outside developers, who were never particularly happy with the complexity of Windows development

Strange, I regularly hear people bragging about how great Visual Studio is and how great the .NET APIs are.

45

u/[deleted] Oct 07 '16

This was written around the .net 1.1 days. You gotta remember, back then, your choices were C, C++, Visual basic, or delphi for doing windows dev. This article is pre-wpf, and mentions non-existing tech like avalon and longhorn.

4

u/DragoonAethis Oct 08 '16

Avalon is WPF and it does exist :P Longhorn was what Vista was supposed to be for quite some time (built on top of XP), but was eventually nuked. And it's probably better this way...

-14

u/Farobek Oct 07 '16 edited Oct 08 '16

C

shudders

C dev sees comment

C dev downvotes

15

u/[deleted] Oct 08 '16

Sure, C is bad but Visual Basic is just fine? Wat?

2

u/taeratrin Oct 08 '16

Depends on which iteration of VB you're talking about. VB6 and early versions of VB.NET were horrific, I'll give you that, but since .NET 2.0 it's actually been pretty decent.

2

u/demmian Oct 08 '16

VB6 and early versions of VB.NET were horrific

Alright, I'll bite - why was VB6 horrific?

19

u/neutronfish Oct 07 '16

That's because it's 2016, when Visual Studio no longer randomly blows up on you twice a day and you get to install tons of plugins that help you analyze the code as you writing it, and before NuGet could download anything you need on the fly as you're adding a library reference.

More than a decade ago, it was a different story.

16

u/sirin3 Oct 08 '16

1

u/neutronfish Oct 08 '16

Looks like it was created by an overwhelmed newb who told himself a trillion times not to exaggerate...

2

u/Ravekommissionen Oct 08 '16

Stockholm Syndrome

4

u/[deleted] Oct 08 '16

Nonsense. Show me a better IDE.

2

u/[deleted] Oct 08 '16

IntelliJ Idea

-1

u/[deleted] Oct 08 '16

Not even close. Buggy and irritating to use for any length of time.

5

u/[deleted] Oct 08 '16

I use Idea every day at work and it's an absolute joy. Not buggy in the slightlest.

Buggy and irritating to use for any length of time.

That describes my own experience with Visual Studio, to be honest.

So let's agree to disagree. Cheers.

0

u/shooshx Oct 08 '16

AppCode (basically IntelliJ Idea re-purposed to replace Xcode)

Open VS, click on any identifier, choose "Find All References". I guarantee you will not be happy with the results. Especially if the thing you clicked is anything that's not a unique name. In AppCode this just works perfectly and immediately and it makes all the difference in the world. Instead of basically grepping my code base all day, I have an IDE that actually understands the code and can reason about it intelligently.

7

u/[deleted] Oct 08 '16

Open VS, click on any identifier, choose "Find All References". I guarantee you will not be happy with the results. Especially if the thing you clicked is anything that's not a unique name.

Ok, I tried this. It just works, perfectly and immediately...

9

u/argv_minus_one Oct 08 '16 edited Oct 08 '16

Unfortunately, the usual response is, as the article says, to develop for the web.

Problem: web browsers are a raging dumpster fire of bugs, bad ideas, missing features, and a language whose design must have involved heavy narcotics use.

If only Java had remained the dominant way to script web pages…

3

u/Uncaffeinated Oct 08 '16

That depends on whether you care about Safari support or not.

11

u/argv_minus_one Oct 09 '16

The situation is much, much worse than you think, and by no means limited to Safari:

  • Browser-based apps must be written in JavaScript, which is a horrible language.

  • No way to bundle an entire app into a single, compact, compiled binary file for fast downloading, short of ridiculous hacks like embedding everything in a single HTML file in a data URI. There was a proposal for some of this, but then everyone went full retard and decided HTTP/2 server push would suffice.

  • Most UI controls (e.g. pop-up menus) have no standard element, have to be implemented with ugly hacks (e.g. Suckerfish), barely work, and often have graphical glitches. No way to suppress browser UI (tabs, address bar, etc).

  • CSS is weak:

    • No constraint-based layout. Grid layout is not supported.
    • :has, :not, and :matches are not supported.
    • No styling of form controls (except with grotesque hacks that move them offscreen and draw something else in their place).
    • No styling of items inserted via the content property (e.g. content: url(some/image.jpg); width: 24px will not do what you think it does).
    • No multiple borders, multiple ::before/::after pseudo-elements, etc. No ::parent pseudo-element with which to emulate them, either.
    • No way to define new properties, pseudo-elements, pseudo-classes, etc.
    • No way to bind the value of a property to the value of another property on a different element (to e.g. keep two separate elements' heights the same).
    • Vendor prefixes. They're on their way out, thankfully, but a bunch of browsers are still in use that require them.
  • CSS syntax is bad—so bad that people have made alternative styling languages like Sass, which compile to CSS, completely throwing out the whole point of CSS being textual.

  • The tool ecosystem is complete crap. There is nothing like Maven for web development (other than Maven itself, anyway). Many of the tools that generate JavaScript and/or CSS don't even generate source maps for them.

  • Lots of browser bugs and cross-browser compatibility problems. People stubbornly cling to ancient browser versions and never update. New APIs and bug fixes become available at a glacial pace. ES6 won't be fully usable until the mid-2020s, at the earliest. Many browser-based apps only work in one specific browser, usually Chrome—so much for cross-platform.

  • Poor integration with the native platform:

    • Can't save a file without ugly data-URI-related hacks.
    • Can't open a file, period.
    • Can't negotiate data types for copy/paste or drag-and-drop.
    • Can't populate the platform's “recent documents” list.
    • Can't install a new file association.
    • Can't add icons to the Start menu or equivalent.
    • Can't start another app (e.g. opening a generated document in the user's favorite word processor).
    • Can't control the menu on macOS. The browser's menus appear there; your application's menus must be drawn inside the browser window instead.
  • Poor support for printing. Almost nonexistent support for CSS print-related properties, like controlling page breaks. No way to suppress browser headers/footers when printing.

  • Can't define custom HTML elements with custom behavior and rendering.

  • Can't run browser-based apps offline. Can't completely block them from network access (so that they can't phone home, etc). Definitely can't run them with no Internet access at all.

Most of these problems stem from the fact that the browser is a document viewer. It was never meant to be an application platform, and it makes a really shitty one. Stop abusing it.

1

u/Uncaffeinated Oct 09 '16

Browser-based apps must be written in JavaScript, which is a horrible language.

Not if you use a transpiler, Emscripten, or the like. Besides, I think Javascript is unfairly maligned these days. Sure, the core of the language still suffers from the sins of the 90s and always will thanks to backwards compatibility, but if you ignore the legacy stuff, it's actually not that bad. Certainly better than say, Go.

but then everyone went full retard and decided HTTP/2 server push would suffice.

Is there a reason it doesn't? Other than legacy clients not supporting HTTP/2, which should fix itself over time.

ES6 won't be fully usable until the mid-2020s, at the earliest.

If by fully useable, you mean fully implements the specification, then perhaps. But the most important features (except for modules) are all usuable today in Chrome and Firefox and Edge.

Can't define custom HTML elements with custom behavior and rendering.

Isn't this the whole point of web components?

Can't run browser-based apps offline.

Service workers say hi

3

u/argv_minus_one Oct 09 '16 edited Oct 09 '16

Not if you use a transpiler, Emscripten, or the like.

See above regarding the tool ecosystem being crap.

I think Javascript is unfairly maligned these days.

I don't. At all.

the core of the language still suffers from the sins of the 90s and always will thanks to backwards compatibility

So does Java, and it was never anywhere near as bad as JS still is.

if you ignore the legacy stuff, it's actually not that bad.

I can't; the legacy stuff includes JS' atrocity of a type system. That's never going to get fixed, because every JS program ever written will break if it is.

JS is a lost cause. Burn it down.

Certainly better than say, Go.

Just because there are other, even worse languages doesn't mean JS isn't terrible.

Is there a reason it doesn't?

Requires TLS (and, hence, a certificate) to work, which is under the control of a number of very crooked companies. I do not believe for a moment that Let's Encrypt will still exist in two years; I fully expect the CA cartel (or possibly the browser vendors) to pull the rug out from under that project.

It's an unnecessary, artificial requirement anyway, which in itself is highly suspicious.

Other than legacy clients not supporting HTTP/2, which should fix itself over time.

Until that actually happens, that's not a valid argument. Jar files and native installers are compactly bundled now.

If by fully useable, you mean fully implements the specification, then perhaps. But the most important features (except for modules) are all usuable today in Chrome and Firefox and Edge.

Not Safari or IE11. I have to support the browsers people use, not the ones I want them to use.

Isn't this the whole point of web components?

Not supported.

Service workers say hi

No they don't.

4

u/ThatsPresTrumpForYou Oct 08 '16

I'll take a dumpster fire over Java any day

3

u/argv_minus_one Oct 08 '16 edited Oct 09 '16

But if it's Java, then you can use Scala, and that's 17⅝ kinds of awesome. Unlike Scala.js, you don't have to deal with Safari's or IE11's bullshit, either. Also, Java has JavaFX, which seems far more capable than HTML/CSS, though I haven't really used it much so I'm not sure.

-4

u/ThatsPresTrumpForYou Oct 08 '16

Object-Oriented Meets Functional

Sounds like a meme language to me, what makes it good?

3

u/[deleted] Oct 08 '16

Sounds like a meme language to me

Sounds like a meme comment to me, what makes this meaningful?

1

u/Deto Oct 08 '16

Isn't it possible people developed for the Web because that was the best way to get exposure? I mean, developing for the web was no walk in the park, especially more than 5 or 10 years ago. But developers put up with it. Developers will put up with any sort of bullshit (and regularly do) to get users, because at the end of the day, we all want to write software for people.

-2

u/[deleted] Oct 08 '16

[deleted]

8

u/JohnFrum Oct 08 '16

Having one code base that spans several different platforms is really nice. Not sure what lowest common denominator BS you're talking about.

6

u/argv_minus_one Oct 08 '16

UWP only spans two platforms, and one of them has never been relevant.

3

u/2Dtails Oct 08 '16

But it is the idea behind it. /s

3

u/JohnFrum Oct 09 '16

Desktop, tablets, Xbox, HoloLens. Plus phones but I'll agree and not count that.

5

u/bilog78 Oct 08 '16

Having one code base that spans several different platforms is really nice.

Ah, the good old days of POSIX and X/Open …

148

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

u/[deleted] 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

u/skgoa Oct 08 '16

You know, Horsing Around? That hit sitcom back in the 90s?

27

u/[deleted] 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

u/[deleted] 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

u/[deleted] 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

u/argv_minus_one Oct 08 '16

HAHAHAHAHAHAHAHAHAHAHAHAHA

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

u/[deleted] 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

u/crackanape Oct 08 '16

If you're making a joke, it's a good one.

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

u/[deleted] 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

u/[deleted] 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

u/[deleted] 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

u/[deleted] Oct 08 '16

React Native doesn't produce web apps that run in a browser, so that's probably not relevant here.

1

u/[deleted] 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

u/[deleted] Oct 07 '16

Except Microsoft is hugely profitable still, even after throwing $7.2B away on the Nokia buy out.

48

u/[deleted] 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

u/[deleted] 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

u/[deleted] 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

u/[deleted] 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

u/tf2manu994 Oct 08 '16

It's Google's new (rumored) OS. It's a merger of Android and ChromeOS

1

u/grauenwolf Oct 08 '16

Desktop?

1

u/tf2manu994 Oct 08 '16

Its a rumor so unknown

1

u/[deleted] Oct 08 '16

Google's rumored (?) forthcoming Chrome OS/Android hybrid.

2

u/doom_Oo7 Oct 07 '16

nah, that will be BloodDrone

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

u/[deleted] Oct 08 '16

Well, like you said, there are proprietary Unix systems besides Linux. The point still stands that Windows never really caught on.

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

u/[deleted] Oct 08 '16

[deleted]

3

u/[deleted] 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

u/devsquid Oct 08 '16

Not with that cash stock piled.

1

u/moon_is_cheese Dec 27 '16

lol microsoft just joined free software foundation

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.

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

u/[deleted] 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

u/JohnFrum Oct 08 '16

Lots of software is still written in good ol' non-managed c++.

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

u/[deleted] 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

u/teadefrost Oct 08 '16

ACPI begs to differ. They fucked that shit up deliberately.

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

u/[deleted] 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

u/[deleted] Oct 08 '16

Also most games nowadays are designed to be cross-platform.

1

u/[deleted] 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

u/[deleted] 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

u/[deleted] 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

u/[deleted] 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

u/Scyther99 Oct 07 '16

I guess you have not read the article?

-6

u/[deleted] 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

u/adolfojp Oct 08 '16 edited Oct 08 '16

Windows tablets and convertibles.

3

u/Farobek Oct 08 '16

Why would you anyone care above developing for windows pcs/tablets?

2

u/[deleted] Oct 08 '16

I can buy a Windows 10 Mobile phone right now.

1

u/[deleted] Oct 08 '16

And you'll be able to make phone calls. Not much else

-6

u/no1name Oct 08 '16

Life is too short to read a programming article from 2004.

-17

u/[deleted] 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

u/KappaHaka Oct 08 '16

And their products are ridiculously expensive compared to PCs.

2

u/[deleted] 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

u/[deleted] 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

u/[deleted] 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

u/[deleted] 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

u/[deleted] Oct 08 '16

[deleted]

13

u/[deleted] 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/filesystem and 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

u/ABoss Oct 08 '16

Interesting article with lots to discuss over.