The real "problem" was nobody wanted to pay Microsoft for the privilege of having their crap preinstalled.
Today's "Samsung crap" is tomorrow's "Brand-new Android feature that you need to enable Google tracking to use"
Source : I was part of a team whose app was getting primed up for a preload on WP8.
It was explained only zillion times, but I will try one more:
In android, you have storage in two partitions: /system and /data.
/system is read-only, this is where anything that is shipped with phone is stored. Outside of system updates, it is not being touched.
/data is, where user data, installed applications, configuration, etc. is stored.
To factory reset the phone, you just wipe the /data. No separate partition for factory reset is necessary, because /system due to its immutability doubles as one. Anything you configure/change/etc is stored on /data. If you disable any bundled app, whether through gui or adb, the info that you disabled it is written into /data.
Once you want to sell your phone on craiglist, you wipe /data and the buyer gets exactly the same software you originally got.
There is also secondary use of the immutability: android system is distributed as partition image, not as a file archive. That means, that the physical fs layout is same for all devices of the same SKU, can be signed (dm-verity), and then verified at boot, whether the filesystem was modified or not. This is being used for ensuring secure boot, and unsealing secrets in trusted environment.
And the issue here is pretty clearly that users have to resort to adb to disable these apps. Why does Android force this? There is no reason, it could easily be built into the Android GUI.
No, you can disable (not delete or uninstall) nondeletable (system) apps on Android without adb. adb also lets you “uninstall” them for a given user (but not from the device), which makes them less visible to the user than disabled apps, but it's not clear to me that it does anything substantively different, since neither disabled nor uninstalled-for-current-user apps run.
> Why does Android force this? There is no reason, it could easily be built into the Android GUI.
The only difference I am aware of between disabling through the GUI and uninstalling for a particular user with adb is that the former allows you to reenable through the UI if you later choose to, whereas the latter removes it from the All Apps list in Settings, making it invisible from the UI and impossible to enable.
Requiring the latter to require the user to use the same tool necessary to reverse the process makes it less likely that users will accidentally do something that the same user can't reverse if they change their mind.
You don't have to resort to ADB to disable these apps for the most part; You can do it in Settings. For some apps you cannot do that in GUI - for Settings itself, for example, so the users don't shoot themselves in the foot. Unfortunately, some manufacturers abuse this and mark as undisable-able apps, that they shouldn't. Over ADB, they can't disable it, so it works for any app, including Settings.
It has apps that cannot be installed from the phone UI. Which kinda makes sense, since you don't want people randomly uninstalling, say, the app store, and then complaining that their phone is bricked. OTOH, someone who knows how to do this via adb can be presumed to know what they're doing.
I have heard the argument about being able to hide the apps, but it is not the same. This is the first android phone i have had where i didnt root it and install a new android version. Just got tired of that (lack of security updates). So i am stuck with crapware.