DOKK Library

Restore Online Freedom!

Authors Mike Gerwitz

License CC-BY-SA-4.0

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