Thanks, but with "probably" I sense that I'm about to get into what I call "mud wrestling" or hours or days of just throwing wild guesses against a wall to see if any appear to stick. I've only got 365 days a year, and I've given away far too many of them to such mud wrestling. GOD knows I do NOT want to do more of that.
For physical things, say, an alarm clock that won't quit making a noise, often can use a big hammer or an axe to solve the problem. Too often in mud wrestling with sick-o software, I wanted such a hammer or axe.
The EFF OP and this thread have me literally just TERRIFIED that my work with Windows will have me spending a huge fraction of my time that I do NOT have mud wrestling with some version of Windows. Again, GOD knows well I do NOT want mud wrestling.
To Microsoft: I am trying, desperately trying, 12 hours a day, 7 days a week, to the limits of strength of my body, to get my software written for my Web site startup. For my software, I have 80,000 lines of typing for the real-time parts and another 20,000 for the off-line parts. I want, desperately NEED, to do the rest of the work of my startup. NO WAY do I have in addition the time, money, strength, and energy to fight Microsoft software for no good reason. I want NO updates, NO changes, without my well informed, explicit permission. I want NO data sent from my computer elsewhere without my well informed, explicit permission.
Cortana or whatever it is called? I wouldn't hit a hog in the butt with all the copies of Cortana on the planet. To me the work and objectives of Cortana are insulting, outrageous, patronizing, demeaning, intrusive, and worse. I don't want it.
What do I want from Microsoft? (1) Fix the outrageous security problems Microsoft has been struggling with back at least to XP. (2) Do much better technical writing in technical documentation of Microsoft software.
Then I want to finish my startup with no more attention to anything from Microsoft.
Okay, and when my Web site software, with several special back end servers, is all working well, what platform do I use to keep, say, an 8 core AMD processor at 4.0 GHz busy?
On Windows, I'm aiming at Windows Server (WS). My initial usage of WS will be just dirt simple. As I get revenue, for more I will pick up a phone, call an expert, maybe you, pay for an hour to walk me through the most recent issue, take notes, and then move on until the next issue.
For Windows, I have used the .NET Framework, Visual Basic .NET, ASP.NET, ADO.NET, a little of platform invoke to call some C code, etc. and, of course, Microsoft's Internet Information Server (IIS) to sit between my Web pages and the users. I wish the .NET documentation had better technical writing, but otherwise I'm from happy enough to thrilled with .NET. If I am to use .NET heavily, then I sense that to minimize mud wrestling with weak documentation and too many bugs (e.g., from trying to get .NET to run well on iOS or Linux) I should stay on Windows.
Maybe implicit in your suggestion is that I would deploy for production on some Linux system? Okay, which one? And how many loose ends, third party, open source, do it yourself issues would I encounter?
Roughly I get the impression that for high end production use of Linux, I would be nearly rolling my own operating system -- this could be wrong. I'm eager to have good information on any operating system I use, but really I want to draw a line at the operating system, compilers, etc. and not cross that line.
At this point, I about have to go ahead with Windows. Maybe I'll get some books Windows Server 101 for Dummies or some such.
There are lots of Linux distributions. For general purpose server work, something big and well-supported like Debian would be a sensible starting point. You can install a relatively bare bones system to start with, and then use Debian's package manager to install and keep up-to-date most other software you're likely to need without having to build anything manually yourself.
You have several decent web servers available. Apache is the 800lb gorilla, huge but does just about everything and very thoroughly documented. There are some good alternatives like Nginx and Lighttpd as well.
There are also plenty of tools that you can add to do things like load balancing and caching if you need them.
You have several decent database servers available. Postgres is a solid choice for most things if you want a traditional relational database. Again, there are plausible alternatives such as MariaDB if your needs are slightly different. The main "NoSQL" databases also tend to run on Linux if that's what you're looking for.
Almost every major programming language has tools available to run back end code in that language on a Linux system.
Basically, the only thing you give up by moving to Linux on the back end is the Microsoft-specific technologies like IIS, SQL Server, .Net and C#. (There have even been some efforts to get .Net and C# supported usefully on non-Windows platforms, but I have no experience with those so won't comment further here.)
There is obviously a learning curve to configure these things if you haven't used Linux before, so I wouldn't necessarily recommend jumping ship if you're already set up on Windows servers and comfortable administering them. But if you do ever decide to switch, there are plenty of tutorials and HOWTO guides for setting up things like web servers and databases on Linux as well, and it's the kind of thing where you could probably get up to speed on the basics within a week or two of homework and experimentation.
Okay, if my startup becomes a big thing, then maybe I'll have the servers all on some version of Linux. For the conversion, if I could consider doing it now, then it would be easy enough for a team of a dozen if my company gets to 100+ people.
As it is, except for nonsense interruptions not due to Windows or Microsoft but would be much the same for Linux, I am a few weeks of good work from going live. I shouldn't jump ship now.
But, your post is a keeper. Thanks.
Without writing a long reply - I sympathize with where you are coming from. I spent 5 years as a .NET developer between admin jobs, and the apparently all-encompassing, answer-for-everything nature of the Microsoft stack was attractive. If we could have stayed inside the lines of what Microsoft wanted to provide at the time, it would have been pleasant.
One of the advantages of switching to an Open Source platform was being able to access a much wider range of options for things, including hosting. One of these is the full-service Heroku platform - there are Web developers that only deploy to Heroku, and never set up servers.
So, in this tread I mentioned that I wanted to select when to have updates and didn't want automatic updates and that because of my concern that at least in principle updates could break existing development tools or running production code.
So, if I'm not ready to take the time, money, and effort to respond to such breakage, then I want to delay updates until I am.
In particular for my development and production systems, an automatic update that breaks crucial tools or working code could be a disaster for my startup.
Okay, now we have a current example of where a Microsoft Windows 10 update broke old code that was working.
So, the HN link is at
https://news.ycombinator.com/item?id=12319661
the story is at
https://github.com/abrenaut/posio
and the title of the story is
"Show HN: A Multiplayer Geography Game Using WebSockets (github.com)"
One of my concerns is a standard, old one: On a system used for development or production, don't change any of the tools until are ready to accept the extra work of fixing any new problems the changes cause.
So, just delay changes to fit my work schedule. E.g., I don't want some change, intended to be good, break something in my tools or my production software. Such things have been known to happen; I haven't seen such in Windows, but at one point I was around some high end production systems where one hour of outage in a year meant that the CIO lost his bonus and two hours, his job. No joke. Walk around the raised floor? Not a chance! They were uptight. A change or update? Fine: Run it on the side for no less than six months. Well, the fundamentals of that situation have not changed.
Really, soon into production, I will want a test system on the side, put any changes on that system first, run it with the best test workload I can, and after some weeks usually implement the changes on the production systems.
On Windows, I've gotten good at using the old NTBACKUP to backup a copy of a boot partition and, later restore it. I have several such backups for my current, main boot partition.
When I get closer to production, if some automatic updates were applied to a production boot partition, I might save the partition but I definitely would restore back to the version before the updates.
My main interest is not as a consumer user but as a developer of a startup that could become serious, maybe an average of an hour a week of 75% of the people with access to the Internet -- IMHO my software has by a wide margin the best solution for a problem serious for nearly every user of the Internet. That's my main interest.
There is probably a registry value you can change to do so though.