Consider the following two web services:
- The web service software is licensed under Free Software licenses but the web service does not provide any api and there is no export your data function in web UI.
- The web service software is proprietary, but the web service has well designed api exposing all or more functions in its web UI.
From a traditional software view: 2 is free and 3 is proprietary.
For someone who wants to host this web service software: 2 is free and 3 is proprietary.
Consistent till now.
But for someone just wants to use the hosted service, do they have more freedom when using 1?
On one side, 1 does provide the freedom that the user can host the service on their own machine, or use a copy hosted on their friends' machine.
On the other side, for manipulating their data, 2 (Proprietary Software) provides more freedom than 1 (Free Software).
Traditional local free software does not have this issue, since it runs on your own machine. For example, if a free software cannot save the result to disk or pipe the result to other program, you can edit its source.
Go back to the definition of free software:
A program is free software if the program's users have the four essential freedoms:
- The freedom to run the program as you wish, for any purpose (freedom 0).
- The freedom to study how the program works, and change it so it does your computing as you wish (freedom 1). Access to the source code is a precondition for this.
- The freedom to redistribute copies so you can help your neighbor (freedom 2).
- The freedom to distribute copies of your modified versions to others (freedom 3). By doing this you can give the whole community a chance to benefit from your changes. Access to the source code is a precondition for this.
For web services, or software not run on your own machine, the data is not on your own machine. Therefore we need something like freedom -1:
The freedom to use your data as you wish, including use your data through a programmable interface (api) and export your data.