timeblock (unweb): timing and refinement
parent
3800a32e4b
commit
c27de2e53c
109
talk.tex
109
talk.tex
|
@ -1538,7 +1538,7 @@ k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k)
|
|||
|
||||
|
||||
|
||||
%%%=== BEGIN TIMEBLOCK Nm ==============================================
|
||||
%%%=== BEGIN TIMEBLOCK 6m ==============================================
|
||||
|
||||
\begin{frame}
|
||||
\begin{center}
|
||||
|
@ -1554,9 +1554,6 @@ k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k)
|
|||
\end{frame}
|
||||
|
||||
|
||||
%% TODO: What to do with "Shackles as a Service" above?
|
||||
|
||||
|
||||
\begin{frame}{Service as a Software Substitute (SaaSS)}
|
||||
\begin{itemize}
|
||||
\item<1-> Also called ``Software as a Service'' (SaaS)
|
||||
|
@ -1574,8 +1571,8 @@ k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k)
|
|||
computer; nor should you be able to.}
|
||||
\end{itemize}
|
||||
|
||||
\lecture{Now let's be clear---you'll often hear that these services are
|
||||
hosted quote ``in the cloud''.}
|
||||
\lecture{You'll often hear that these services are hosted quote ``in the
|
||||
cloud''.}
|
||||
\end{frame}
|
||||
|
||||
|
||||
|
@ -1589,8 +1586,8 @@ k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k)
|
|||
|
||||
|
||||
\begin{frame}{There Is No Cloud}
|
||||
\begin{itemize}[<+->]
|
||||
\item Talking about the ``cloud'' leads to cloudy judgment
|
||||
\begin{itemize}
|
||||
\item<1-> 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
|
||||
|
@ -1598,21 +1595,21 @@ k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k)
|
|||
magic, providing no explanation of what is \emph{actually}
|
||||
going on.}
|
||||
|
||||
\item It's just someone else's computer---lots of them
|
||||
\item<2-> 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 Difference: elasticity---servers/resources brought online only
|
||||
when needed
|
||||
\item<2-> 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
|
||||
\item<3-> We can't talk about freedoms using terms that cloud understanding
|
||||
\begin{itemize}
|
||||
\item Better term---the ``fog''
|
||||
\item<3-> Better term---the ``fog''
|
||||
\end{itemize}
|
||||
|
||||
\lecture{Don't talk about the ``cloud'', because if you speak in such
|
||||
|
@ -1636,7 +1633,7 @@ k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k)
|
|||
run the entire software stack---both server and client---on
|
||||
our own computers.}
|
||||
|
||||
\item<2-> ``Unweb''
|
||||
\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.}
|
||||
|
@ -1645,20 +1642,13 @@ k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k)
|
|||
|
||||
|
||||
\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<1-> Cannot unweb a partially (or non-) free stack
|
||||
\begin{itemize}
|
||||
\item Webserver
|
||||
\item Programs/scripts that it runs to generate output
|
||||
\item Script dependencies
|
||||
\item Client
|
||||
\item<2-> Webserver
|
||||
\item<2-> Programs/scripts that it runs to generate output
|
||||
\item<2-> Script dependencies
|
||||
\item<2-> Client
|
||||
\end{itemize}
|
||||
|
||||
\lecture{We also can't unweb a \emph{partially free} stack---for
|
||||
|
@ -1669,7 +1659,7 @@ k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k)
|
|||
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
|
||||
Imagemagick to process images, then that program must also be
|
||||
free so that we can run it. Fortunately, Imagemagick is.}
|
||||
\end{itemize}
|
||||
\end{frame}
|
||||
|
@ -1677,23 +1667,20 @@ k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k)
|
|||
|
||||
\begin{frame}{The Affero GPL Doesn't Solve All Problems}
|
||||
\begin{itemize}
|
||||
\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<1-> If users can access a \emph{modified} version of the program
|
||||
over a network, that they must have access to the source code
|
||||
|
||||
\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<1-> But even if you have the source code, you can't modify it on
|
||||
the server that's using it
|
||||
|
||||
\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.}
|
||||
\lecture{Some point to 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.}
|
||||
|
||||
\item<2-> The AGPL can be circumvented using a pipeline (where
|
||||
practical)
|
||||
\item<2-> AGPL'd programs can be used in a pipeline with proprietary
|
||||
programs
|
||||
|
||||
\item<2-> Doesn't cover works that the AGPL'd program might invoke
|
||||
externally
|
||||
|
@ -1706,31 +1693,33 @@ k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k)
|
|||
|
||||
\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)
|
||||
\item<1-> Download unwebbed package
|
||||
\item<2-> Invoke unwebbed program {\tt ./foo}
|
||||
\item<3-> Package creates an isolated environment (possibly with no
|
||||
network access)
|
||||
\item<3-> Package mounts persistent storage
|
||||
\item<3-> Package starts all necessary services
|
||||
\item<3-> Package invokes client (e.g. web browser, possibly in ``app''
|
||||
mode / SSB)
|
||||
\lecture{A client would then be invoked. This will probably be a web
|
||||
browser, but it might be in some sort of ``app'' mode, or
|
||||
might be what's called a single-site-browser, to make it feel
|
||||
more like a desktop program.}
|
||||
\item<4-> Program terminates
|
||||
\item<4-> All services are stopped
|
||||
\item<4-> 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
|
||||
common virtualization technique. In fact, this is a task that
|
||||
would be handled quite well by GNU Guix. 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.}
|
||||
program---the observed program would still be largely the same,
|
||||
if not identical.}
|
||||
\end{frame}
|
||||
|
||||
%% section on the client?
|
||||
|
||||
\begin{frame}
|
||||
\begin{center}
|
||||
\only<1>{Web software works just as desktop software}
|
||||
|
@ -1741,7 +1730,7 @@ k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k)
|
|||
end goal? Just run foo.}
|
||||
\end{frame}
|
||||
|
||||
%%%=== END TIMEBLOCK Nm ==============================================
|
||||
%%%=== END TIMEBLOCK 6m ==============================================
|
||||
|
||||
|
||||
\begin{frame}
|
||||
|
|
Loading…
Reference in New Issue