Let me preface this by saying I love El Capitan except that when I first updated, an old kext in my /System/Library made it where my system failed to boot after updating, and I had to manually delete it in single user mode. I'm an expert user, so this did not bother me that much; but most users (and I daresay, many Apple support staff) would never figure this out, and would say to do a clean install and then migrate the account in from a backup, at which point once again it would get hosed, etc.
This is on the Mac App Store:
There are an awful lot of bad reviews for El Capitan. Most of them center around user experiences during updates. A lot of others center around poor performance after updating.
I remember that my girlfriend's iMac once got totally hosed by an old iPhoto-related Spotlight extension. If she launched iPhoto it would make her computer have disk errors in the console—literally, you would think the HDD was failing. Nope, it was just that this bad extension was blocking IO operations somehow, making the kernel think that there were disk errors.
Personally I think a lot of people have weird old drivers and third party stuff, and OS X makes it incredibly difficult to root out and remove all this stuff. Doing a clean install doesn't really help, since if you migrate your account back over, it could put that stuff right back into your system. It could be a Spotlight extension or a Safari plug-in, who knows.
In the old days of OS 9 (aka "Classic"), there was a control panel called Extensions Manager. It let you see everything in your system, categorized by who made it, and what package it belonged to. So if Microsoft Office put a bunch of crap in your system, you could easily see it there, and disable it if you wanted to. Same for Norton Utilities, etc. Everything had plain-english names. Generally, everything was either in a Control Panels folder, or the Extensions folder, within your system.
However, now, on OS X there is a proliferation of places in your system that third-party stuff can be. There are multiple locations that system files could be, and distinguishing what is a third-party item from what is an official Apple item is nigh impossible sometimes. Most of Apple's system processes have cryptic names like "blued," "mds," "secd," etc. In the Activity Monitor there is no explanation what any of this crap is, who made it, what it is doing on your system, or why it is doing it.
Why can't Apple be bothered to name things non-cryptically using plain English, in a user-friendly way? Why can't they put a little explanation alongside stuff to let you know what it is, and why it's doing that? Why is the Console log full of alarming-sounding errors, most of which are just lazily leftover debug code that they never bothered to take out, making it impossible for the user to tell what's worth being concerned about?
I constantly see sandboxd denying launchctl mach-priv-task-port or file-read-access etc. etc. Why is sandboxd, an Apple process, sandboxing other Apple processes constantly? Is this how it's supposed to work? Really?
Why is helpd constantly unable to find help for a bunch of applications that I never even asked it for help for? I don't understand. I keep seeing errors like these:
11/16/15 8:03:45.000 PM kernel[0]: Sandbox: softwareupdated(465) deny(1) system-fsctl 682f
11/16/15 8:03:22.295 PM sandboxd[150]: ([6428]) launchctl(6428) System Policy: deny mach-priv-task-port
11/16/15 7:54:47.299 PM mdworker[6364]: code validation failed in the process of getting signing information: Error Domain=NSOSStatusErrorDomain Code=-67062 "(null)" UserInfo={SecCSArchitecture=i386}
11/16/15 6:23:43.807 PM Safari[572]: tcp_connection_tls_session_error_callback_imp 462 __tcp_connection_tls_session_callback_write_block_invoke.434 error 22
Of course, my system seems to be working fine, but for users whose systems stop working fine, going into the Console, the Activity Monitor, and the various Library folders to try to diagnose what's wrong and figure out how to fix their computer is a nightmarish task of confusion and turmoil. They enter into a world that is so poorly organized, so poorly described, so poorly documented, and so poorly labeled that it's a wonder anyone in the world knows WTF is going on in there.
The Mac has become so complicated that it would be surprising if more than 10 or 20 people at Apple fully understand how the operating system works and what role every process and Library sub-folder plays.
Furthermore, a lot of operations in OS X have increasingly been tied to the web, like Spotlight searches, and the entire system being sandboxed now makes more heavy use of background processes, virtual memory, disk operations, and CoreData databases that could get bloated and/or corrupted.
I'm sure it does not take very much at all to make someone's system run like crap if they have 4GB of RAM and are trying to run El Capitan on a machine with a mostly-full, non-optimized 5400 RPM hard drive and a laggy internet connection with lots of old third-party stuff in their machine.
The Solution
I feel in many ways El Capitan was a step in the right direction of making Yosemite better, but Apple could do a lot more. Here are the top things I think Apple should do to make OS X user friendly again, and fix these installation problems people are having.
(1) Make a System Manager that actually works, first of all.
The "Extensions" preference pane that debuted in Yosemite is garbage. It does not show all third party extensions that are installed; I know for a fact because I have many third party extensions installed and nothing shows up here.
The System Manager should show anything, whether form Apple or from a third party, that could possibly ever run with or without a user directly clicking on its icon, and that includes:
The System Manager should also show everything that is not part of the default system. Anything at all that's been added to or changed inside of the /Library, /Applications, or /private directory, or is an Application, or is a hidden unix file, should be able to be seen in the System Manager.
The System Manager should let you see plain English names and descriptions of every single thing on your system, who made it, when it came out, what the version is, whether there's a new version available or not (or if this is not known, then just say "unknown"), what the latest known OS version is that's compatible with it.
Everything should show the last time it ran, how often it runs on your system or is accessed by something running on your system, how much memory it is currently taking up in RAM and on disk, and have a general description in plain English of why it's being used and what it's for.
Everything should have a button to temporarily disable it, and another button to permanently uninstall and delete it.
Upon updating to a new major version of OS X, the installer should:
• Check the System Manager first for any versions of anything that is not already certified to work on the new OS version, and notify the user about each of them. (The current behavior of just dumping certain old items into an "Incompatible Items" folder with no explanation as to whether an update is available or not, or what installation those things were a part of, is just rude and unacceptable, IMHO, although admittedly it's better than nothing.)
• Give the user the option to temporarily disable all third party items prior to the update.
• Monitor system performance after the update, and if it is determined to be slow, or if crashing is detected, boot into a third-party-disabled mode and walk the user through a procedure of enabling third party items sequentially until the problem item is found.
• Monitor third-party processes for a period after updating to see which might be the cause of problems and make suggestions to the user based on this.
• Gather diagnostic data from participating users' systems to build a global cloud database of system configuration data to determine which items are likely culprits in system problems, which items are parts of which installation packages etc.
The System Manager should always allow the user to completely uninstall any third party application or system extension, based on any present system receipts. If multiple applications depend on the same files the system should already know this from the fact that multiple installation receipts point to a set group of files, and the system should therefore gracefully not uninstall files upon which certain other items also depend, if those other items are not being uninstalled at that time. (The current situation is that users have to depend on third-party uninstallers to get rid of things like Adobe CS or Microsoft Office, hideous bloatware packages that pollute the system with background processes and crap all over the place. Meanwhile Windows has an elegant "Add/Remove Software" control panel, and it pisses me off that Mac doesn't have an equivalent to this extremely user-friendly feature!!!)
(2) Make all Apple software not pollute the Console with messages that are never going to be relevant to the user.
The Console should not be polluted with tons of spam from Sandboxd, mds, etc. Each write to a log entry is a disk operation that takes time. Each irrelevant entry here obscures any relevant information that users should actually want to see if something is going wrong with their machine. Stop being lazy with your debug spam!
(3) Give plain-English names and descriptions to everything in Activity Monitor.
In keeping with the above strategy for System Manager, the Activity Monitor should display a useful icon and descriptive, plain-English name for each process (in addition to the unix process short-name; I know those aren't going away). There should also be a plain-English description available for each process—a few paragraphs written as if you were talking to a ninth-grader who knows a little bit about computers.
(4) Never again break hardware drivers.
I get it: you had to move to PowerPC chips. You had to move to USB. Then you had to move to Intel. Then you had to move to 64-bit. Then you had to move to SIP with sandboxing and signed kexts. BUT APPLE. ENOUGH IS FREAKING ENOUGH. STOP BREAKING OUR HARDWARE DRIVERS!!! There is nothing more annoying than updating to a new OS version or buying a new Mac only to discover that your prized:
• audio interface
• graphics tablet
• scanner
• camera
• joystick
• monitor
... or whatever... won't work anymore or won't work properly anymore because of yet another change to the OS or new port that breaks compatibility with the older drivers.
I get it, since the '90s, we've been going through this rapid evolution of the technology and the platform. This stuff was bound to change. But now? Now Apple, you have enough money to not keep breaking our stuff. Because guess what? Not all of us have enough money to keep buying your phones, tablets, TV dongle, and watch every couple years... AND rebuy all our third-party hardware on top of that.
Please return the Mac to being the computer where third party hardware "just works."
When my Mac Pro was on Snow Leopard, my two Black-Lion-modded Digi 002 Racks worked perfectly. I was able to record two albums with this setup, and they sound great. I have no desire to upgrade Pro Tools or my hardware. However none of it works anymore... why? Because I made the mistake of upgrading my computer. Sigh. I don't even have this machine connected to the internet... I don't care about kext security. But the last compatible drivers, which I barely got to run under Mountain Lion, weren't compiled with kext signing. So they will straight up not work on 10.11.
I get it, that we can't go back in time, and there are some things we'll have to just let go of, at this point. However... from here on out, for the love of God, there is no reason that every Mac that comes out in the next 10 years (at least) should not be backwards compatible to all current hardware peripherals without needing new driver updates.
Frankly, I don't understand why you can't just find a way to run the old drivers inside of an emulation or virtualization environment. For that matter, I know if you wanted to, you could release an OS X version that was (quite literally) backwards compatible with every Mac ever made through clever use of emulation and virtualization technologies. You could have it able to run every piece of old software and talk to every piece of old Mac hardware, if you wanted to; you could issue made-to-order 3D-printed adapters and open-source certain old hardware designs for the community to make this stuff.
You seem to want to make an impact on the recycling of old computer stuff. Protip: don't make things obsolete.
OK there. /rant off
This is on the Mac App Store:

There are an awful lot of bad reviews for El Capitan. Most of them center around user experiences during updates. A lot of others center around poor performance after updating.
I remember that my girlfriend's iMac once got totally hosed by an old iPhoto-related Spotlight extension. If she launched iPhoto it would make her computer have disk errors in the console—literally, you would think the HDD was failing. Nope, it was just that this bad extension was blocking IO operations somehow, making the kernel think that there were disk errors.
Personally I think a lot of people have weird old drivers and third party stuff, and OS X makes it incredibly difficult to root out and remove all this stuff. Doing a clean install doesn't really help, since if you migrate your account back over, it could put that stuff right back into your system. It could be a Spotlight extension or a Safari plug-in, who knows.
In the old days of OS 9 (aka "Classic"), there was a control panel called Extensions Manager. It let you see everything in your system, categorized by who made it, and what package it belonged to. So if Microsoft Office put a bunch of crap in your system, you could easily see it there, and disable it if you wanted to. Same for Norton Utilities, etc. Everything had plain-english names. Generally, everything was either in a Control Panels folder, or the Extensions folder, within your system.
However, now, on OS X there is a proliferation of places in your system that third-party stuff can be. There are multiple locations that system files could be, and distinguishing what is a third-party item from what is an official Apple item is nigh impossible sometimes. Most of Apple's system processes have cryptic names like "blued," "mds," "secd," etc. In the Activity Monitor there is no explanation what any of this crap is, who made it, what it is doing on your system, or why it is doing it.
Why can't Apple be bothered to name things non-cryptically using plain English, in a user-friendly way? Why can't they put a little explanation alongside stuff to let you know what it is, and why it's doing that? Why is the Console log full of alarming-sounding errors, most of which are just lazily leftover debug code that they never bothered to take out, making it impossible for the user to tell what's worth being concerned about?
I constantly see sandboxd denying launchctl mach-priv-task-port or file-read-access etc. etc. Why is sandboxd, an Apple process, sandboxing other Apple processes constantly? Is this how it's supposed to work? Really?
Why is helpd constantly unable to find help for a bunch of applications that I never even asked it for help for? I don't understand. I keep seeing errors like these:
11/16/15 8:03:45.000 PM kernel[0]: Sandbox: softwareupdated(465) deny(1) system-fsctl 682f
11/16/15 8:03:22.295 PM sandboxd[150]: ([6428]) launchctl(6428) System Policy: deny mach-priv-task-port
11/16/15 7:54:47.299 PM mdworker[6364]: code validation failed in the process of getting signing information: Error Domain=NSOSStatusErrorDomain Code=-67062 "(null)" UserInfo={SecCSArchitecture=i386}
11/16/15 6:23:43.807 PM Safari[572]: tcp_connection_tls_session_error_callback_imp 462 __tcp_connection_tls_session_callback_write_block_invoke.434 error 22
Of course, my system seems to be working fine, but for users whose systems stop working fine, going into the Console, the Activity Monitor, and the various Library folders to try to diagnose what's wrong and figure out how to fix their computer is a nightmarish task of confusion and turmoil. They enter into a world that is so poorly organized, so poorly described, so poorly documented, and so poorly labeled that it's a wonder anyone in the world knows WTF is going on in there.
The Mac has become so complicated that it would be surprising if more than 10 or 20 people at Apple fully understand how the operating system works and what role every process and Library sub-folder plays.
Furthermore, a lot of operations in OS X have increasingly been tied to the web, like Spotlight searches, and the entire system being sandboxed now makes more heavy use of background processes, virtual memory, disk operations, and CoreData databases that could get bloated and/or corrupted.
I'm sure it does not take very much at all to make someone's system run like crap if they have 4GB of RAM and are trying to run El Capitan on a machine with a mostly-full, non-optimized 5400 RPM hard drive and a laggy internet connection with lots of old third-party stuff in their machine.
The Solution
I feel in many ways El Capitan was a step in the right direction of making Yosemite better, but Apple could do a lot more. Here are the top things I think Apple should do to make OS X user friendly again, and fix these installation problems people are having.
(1) Make a System Manager that actually works, first of all.
The "Extensions" preference pane that debuted in Yosemite is garbage. It does not show all third party extensions that are installed; I know for a fact because I have many third party extensions installed and nothing shows up here.
The System Manager should show anything, whether form Apple or from a third party, that could possibly ever run with or without a user directly clicking on its icon, and that includes:
- Applications
- Audio drivers
- Audio plugins
- Input Methods
- Privileged Helper Tools
- CoreMediaIO Plugins
- ColorSync profiles/extensions
- Filesystems
- Frameworks & dylibs
- Fonts
- Image Units
- Image Capture tasks, tools, and TWAIN data sources
- Kernel extensions
- LaunchAgents
- LaunchDaemons
- MIDI Drivers
- MIDI Plugins
- PreferencePanes
- Printer drivers
- Scripting Additions
- Spotlight Extensions
- Startup Items
- Web plugins
- Widgets
- everything in /private/bin
- everything in /private/sbin
- everything in /usr/bin
- everything in /usr/sbin
- everything in /usr/lib
- everything in /usr/local/bin
- everything in /usr/local/sbin
- everything in /usr/local/lib
- everything in any other unix directory that could possibly execute or affect the system in some way
The System Manager should also show everything that is not part of the default system. Anything at all that's been added to or changed inside of the /Library, /Applications, or /private directory, or is an Application, or is a hidden unix file, should be able to be seen in the System Manager.
The System Manager should let you see plain English names and descriptions of every single thing on your system, who made it, when it came out, what the version is, whether there's a new version available or not (or if this is not known, then just say "unknown"), what the latest known OS version is that's compatible with it.
Everything should show the last time it ran, how often it runs on your system or is accessed by something running on your system, how much memory it is currently taking up in RAM and on disk, and have a general description in plain English of why it's being used and what it's for.
Everything should have a button to temporarily disable it, and another button to permanently uninstall and delete it.
Upon updating to a new major version of OS X, the installer should:
• Check the System Manager first for any versions of anything that is not already certified to work on the new OS version, and notify the user about each of them. (The current behavior of just dumping certain old items into an "Incompatible Items" folder with no explanation as to whether an update is available or not, or what installation those things were a part of, is just rude and unacceptable, IMHO, although admittedly it's better than nothing.)
• Give the user the option to temporarily disable all third party items prior to the update.
• Monitor system performance after the update, and if it is determined to be slow, or if crashing is detected, boot into a third-party-disabled mode and walk the user through a procedure of enabling third party items sequentially until the problem item is found.
• Monitor third-party processes for a period after updating to see which might be the cause of problems and make suggestions to the user based on this.
• Gather diagnostic data from participating users' systems to build a global cloud database of system configuration data to determine which items are likely culprits in system problems, which items are parts of which installation packages etc.
The System Manager should always allow the user to completely uninstall any third party application or system extension, based on any present system receipts. If multiple applications depend on the same files the system should already know this from the fact that multiple installation receipts point to a set group of files, and the system should therefore gracefully not uninstall files upon which certain other items also depend, if those other items are not being uninstalled at that time. (The current situation is that users have to depend on third-party uninstallers to get rid of things like Adobe CS or Microsoft Office, hideous bloatware packages that pollute the system with background processes and crap all over the place. Meanwhile Windows has an elegant "Add/Remove Software" control panel, and it pisses me off that Mac doesn't have an equivalent to this extremely user-friendly feature!!!)
(2) Make all Apple software not pollute the Console with messages that are never going to be relevant to the user.
The Console should not be polluted with tons of spam from Sandboxd, mds, etc. Each write to a log entry is a disk operation that takes time. Each irrelevant entry here obscures any relevant information that users should actually want to see if something is going wrong with their machine. Stop being lazy with your debug spam!
(3) Give plain-English names and descriptions to everything in Activity Monitor.
In keeping with the above strategy for System Manager, the Activity Monitor should display a useful icon and descriptive, plain-English name for each process (in addition to the unix process short-name; I know those aren't going away). There should also be a plain-English description available for each process—a few paragraphs written as if you were talking to a ninth-grader who knows a little bit about computers.
(4) Never again break hardware drivers.
I get it: you had to move to PowerPC chips. You had to move to USB. Then you had to move to Intel. Then you had to move to 64-bit. Then you had to move to SIP with sandboxing and signed kexts. BUT APPLE. ENOUGH IS FREAKING ENOUGH. STOP BREAKING OUR HARDWARE DRIVERS!!! There is nothing more annoying than updating to a new OS version or buying a new Mac only to discover that your prized:
• audio interface
• graphics tablet
• scanner
• camera
• joystick
• monitor
... or whatever... won't work anymore or won't work properly anymore because of yet another change to the OS or new port that breaks compatibility with the older drivers.
I get it, since the '90s, we've been going through this rapid evolution of the technology and the platform. This stuff was bound to change. But now? Now Apple, you have enough money to not keep breaking our stuff. Because guess what? Not all of us have enough money to keep buying your phones, tablets, TV dongle, and watch every couple years... AND rebuy all our third-party hardware on top of that.
Please return the Mac to being the computer where third party hardware "just works."
When my Mac Pro was on Snow Leopard, my two Black-Lion-modded Digi 002 Racks worked perfectly. I was able to record two albums with this setup, and they sound great. I have no desire to upgrade Pro Tools or my hardware. However none of it works anymore... why? Because I made the mistake of upgrading my computer. Sigh. I don't even have this machine connected to the internet... I don't care about kext security. But the last compatible drivers, which I barely got to run under Mountain Lion, weren't compiled with kext signing. So they will straight up not work on 10.11.
I get it, that we can't go back in time, and there are some things we'll have to just let go of, at this point. However... from here on out, for the love of God, there is no reason that every Mac that comes out in the next 10 years (at least) should not be backwards compatible to all current hardware peripherals without needing new driver updates.
Frankly, I don't understand why you can't just find a way to run the old drivers inside of an emulation or virtualization environment. For that matter, I know if you wanted to, you could release an OS X version that was (quite literally) backwards compatible with every Mac ever made through clever use of emulation and virtualization technologies. You could have it able to run every piece of old software and talk to every piece of old Mac hardware, if you wanted to; you could issue made-to-order 3D-printed adapters and open-source certain old hardware designs for the community to make this stuff.
You seem to want to make an impact on the recycling of old computer stuff. Protip: don't make things obsolete.
OK there. /rant off