1
0
Fork 0

timeblock (unweb): refine and add truely unwebbed slide

master
Mike Gerwitz 2016-03-14 23:09:21 -04:00
parent 8d948b1afe
commit 00ba8b29e9
No known key found for this signature in database
GPG Key ID: F22BB8158EE30EAB
1 changed files with 119 additions and 36 deletions

155
talk.tex
View File

@ -1640,79 +1640,162 @@ k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k)
\begin{center}
There is no cloud.
\end{center}
\lecture{But let's not fool ourselves.}
\end{frame}
\begin{frame}{Desktop vs. Web Application}
\begin{itemize}
\item To regain control, must host it yourself
\begin{frame}{There Is No Cloud}
\begin{itemize}[<+->]
\item Talking about the ``cloud'' leads to cloudy judgment
\lecture{The ``cloud'' is a popular term that is more of an
advertising ploy than anything at this point, as it deeply
confounds the situation and insults users' intelligence by
making it seem like this is all some sort of mysterious
magic, providing no explanation of what is \emph{actually}
going on.}
\item This means running the entire stack (server and client) yourself
\item It's just someone else's computer---lots of them
\lecture{There is no cloud---it's just someone else's computer. Lots
of them; on demand.}
\item ``Unweb''
\item Difference: elasticity---servers/resources brought online only
when needed
\lecture{The difference between the quote-unquote ``cloud'' versus
normal servers is that they are what is called ``elastic'',
in that you bring new servers and resources online as needed,
and get rid of them when they're not. But otherwise---it's
the same damn thing!}
\item We can't talk about freedoms using terms that cloud understanding
\begin{itemize}
\item Better term---the ``fog''
\end{itemize}
\lecture{Don't talk about the ``cloud'', because if you speak in such
confusing and mysterious terms, then we can't even
\emph{begin} to explain how you might exercise your freedoms
on the web, because we first have to explain our way
\emph{out} of the cloud. We may as well call it the
``fog''!}
\end{itemize}
\end{frame}
\begin{frame}{Anatomy of a Client-Side Web Application}
\begin{frame}{\{Desktop,Web\} Software}
\begin{itemize}
\item Cannot unweb proprietary web applications
\item<1-> To regain control, must host it yourself
\item<1-> This means running the entire stack (server and client) on
your own computer
\lecture{Regaining control of our computing online means being able to
run the entire software stack---both server and client---on
our own computers.}
\item<2-> ``Unweb''
\lecture{I call this ``unwebbing'', because you are eliminating your
reliance on the Web to run the software, and treating it more
like a desktop application.}
\end{itemize}
\end{frame}
\begin{frame}{Unwebbing}
\begin{itemize}[<+->]
\item Cannot unweb proprietary services without replacements
\lecture{We first need to recognize that we're not going to be able to
unweb proprietary services without a lot of effort. Even
though we might be able to run the client ourselves---because
it's served to us---the server software will need to be
written by us, because they're not going to give it to us.}
\item Cannot unweb a partially free stack
\begin{itemize}
\item Webserver
\item Programs/scripts that it runs to generate content
\item Programs/scripts that it runs to generate output
\item Script dependencies
\item Client
\end{itemize}
\lecture{We also can't unweb a \emph{partially free} stack---for
example, if the client JavaScript is free, that doesn't help
us, because we still can't host the server ourselves, which
robs us of our freedom to do our own computing. We need the
whole stack to be free---that means the webserver, any
output-generating software that it might run, any
\emph{dependencies} for those programs, and then finally the
client. So if your server runs an external program like
Imagemagick to process images, then that program must too be
free so that we can run it. Fortunately, Imagemagick is.}
\end{itemize}
\end{frame}
\begin{frame}{The Affero GPL Doesn't Solve All Problems}
\begin{itemize}
\item Requires that, if users can access a \emph{modified} version of
the program over a network, that they must have access to the
corresponding source code
\item<1-> Requires that, if users can access a \emph{modified} version
of the program over a network, that they must have access to
the corresponding source code
\item But this only helps a little bit---even if you have the source
code, you can't modify it on the server that's using it
\item<1-> But this only helps a little bit---even if you have the source
code, you can't modify it on the server that's using it
\item The AGPL can be circumvented using a pipeline (where practical)
\lecture{Some point the AGPL as a solution---but it's not. Even if
you have the changes that they made to the server software,
you still can't change the code running on their servers---you
need to host it yourself, and to do so, you need a full
stack. And it's not unethical to write software for your
personal use that you don't distribute, so that full stack
might not be available.}
\item Doesn't cover works that the AGPL'd program might invoke
externally
\item<2-> The AGPL can be circumvented using a pipeline (where
practical)
\item<2-> Doesn't cover works that the AGPL'd program might invoke
externally
\lecture{The AGPL also doesn't cover other programs invoked
externally, or as part of a pipeline.}
\end{itemize}
\end{frame}
\begin{frame}[c]
\begin{center}
You depend on the author to make a faithful effort
\end{center}
\end{frame}
\begin{frame}{Plea to Web Developers}
\begin{itemize}
\item Abstract storage and all network calls
\item User-configurable storage and network options
\item Liberate webserver and all server-side programs it runs
\item No non-free server dependencies (linked or not)
\item Sane configuration defaults and examples!
\end{itemize}
\begin{frame}{Truly Unwebbed}
\begin{enumerate}
\item Download unwebbed package
\item Invoke unwebbed program {\tt ./foo}
\item Package creates an isolated environment (possibly with no network
access)
\item Package mounts persistent storage
\item Package starts all necessary services
\item Package invokes client (e.g. web browser, possibly in ``app''
mode)
\item Program terminates
\item All services are stopped
\item Environment is destroyed (but not persistent storage)
\end{enumerate}
\lecture{If this concept sounds familiar, that's because it is---I'm
essentially describing what's called a ``container'', which is a
common virtualization technique. In fact, this is one that would
go well with Qubes OS, since it handles persistent storage and
X11 programs in precisely this scenario. But even if we didn't
go the route of virtualization---even if the unwebbed package
just ran services in the same environment like a normal
program---we would still benefit greatly.}
\end{frame}
%% section on the client?
\begin{frame}
\begin{center}
\only<1>{Web application works just as desktop program}
\only<1>{Web software works just as desktop software}
\only<2>{End Goal: Just Run {\tt ./foo}}
\end{center}
\lecture{That web software works just like software on the desktop. The
end goal? Just run foo.}
\end{frame}
%%%=== END TIMEBLOCK Nm ==============================================