Actually, the correct perspective is not software as a service, but software as a public good. Indeed the GPL was cleverly drafted to use copyright law to ensure that software is non-excludable and non-rivalrous.
What is a service is the things people do with their time (and other resources) in relation to the software.
This is a very robust and stable model.
The problem comes with sharing the costs of development between all the poeple who will benefit. There is no problem when one user is prepared to foot the whole development bill and then share (for example, https://moodle.org/plugins/browse.php?list=set&id=10, thank you Open University). The sharing part only costs us a tiny bit more that not sharing (and there are benefits). That does not work in all situations. Sometimes, to be economically viable, you must share the cost of development between all of the people who will benefit.
The classic software model solves this by having one company does the development and then use license fees to recoup the cost from all users. That comes with many problems, which makes the solution worse than the problem (in my opinion). A more open-source-friendly solution is crowd funding. That comes with the free-rider problem. People can benefit even if they do not want to pay their share. My 'solution' to that is to not consider it a problem. If the people who really need a feature enough to pay a share of the development get the feature they want for a price they can afford, then it is not a problem if other people benefit too.