timeblock (unweb): refine and add truely unwebbed slide
parent
8d948b1afe
commit
00ba8b29e9
155
talk.tex
155
talk.tex
|
@ -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 ==============================================
|
||||
|
|
Loading…
Reference in New Issue