Software would always be at the control of the user, who should have the final say on what the software does at all times.
Not only that, the users should be able to study and modify their software as much as they please. All the components should be accessible to the user to be studied, or modified, as much as the user chooses to do. Once the the user has the software in his hands, there should be mechanisms that allow the user to do so without having to fear reprisals from the original developers.
Being able to do study and modify the software run on their computers, the users become less dependent on a single single vendor to meet their needs. And if anything should happen to the vendor they relied on, it's a lot easier to find an alternate vendor that fills their needs without much pain.
In some cases, the users themselves can take the software and work on it themselves. Which can give the user an extra layer of protection, and reduce dependence on outside influences, to make their software a better fit to their needs.
Not only that, improvements could be shared by the whole community of users of any given software. Allowing the development to be a lot faster, and giving it a high level of security since you have several people looking at the code.
Since the user can see the source code, and compare it to the original, it becomes harder for people with bad intentions to add malicious segments to the code without being detected. Even if they could add some of that code, the odds of being discovered and corrected quickly is a lot higher. More often than not, any bug or security vulnerability is discovered and patched quickly.
By being open, software can be a mayor tool for users to be able to do a lot with in a safe manner.