Linux has been a great free operating system for open-source programmers, scientists in certain industries, supercomputers and for the most tech-savvy.  However, for the other 98-99% of people, it’s not a good operating system, despite the fact that it’s 100% free and has very low hardware requirements.

Reasons why Linux never entered the mainstream and why it likely won’t in the future:

 1) A pain to install.  The user needs to choose a distro (out of dozens), download it, download a reliable bootloader and put it on a USB.  Booting from USB is possible, but not ideal (it can often crash).  Setting Linux to dual-boot with one’s current operating system is time-consuming and (for less experienced users) could cause problems for the computer if done incorrectly.  It’s hard to sell someone on something when the initial experience is not pleasant.

 2) Dependence on the terminal.  In order to install a program from a website (or do other basic things), the terminal must be used.  This requires the user to learn a new programming language.  

 3) Lack of software.  It has a lot of basic apps for common productivity and leisure, but it’s missing a lot.  Linux is missing most industry-standard business applications and has a very limited selection of games.

 4) Lack of a profit model.  Why would most programmers have financial incentive to improve these problems of Linux for people who are too cheap to even spend a penny on an operating system?

 5) Tradition.  Is learning Linux now any harder than learning Windows/Mac was in the 90’s?  Probably not.  Is learning Spanish any harder than learning English?  However, people already know those operating systems and don’t want to learn a new one, when the one they are using is fine for their needs. 
 6) Not everyone is an enthusiast.  Some people love tinkering with technology and learning the inner guts of how it works.  For others, this is a chore.

 7) It doesn’t sell computers.  Manufacturers have made computers with Linux on them before.  They just didn’t sell very well, which doesn’t give incentive for companies to promote Linux in the future.

 7) People don’t have the time.  None of the steps required to get Linux working require much intellectual depth.  Linux enthusiasts have responded to my arguments before by saying “This specific problem is not hard to fix.  You just need to do step 1, 2 and 3”.  Sure.  But there are many little problems that arise for beginners and many little steps they need to learn.  Many people work hard at their jobs and want to just put on their computer and relax when they get home.  There are probably 100 of these little steps and people don’t feel like having to go on a message board and troubleshoot every little time they have an issue.