The two views presented so far both have merit, in my humble opinion, and are presented with conviction.
However, I'm sure that with some careful thought, a solution can be found that offers the best of both worlds. My perspective on the product / non-product debate is this: Software is neither. I view writing software as a service that can be provided to not just one user, but to many. True, software is an abstract construct which is largely based on the work that has gone before, but this use of existing knowledge is true for almost any product. In fact, the chair you are presumably sitting on is a product of rules of thumb that have been used for thousands of years, design philosophes that age in the hundreds of years, using materials, processes and design techniques that are probably decades old. But no-one I know would deny the designer payment for its design (unless its REALLY uncomfortable).
I think there should be limits on the power of software companies though. Undeniably, software is not a concrete asset which has intrinsic value, and anyhow, companies should not be allowed to hold users to ransom with exclusively rental systems, obstructive market tactics and plain shoddy products. Also, whichever view is adopted by a company, they should be self-consistent: if the software is "product" (that can be sold as such) it should be usable on any system belonging to a private user (I refer to 'original machine' licences here). Also, warranties and refunds for defective or inadequate software should be offered and honored as with any other 'product'. If the software is not a "product", with all the responsibilities that supply of a product entails for the supplier, it should be free, and preferably open-source : if the supplier won't fix problems, the users should be allowed to do so.
As a final thought: What (besides paranoia and critical trade secrets (ie: paranoia) -- NB: piracy is going to happen anyway) is to prevent the release of full or partial source as part of every package, regardless of pricing?