There was a computer.
There were terminals.
There were users.
… and the users had freedom.
to use.
to learn and modify for yourself.
to copy and share.
to modify and share modified versions.
They built licensing walls.
By separating the software from the computer.
As the majority of hobbyists must be aware, most of you steal your software. … [If] software is something to share … You prevent good software from being written.
Job at MIT’s AI lab in late 1970s and early 1980s.
Programming their PDP–10!
In the Golden Age.
MIT changed.
patents == $$$
spin-offs == $$$
Changes the world.
For the user of individual computers.
No reason now not to have freedom on your own machine.
Client/Server computing.
Freedom implications are basically the same.
Example: The Email System.
Yours has freedom: (postfix, exim, sendmail).
Plenty of proprietary ones: (exchange).
RFCs define interoperability.
We protocol-analyze & reimplement RFC-less protocols: (OpenChange).
Yours has freedom: (Thunderbird, mutt, Gnus)
Plenty of proprietary ones: (outlook)
SaaS: Software as a Service
True “SaaS” would end software freedom.
Imagine: GCC as an network service.
SaaS == your private computing done elsewhere.
Copyleft proponents all feared this threat.
Anyone know what this is?
☁
☁
The Browser as application delivery platform.
AJAX.
Whose computing is done where?
Cloud Computing: more complicated than SaaS.
Interesting applications are collaboration.
“The experience”
Effectively: Thin Client.
Mixes Up Free again: Price vs. Freedom.
RFCs no longer enough.
We’re back to proprietary “lock-in”.
try{function e(b){throw b;}var i=void 0,k=null; function aa(){return function(b){return b}} function m(){return function(){}} function ba(b){return function(a){this[b]=a}} function o(b){ return function(){return this[b]}} function p(b){return function(){return b}}var q; function da(b,a,c){b=b.split(".");c=c||ea; !(b[0]in c)&&c.execScript&&c.execScript("var "+b[0]); for(var d;b.length&&(d=b.shift());) !b.length&&s(a)?c[d]=a:c=c[d]?c[d]:c[d]={}} function fa(b,a){for(var c=b.split("."),d=a||ea,f;f=c.shift();) if(t(d[f]))d=d[f];else return k;return d}function u(){} function ga(b){b.va=function $(){return b.xY||(b.xY=new b)}} function ia(b){var a=typeof b;if(a=="object")if(b){ if(b instanceof Array)return"array";else if(b instanceof Object)return a; var c=Object.prototype.toString.call(b);if(c=="[object Window]") return"object";if(c=="[object Array]"||typeof b.length=="number"&& typeof b.splice!="undefined"&&typeof b.propertyIsEnumerable!="undefined" &&!b.propertyIsEnumerable("splice"))return"array"; if(c=="[object Function]"||typeof b.call!="undefined"&& typeof b.propertyIsEnumerable!="undefined"&&!b.propertyIsEnumerable("call")) return"function"}else return"null"; else if(a=="function"&&typeof b.call=="undefined")return"object";return a}function s(b){return b!==i}function ja(b){return b===k}function t(b){return b!=k}function ka(b){return ia(b)=="array"}function la(b){var a=ia(b);return a=="array"||a=="object"&&typeof b.length=="number"}function ma(b){return typeof b=="string"}function na(b){return typeof b=="boolean"}function oa(b){return typeof b=="number"}function pa(b){return ia(b)=="function"}
JavaScript is an assembly language. JavaScript + HTML is like a .NET assembly. The browser can execute it, but no human should care what’s there.
— Erik Meijer of Microsoft on 5 July 2011.
Even Worse Than Proprietary Apps and OS’es
Not merely a question of code and licensing.
A question of community source+data control.
Power to transport: applications, data, human connections.
Autonomy: of code, of data, of community.
Infrastructure that respects freedom.
Empower the user: give them all the code.
Link to your Javascript source repository.
Explain what code runs on server & share that code.
User communities need ability to transplant.
Reclaim your data; relocate your community.
Truly distributed data.
This programming is tough.
Run NoScript plugin to at least see what proprietary Javascript you’re getting.
MediaGoblin (replaces Flickr & Picasso)
Jesse Vincent’s Prophet, CouchDB, and other truly decentralized data stores.
GPL is the BSD of Network Service.
Affero GPL.
Extends copyleft to network service world.
Handles the code side well.
Very few applications use AGPL, though!
Deployed applications auto-give users source.
Data is downloadable in community-chunks.
Disjoint but Integrated.
Portable and Autonomous.
Developers will decide next direction.
The data is theirs; we are their custodians.
Presentation & slides: Copyright © 2008—2011 Bradley M. Kuhn. License: Creative Commons Attribution-Share Alike (CC-By-SA) 3.0 United States License.
Some images included herein are ©’ed by others. I believe my use of those images is fair use under USA © law. However, I suggest you remove such images if you redistribute these slides under CC-By-SA.