While some of this is Apple and Android, much of the root of this problem lies in the carriers themselves, not the software makers. Carriers have a long standing history of building very high and tight walled gardens around their networks, the devices on those networks, and even the versions of software that run on those devices. It has actually gotten a ton better since the App and Play Stores have come around. By building those walled garden stores the Apple and Android have pulled a lot of the burden for developers from individual carriers to single platforms. I would much rather have to work with a single walled garden such as the App Store than have to deal with coming up with a version of software for each carrier.
While some of this is Apple and Android, much of the root of this problem lies in the carriers themselves, not the software makers. Carriers have a long standing history of building very high and tight walled gardens around their networks, the devices on those networks, and even the versions of software that run on those devices. It has actually gotten a ton better since the App and Play Stores have come around. By building those walled garden stores the Apple and Android have pulled a lot of the burden for developers from individual carriers to single platforms. I would much rather have to work with a single walled garden such as the App Store than have to deal with coming up with a version of software for each carrier.