Skip to content

Instantly share code, notes, and snippets.

@weakish
Last active August 20, 2017 16:14
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save weakish/dae4dd5c305132a586134a27588db907 to your computer and use it in GitHub Desktop.
Save weakish/dae4dd5c305132a586134a27588db907 to your computer and use it in GitHub Desktop.
Freedom -1 on #web services. #freedom #free #software

Consider the following two web services:

  1. 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.
  2. 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:

  1. The freedom to run the program as you wish, for any purpose (freedom 0).
  2. 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.
  3. The freedom to redistribute copies so you can help your neighbor (freedom 2).
  4. 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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment