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
Authors Mike Gerwitz
License CC-BY-SA-4.0