all: reduce transitions
This'll be a little less stressful to present. But I still have a bunch of stuff to remove because of time restrictions.master
parent
8c2e9ccda5
commit
cf7b022f32
84
talk.tex
84
talk.tex
|
@ -524,7 +524,7 @@
|
|||
exploitative, and highly alluring to many. Two things that go
|
||||
great in the same sentence.}
|
||||
|
||||
\begin{itemize}[<+->]
|
||||
\begin{itemize}
|
||||
\item Software is downloaded \emph{automatically}---guaranteed!
|
||||
\lecture{So, when you visit a website---as we've already
|
||||
discussed---your browser just starts saying ``Yes!'' to
|
||||
|
@ -533,28 +533,27 @@
|
|||
and executed, and it will be done so immediately. If not,
|
||||
their browser is broken, right? Right.}
|
||||
|
||||
%% Shackle as a Service
|
||||
\item It's so easy for you---just click here!
|
||||
\item<1-> It's so easy for you---just click here!
|
||||
\lecture{Baiting the user into downloading that software is also a
|
||||
trivial task---there's no trying to trick the user into
|
||||
downloading and invoking an executable. Just provide the
|
||||
user with a link, and their freedoms are automatically
|
||||
robbed.}
|
||||
|
||||
\item Cross-\{device,platform\}!
|
||||
\item<2-> Cross-\{device,platform\}!
|
||||
\lecture{In the modern web, platform or operating system isn't a
|
||||
border---you can rob someone of their freedoms anywhere, any
|
||||
time, whether they're on a mobile device, their home
|
||||
computer, or their television.}
|
||||
|
||||
\item Automatic updates! We know best! (Ephemeral software)
|
||||
\item<3-> Automatic updates! We know best! (Ephemeral software)
|
||||
\lecture{And let's not worry about those pesky users who decide to
|
||||
exercise their freedom to decide what software they want to
|
||||
run. Just overwrite their software for them, at any
|
||||
time. Updates are automatic, and the user has no
|
||||
choice.}
|
||||
\begin{itemize}
|
||||
\item Your browser is effectively a backdoor
|
||||
\item<3-> Your browser is effectively a backdoor
|
||||
\lecture{You might hear from security experts that most
|
||||
computers have a backdoor---software updates. Well, in
|
||||
this case, the backdoor is the front door. You have no
|
||||
|
@ -565,12 +564,12 @@
|
|||
disappears until you next load it again.}
|
||||
\end{itemize}
|
||||
|
||||
\item We control your data and computing (SaaSS)!
|
||||
\item<4-> We control your data and computing (SaaSS)!
|
||||
\lecture{But that's not enough. How can we take even greater
|
||||
advantage of the user? Ah, let's also hold their data
|
||||
hostage, and control what they can and cannot do with it!}
|
||||
|
||||
\item So easy to spy on you!
|
||||
\item<5-> So easy to spy on you!
|
||||
\lecture{And what's a magnificent consequence of all of this? We get
|
||||
to spy on you for free! It's part of the package! We know
|
||||
exactly what you are doing, when your are doing it, how you
|
||||
|
@ -592,16 +591,17 @@
|
|||
|
||||
\only<2>{SaaS---Shackles as a Service}
|
||||
\lecture{But as it happens, the answer fell right into their
|
||||
laps---``Shackles as a Service''. We're at the point today
|
||||
where the next step to strip all power from the user is to
|
||||
remotely render the program and stream images. And
|
||||
unfortunately, such a thing already exists! It's called
|
||||
``cloud gaming'', or Gaming as a Service. Hold the fart
|
||||
jokes. These services remotely render games and stream them
|
||||
to the user. All user input is sent to the service. The
|
||||
next logical step after that is then licensing eyeball or
|
||||
brain implants so that the user can't record or manipulate
|
||||
the image on her screen! Vision as a Service, perhaps.}
|
||||
laps---when talking about freedom, we may as well call it
|
||||
``Shackles as a Service''. We're at the point today where
|
||||
the next step to strip all power from the user is to remotely
|
||||
render the program and stream images. And unfortunately,
|
||||
such a thing already exists! It's called ``cloud gaming'',
|
||||
or Gaming as a Service. Hold the fart jokes. These services
|
||||
remotely render games and stream them to the user. All user
|
||||
input is sent to the service. The next logical step after
|
||||
that is then licensing eyeball or brain implants so that the
|
||||
user can't record or manipulate the image on her screen!
|
||||
Vision as a Service, perhaps.}
|
||||
\end{center}
|
||||
\end{frame}
|
||||
|
||||
|
@ -678,11 +678,11 @@
|
|||
that.}
|
||||
|
||||
\begin{itemize}
|
||||
\item<2-> We have a licensing problem.
|
||||
\item<1-> We have a licensing problem.
|
||||
\lecture{What we have is a licensing problem! We have a \emph{lot} of
|
||||
free software,}
|
||||
|
||||
\item<3-> Permissive licensing \emph{enables} proprietary software
|
||||
\item<2-> Permissive licensing \emph{enables} proprietary software
|
||||
\lecture{but most of it is licensed under a permissive license---the
|
||||
most popular being the MIT~Expat license, which allows for
|
||||
non-free derivatives. What this means is that proprietary
|
||||
|
@ -775,7 +775,7 @@
|
|||
resources---they need free software. So there is immense
|
||||
community pressure to create permissively licensed software.}
|
||||
|
||||
\item<3-> New programmers, new culture
|
||||
\item<2-> New programmers, new culture
|
||||
\lecture{And speaking of that community pressure---the web development
|
||||
community is home to many new or inexperienced
|
||||
programmers. Those programmers are immersed in a culture that
|
||||
|
@ -1022,8 +1022,8 @@
|
|||
|
||||
|
||||
\begin{frame}{Corresponding Source Code}
|
||||
\begin{itemize}[<+->]
|
||||
\item Where can I find the corresponding source?
|
||||
\begin{itemize}
|
||||
\item<1-> Where can I find the corresponding source?
|
||||
\lecture{The other requirement is the corresponding source code. We
|
||||
should be able to build it ourselves, host it ourselves, and
|
||||
expect to have the same functionality. And we should be able
|
||||
|
@ -1034,13 +1034,13 @@
|
|||
around the page if they have some cursed flag set, but
|
||||
non-free nonetheless.}
|
||||
|
||||
\item Minified code is not source code!
|
||||
\item<2-> Minified code is not source code!
|
||||
\lecture{I have personally had people counter my argument in the past
|
||||
with a statement saying that all JavaScript code is
|
||||
quote-unquote ``open source'' because the source code is
|
||||
distributed to the browser. No!}
|
||||
|
||||
\item ``The 'source code' for a work means the preferred form of the
|
||||
\item<2-> ``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.''
|
||||
\lecture{The GPL defines ``source code'' as (read above). So minified
|
||||
|
@ -1084,18 +1084,18 @@ k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k)
|
|||
|
||||
\begin{frame}{LibreJS}
|
||||
\begin{itemize}
|
||||
\item<1-> Blocks execution of non-free JavaScript
|
||||
\item Blocks execution of non-free JavaScript
|
||||
\lecture{LibreJS blocks the execution of non-free JavaScript. But how
|
||||
does it determine what is non-free?}
|
||||
|
||||
\item<2-> JavaScript should ideally contain {\tt @license} tags
|
||||
\item JavaScript should contain {\tt @license} tags
|
||||
\lecture{A couple ways. Ideally, the JavaScript should be wrapped in
|
||||
license tags. It can identify the license in a number of
|
||||
ways, including the full license header you'd see in source
|
||||
files, or a magnet link, which is much more ideal for
|
||||
minified sources.}
|
||||
|
||||
\item<2-> Hashes of common libraries recognized as free
|
||||
\item Hashes of common libraries recognized as free
|
||||
\lecture{But the Web is full of \emph{existing} software like
|
||||
libraries that don't contain those labels. So LibreJS also
|
||||
maintains a list of file hashes for popular libraries. For
|
||||
|
@ -1103,7 +1103,7 @@ k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k)
|
|||
showed would be recognized as free, even though it doesn't
|
||||
contain licensing information.}
|
||||
|
||||
\item<3-> Web Labels map scripts to corresponding source code
|
||||
\item Web Labels map scripts to corresponding source code
|
||||
\lecture{It then has a method called Web Labels---which is a simple
|
||||
HTML table---that is intended to be a machine-readable way to
|
||||
map scripts to their source code.}
|
||||
|
@ -1178,9 +1178,9 @@ k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k)
|
|||
program is packaged entirely in its own JavaScript files, and
|
||||
so are its dependencies.}
|
||||
|
||||
Solution:
|
||||
|
||||
\only<2->{
|
||||
Solution:
|
||||
|
||||
\begin{enumerate}
|
||||
\item Block program scripts
|
||||
\item Block undesirable dependencies
|
||||
|
@ -1205,15 +1205,15 @@ k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k)
|
|||
a shopping cart, animating part of the page, etc.}
|
||||
%% add web page screenshot as an example
|
||||
|
||||
\item<2-> Some scripts are packaged in one or more JavaScript files
|
||||
\item<1-> Some scripts are packaged in one or more JavaScript files
|
||||
\lecture{Some of those scripts might be packaged in one or more
|
||||
JavaScript files. Okay, that's good.}
|
||||
|
||||
\item<3-> Some are inline {\tt <script>} tags scattered throughout
|
||||
\item<1-> Some are inline {\tt <script>} tags scattered throughout
|
||||
\lecture{But some are inline script tags mixed with the HTML.}
|
||||
%% example
|
||||
|
||||
\item<4-> Some are inline JavaScript fragments in HTML attributes
|
||||
\item<1-> Some are inline JavaScript fragments in HTML attributes
|
||||
\lecture{And others still might be fragments of JavaScript in HTML
|
||||
attributes. Not everyone knows how to write proper
|
||||
JavaScript, and others who do simply don't care that they're
|
||||
|
@ -1384,16 +1384,16 @@ k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k)
|
|||
\begin{itemize}
|
||||
\item<2-> Install replacement software like you'd install an addon
|
||||
|
||||
\item<3-> Automatically block scripts with granularity of LibreJS
|
||||
\item<2-> Automatically block scripts with granularity of LibreJS
|
||||
|
||||
\item<4-> Automatically inject scripts
|
||||
\item<2-> Automatically inject scripts
|
||||
|
||||
\item<5-> Verify package signatures
|
||||
\item<2-> Verify package signatures
|
||||
|
||||
\item<6-> Update mechanism
|
||||
\item<2-> Update mechanism
|
||||
\end{itemize}
|
||||
|
||||
\item<7-> Add support to LibreJS
|
||||
\item<2-> Ideally: add that support to LibreJS
|
||||
\lecture{And ideally you'd add that support to GNU LibreJS.}
|
||||
\end{itemize}
|
||||
|
||||
|
@ -1430,8 +1430,8 @@ k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k)
|
|||
``Service as a Software Substitute''---as coined by rms---to
|
||||
emphasize that you're sacrificing something.}
|
||||
|
||||
\item You simply cannot modify a program running on someone else's
|
||||
server
|
||||
\item<2-> You simply cannot modify a program running on someone else's
|
||||
server
|
||||
\lecture{This poses an entirely different problem than software
|
||||
freedom---you simply cannot modify software on someone else's
|
||||
computer; nor should you be able to.}
|
||||
|
@ -1475,7 +1475,7 @@ k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k)
|
|||
|
||||
\item<3-> We can't talk about freedoms using terms that cloud understanding
|
||||
\begin{itemize}
|
||||
\item<3-> Better term---the ``fog''
|
||||
\item<4-> May as well call it the ``fog''
|
||||
\end{itemize}
|
||||
|
||||
\lecture{Don't talk about the ``cloud'', because if you speak in such
|
||||
|
|
Loading…
Reference in New Issue