Plaintext
Restore Online Freedom!
Mike Gerwitz
20 March, LibrePlanet 2016
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 1 / 50
Who am I?
Long-time free software hacker and activist
GNU volunteer, software evaluator, and part of maintainers team
Author of GNU ease.js
10+ years of web development
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 2 / 50
Who am I?
Long-time free software hacker and activist
GNU volunteer, software evaluator, and part of maintainers team
Author of GNU ease.js
10+ years of web development
I The Web has changed a lot
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 2 / 50
Who am I?
Long-time free software hacker and activist
GNU volunteer, software evaluator, and part of maintainers team
Author of GNU ease.js
10+ years of web development
I The Web has worsened a lot
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 2 / 50
“But the Web is great!”
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 3 / 50
“But the Web is great!”
The Web has improved technically
I Modern software on the web rivals traditional desktop software
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 3 / 50
“But the Web is great!”
The Web has improved technically
I Modern software on the web rivals traditional desktop software
The truth is: the Web has become alarmingly hostile and
freedom-denying toward users
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 3 / 50
“But the Web is great!”
The Web has improved technically
I Modern software on the web rivals traditional desktop software
The truth is: the Web has become alarmingly hostile and
freedom-denying toward users
Freedom trumps all.
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 3 / 50
Interoperability
Fundamental building blocks are standardized (W3C)
I HTML—Describes the document
I CSS—Describes the document style (appearance)
I HTTP—Communication protocol
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 4 / 50
Interoperability
Fundamental building blocks are standardized (W3C)
I HTML—Describes the document
I CSS—Describes the document style (appearance)
I HTTP—Communication protocol
I JavaScript—Embed programs in web browser
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 4 / 50
Interoperability
Fundamental building blocks are standardized (W3C)
I HTML—Describes the document
I CSS—Describes the document style (appearance)
I HTTP—Communication protocol
I JavaScript—Embed programs in web browser
Any software can interact freely
Threatened in the past: Java applets, ActiveX, Flash, Silverlight, and
other proprietary/non-standard software
Threatened today: Encrypted Media Extensions (EME) Silverlight,
and other proprietary/non-standard software
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 4 / 50
Interoperability
Fundamental building blocks are standardized (W3C)
I HTML—Describes the document
I CSS—Describes the document style (appearance)
I HTTP—Communication protocol
I JavaScript—Embed programs in web browser
Any software can interact freely
Threatened in the past: Java applets, ActiveX, Flash, Silverlight, and
other proprietary/non-standard software
Threatened today: Encrypted Media Extensions (EME) Silverlight,
and other proprietary/non-standard software
Now the greatest threat is JavaScript
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 4 / 50
What is JavaScript?
ECMAScript (Standard: ECMA-262; ISO/IEC 16262)
Traditionally: Browser-based, client-side scripting language
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 5 / 50
What is JavaScript?
ECMAScript (Standard: ECMA-262; ISO/IEC 16262)
Traditionally: Browser-based, client-side scripting language
Today: General-purpose programming language
I Heavily popularized by Node.js
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 5 / 50
What is JavaScript?
ECMAScript (Standard: ECMA-262; ISO/IEC 16262)
Traditionally: Browser-based, client-side scripting language
Today: General-purpose programming language
I Heavily popularized by Node.js
“Assembly language” of the web
I Subset: asm.js
I Soon: WebAssembly (WebASM)
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 5 / 50
The Illusion of Remote Execution
Looks like the web page is manipulating itself
I Many consider the web page as a remote resource, not a local copy of
that resource
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 6 / 50
The Illusion of Remote Execution
Looks like the web page is manipulating itself
I Many consider the web page as a remote resource, not a local copy of
that resource
JavaScript programs run on the client
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 6 / 50
The Illusion of Remote Execution
Looks like the web page is manipulating itself
I Many consider the web page as a remote resource, not a local copy of
that resource
JavaScript programs run on the client
Illusion inhibits consideration of freedoms
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 6 / 50
Would you run some random website’s program on your computer?
Well, you do.
Covert Ephemeral Software
Browser downloads and executes arbitrary, often non-free software
I (Automatically clicks the download button for you!)
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 9 / 50
Covert Ephemeral Software
Browser downloads and executes arbitrary, often non-free software
I (Automatically clicks the download button for you!)
Most users have no idea this is happening
I How would they?
I Most who do know don’t care.
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 9 / 50
Covert Ephemeral Software
Browser downloads and executes arbitrary, often non-free software
I (Automatically clicks the download button for you!)
Most users have no idea this is happening
I How would they?
I Most who do know don’t care.
Ephemeral software
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 9 / 50
Just Say “Yes!”
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 10 / 50
Just Say “Yes!”
Advertisers
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 10 / 50
Just Say “Yes!”
Crackers & Script Kiddies
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 10 / 50
Just Say “Yes!”
Governments (also Crackers & Script Kiddies)
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 10 / 50
Just Say “Yes!”
ISPs (Like Comcast)
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 10 / 50
Just Say “Yes!”
People who want to show off their cool stuff
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 10 / 50
Just Say “Yes!”...and “Yes!” and “Yes!” and “Yes!”...
Everyone expects their code to run, always, or there’s something
wrong with your browser
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 11 / 50
Just Say “Yes!”...and “Yes!” and “Yes!” and “Yes!”...
Everyone expects their code to run, always, or there’s something
wrong with your browser
But most browsers today give you a binary choice:
1 No—disable JavaScript
2 Yes—run everything!
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 11 / 50
Just Say “Yes!”...and “Yes!” and “Yes!” and “Yes!”...
Everyone expects their code to run, always, or there’s something
wrong with your browser
But most browsers today give you a binary choice:
1 No—disable JavaScript
2 Yes—run everything!
You aren’t just running that site’s JavaScript
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 11 / 50
How Do We Install Software (Usually)?
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 12 / 50
How Do We Install Software (Usually)?
Explicitly.
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 12 / 50
How Do We Install Software (Usually)?
Explicitly.
I GNU/Linux—Usually through a package manager
I Source distribution (tarballs/etc)
I Binaries (especially on proprietary operating systems)
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 12 / 50
How Do We Install Software (Usually)?
Explicitly.
I GNU/Linux—Usually through a package manager
I Source distribution (tarballs/etc)
I Binaries (especially on proprietary operating systems)
There is a conscious effort made by the user
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 12 / 50
Software Signing
Package manager (should!) verify signatures of package maintainers
Many projects distribute detached signatures for manual verification
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 13 / 50
Software Signing
Package manager (should!) verify signatures of package maintainers
Many projects distribute detached signatures for manual verification
No such thing exists for the Web
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 13 / 50
Software Signing
Package manager (should!) verify signatures of package maintainers
Many projects distribute detached signatures for manual verification
No such thing exists for the Web
I wish I had time to discuss this
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 13 / 50
Software Signing
Package manager (should!) verify signatures of package maintainers
Many projects distribute detached signatures for manual verification
No such thing exists for the Web
I wish I had time to discuss this
I What not to do: Firefox refuses to install/run addons that are not
signed by Mozilla
I No “walled gardens”
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 13 / 50
Everyone is flocking to the web
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 14 / 50
Effortless Distribution
Software is downloaded automatically—guaranteed!
It’s so easy for you—just click here!
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 15 / 50
Effortless Distribution
Software is downloaded automatically—guaranteed!
It’s so easy for you—just click here!
Cross-{device,platform}!
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 15 / 50
Effortless Distribution
Software is downloaded automatically—guaranteed!
It’s so easy for you—just click here!
Cross-{device,platform}!
Automatic updates! We know best! (Ephemeral software)
I Your browser is effectively a backdoor
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 15 / 50
Effortless Distribution
Software is downloaded automatically—guaranteed!
It’s so easy for you—just click here!
Cross-{device,platform}!
Automatic updates! We know best! (Ephemeral software)
I Your browser is effectively a backdoor
We control your data and computing (SaaSS)!
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 15 / 50
Effortless Distribution
Software is downloaded automatically—guaranteed!
It’s so easy for you—just click here!
Cross-{device,platform}!
Automatic updates! We know best! (Ephemeral software)
I Your browser is effectively a backdoor
We control your data and computing (SaaSS)!
So easy to spy on you!
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 15 / 50
We can finally get rid of that pesky little bit of control you had left over
your physical computing!
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 16 / 50
The Web Is Easy
Low Barrier To Entry
Huge number of libraries and tools for web development
Even server/desktop software [substitutes] using web libraries
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 17 / 50
This is great for software freedom.
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 18 / 50
But we have a problem.
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 18 / 50
Effortless Proprietary Software
We have a licensing problem.
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 19 / 50
Effortless Proprietary Software
We have a licensing problem.
Permissive licensing enables proprietary software
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 19 / 50
The Web Scene
Startups (e.g. YCombinator-funded)
Large corporations
New programmers, new culture
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 20 / 50
The Web Scene
Startups (e.g. YCombinator-funded)
Large corporations
New programmers, new culture
I “Open Source”
I “Copyleft” is a dirty word
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 20 / 50
The Web Scene
Startups (e.g. YCombinator-funded)
Large corporations
New programmers, new culture
I “Open Source”
I “Copyleft” is a dirty word
Peer pressure
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 20 / 50
Partial freedom isn’t freedom!
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 21 / 50
No Such Thing As Neutral On Freedom
Permissive (pushover) licenses are sometimes used in an attempt to
be neutral
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 22 / 50
No Such Thing As Neutral On Freedom
Permissive (pushover) licenses are sometimes used in an attempt to
be neutral
But there’s no such thing as neutrality!
Neutral on freedom ≡ allowing erosion of freedoms
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 22 / 50
No Such Thing As Neutral On Freedom
Permissive (pushover) licenses are sometimes used in an attempt to
be neutral
But there’s no such thing as neutrality!
Neutral on freedom ≡ allowing erosion of freedoms
Copyleft is essential for a free Web
I If you use pushover licenses, you’re helping to push over everyone else
(but perhaps not intentionally)
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 22 / 50
If you value freedom, talk about Free Software!
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 23 / 50
If you value freedom, choose copyleft!
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 23 / 50
Freedom is only as good as your ability to exercise it
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 24 / 50
Maybe free...?
Almost always no license information or link to source code
Might also load non-free code as a separate program (e.g. Google
Analytics spyware)
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 25 / 50
Corresponding Source Code
Where can I find the corresponding source?
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 26 / 50
Corresponding Source Code
Where can I find the corresponding source?
Minified code is not source code!
“The ’source code’ for a work means the preferred form of the work
for making modifications to it. ’Object code’ means any non-source
form of a work.”
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 26 / 50
add:function(a,b,c,d,e){var
f,g,h,i,j,k,l,m,o,p,q,r=N.get(a);if(r){c.handler&&(f=c,c=f.handler,
e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),
(g=r.handle)||(g=r.handle=function(b){return"undefined"!=typeof
n&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void
0}),b=(b||"").match(G)||[""],j=b.length;while(j--)h=fa.exec(b[j])||[],
o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},
o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend(
{type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:
e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])
||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||
a.addEventListener&&a.addEventListener(o,g)),l.add&&(l.add.call(a,k),
k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k)
:m.push(k),n.event.global[o]=!0)}}
https://code.jquery.com/jquery-2.2.1.min.js
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 28 / 50
LibreJS
Blocks execution of non-free JavaScript
JavaScript should contain @license tags
Hashes of common libraries recognized as free
Web Labels map scripts to corresponding source code
.
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 29 / 50
Submit Patches To Projects!
Patch your own projects!
Submit patches to add headers to projects
Patches for minifiers (e.g. UglifyJS)
Patches for programs that combine sources (e.g. Browserify)
For Node.js programs: can pull license right out of package.json
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 30 / 50
Replacing Programs
How do you replace a program (free or non-) on your computer?
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 31 / 50
Replacing Programs
How do you replace a program (free or non-) on your computer?
I You just do.
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 31 / 50
Replacing Programs
How do you replace a program (free or non-) on your computer?
I You just do.
How do you replace a program (free or non-) on the Web?
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 31 / 50
Is that a trick question?
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 32 / 50
Replacing Programs—The Best Case
1 The program is entirely packaged in its own JavaScript file(s)
2 All dependencies are packaged with or alongside it
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 33 / 50
Replacing Programs—The Best Case
1 The program is entirely packaged in its own JavaScript file(s)
2 All dependencies are packaged with or alongside it
Solution:
1 Block program scripts
2 Block undesirable dependencies
3 Inject replacement program
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 33 / 50
Replacing Programs—The Realistic Case
1 The program is actually a number of independent programs (scripts)
doing different things
2 Some scripts are packaged in one or more JavaScript files
3 Some are inline <script> tags scattered throughout
4 Some are inline JavaScript fragments in HTML attributes
“Code Quality” by Randall Munroe (http://xkcd.com/1513/) CC BY-NC 2.5
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 34 / 50
Solution?
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 35 / 50
Write a presentation complaining about it.
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 35 / 50
Blocking Scripts—Entirely
Can disable JavaScript entirely
But then you can’t run replacements
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 36 / 50
Blocking Scripts—NoScript
NoScript is effective at blocking scripts per (sub-)domain
Careful—some domains serve lots of scripts (e.g. CDNs)
Some sites require you to trust many different domains
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 37 / 50
Blocking Scripts—LibreJS
Blocks non-free JS with a high level of granularity
Recognizes JavaScript files (or parts of), script tags, inline scripts in
attributes, etc.
But doesn’t block scripts recognized as free
I So that we can replace specific programs
I Free software can do bad things too
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 38 / 50
Injecting Scripts—Greasemonkey
Expat / Modified BSD / MPL 1.1
Inject user-defined scripts into web pages
http://openuserjs.org, http://greasyfork.org,
http://userscripts-mirror.org
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 39 / 50
Injecting Scripts/Styles—dotjs
MPL 1.1
Inject user-defined scripts from ~/.js
Inject user-defined styles from ~/.css
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 40 / 50
Replacing Scripts—What We Need
Something your grandparents can use!
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 41 / 50
Replacing Scripts—What We Need
Something your grandparents can use!
Package changes:
I Install replacement software like you’d install an addon
I Automatically block scripts with granularity of LibreJS
I Automatically inject scripts
I Verify package signatures
I Update mechanism
Ideally: add that support to LibreJS
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 41 / 50
But all this is just a kluge.
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 42 / 50
Service as a Software Substitute (SaaSS)
Also called “Software as a Service” (SaaS)
“Who Does That Server Really Serve?” essay by rms
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 43 / 50
Service as a Software Substitute (SaaSS)
Also called “Software as a Service” (SaaS)
“Who Does That Server Really Serve?” essay by rms
You simply cannot modify a program running on someone else’s
server
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 43 / 50
Service as a Software Substitute (SaaSS)
Also called “Software as a Service” (SaaS)
“Who Does That Server Really Serve?” essay by rms
You simply cannot modify a program running on someone else’s
server
SaaS—Shackles as a Service
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 43 / 50
There Is No Cloud
Talking about the “cloud” leads to cloudy judgment
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 44 / 50
There Is No Cloud
Talking about the “cloud” leads to cloudy judgment
It’s just someone else’s computer—lots of them
Difference: elasticity—servers/resources brought online only when
needed
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 44 / 50
There Is No Cloud
Talking about the “cloud” leads to cloudy judgment
It’s just someone else’s computer—lots of them
Difference: elasticity—servers/resources brought online only when
needed
We can’t talk about freedoms using terms that cloud understanding
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 44 / 50
There Is No Cloud
Talking about the “cloud” leads to cloudy judgment
It’s just someone else’s computer—lots of them
Difference: elasticity—servers/resources brought online only when
needed
We can’t talk about freedoms using terms that cloud understanding
I May as well call it the “fog”
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 44 / 50
{Desktop,Web} Software
To regain control, must host it yourself
This means running the entire stack (server and client) on your own
computer
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 45 / 50
{Desktop,Web} Software
To regain control, must host it yourself
This means running the entire stack (server and client) on your own
computer
Unweb
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 45 / 50
Unwebbing
Cannot unweb a partially (or non-) free stack
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 46 / 50
Unwebbing
Cannot unweb a partially (or non-) free stack
I Webserver
I Programs/scripts that it runs to generate output
I Script dependencies
I Client
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 46 / 50
The Affero GPL Doesn’t Solve All Problems
If users can access a modified version of the program over a network,
that they must have access to the source code
But even if you have the source code, you can’t modify it on the
server that’s using it
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 47 / 50
The Affero GPL Doesn’t Solve All Problems
If users can access a modified version of the program over a network,
that they must have access to the source code
But even if you have the source code, you can’t modify it on the
server that’s using it
AGPL’d programs can be used in a pipeline with proprietary programs
Doesn’t cover works that the AGPL’d program might invoke externally
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 47 / 50
Truly Unwebbed
1 Download unwebbed package
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 48 / 50
Truly Unwebbed
1 Download unwebbed package
2 Invoke unwebbed program ./foo
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 48 / 50
Truly Unwebbed
1 Download unwebbed package
2 Invoke unwebbed program ./foo
3 Package creates an isolated environment (possibly with no network
access)
4 Package mounts persistent storage
5 Package starts all necessary services
6 Package invokes client (e.g. web browser, possibly in “app” mode /
SSB)
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 48 / 50
Truly Unwebbed
1 Download unwebbed package
2 Invoke unwebbed program ./foo
3 Package creates an isolated environment (possibly with no network
access)
4 Package mounts persistent storage
5 Package starts all necessary services
6 Package invokes client (e.g. web browser, possibly in “app” mode /
SSB)
7 Program terminates
8 All services are stopped
9 Environment is destroyed (but not persistent storage)
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 48 / 50
Web software works just as desktop software
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 49 / 50
End Goal: Just Run ./foo
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 49 / 50
Mike Gerwitz
mtg@gnu.org
Interested in submitting your project to GNU?
https://www.gnu.org/help/evaluation.html
Licensed under the Creative Commons Attribution ShareAlike 4.0
International License
https://gitlab.com/mikegerwitz/online-freedom
Mike Gerwitz Restore Online Freedom! 20 March, LibrePlanet 2016 50 / 50