I believe the only way to combat this as users is to use agnostic tools. When a website, program or other service wants to force you to use a specific thing to access them just view in a web browser with ad/script blocking or choose to not view it at all if that isn't an option.
As programmers we can refuse to implement such nagware. There's not much worker solidarity in our field so quitting is usually the only option if the company has made up their mind on the matter.
Overall I don't believe it can be stopped at this point. This process is called privatizing the commons and it will continue to happen to every common good as long as capitalism is the system which we work under.
Your point on worker solidarity got me thinking. In some countries(such as mine) we have decent unionization rates for IT workers, would it be a good idea to have such ethical issues encoded into the union lines?
Absolutely. If you feel you are creating a product that has a negative impact on the people you are serving you should do something about it. Unions can greatly benefit society should they choose to.
But it appears that the issue of ethics in IT is almost non-existent. From a perspective of a CS student - everyone around wants to work at Google/MS/FB because that's the bleeding edge of technology, but no one gives a shit about corporation business practices and their consequences on privacy and digital wellbeing of other people.
I wouldn't be surprised to learn that there is actually a code of ethics within my union, I'll try to seek it out and see what we may want to do. Could be cool.
As programmers we can refuse to implement such nagware. There's not much worker solidarity in our field so quitting is usually the only option if the company has made up their mind on the matter.
Overall I don't believe it can be stopped at this point. This process is called privatizing the commons and it will continue to happen to every common good as long as capitalism is the system which we work under.