1
0
Fork 0

timeblock (intro): refinement

This is still a bit too long; eating up 8m on an intro doesn't leave much
time for everything else!
master
Mike Gerwitz 2016-03-14 23:48:15 -04:00
parent 00ba8b29e9
commit 83966c982c
No known key found for this signature in database
GPG Key ID: F22BB8158EE30EAB
1 changed files with 54 additions and 83 deletions

137
talk.tex
View File

@ -37,22 +37,21 @@
%% TODO mention DRM in HTML5
%%%=== BEGIN TIMEBLOCK Nm ==============================================
%%%=== BEGIN TIMEBLOCK 8m ==============================================
\begin{frame}
\titlepage
\lecture{I'm going to warn everyone upfront---this is a~talk about
problems. Many of them are fundamental problems that don't quite
have a~solution yet. Others are problems that you can address
immediately, both as a user and as a web developer. I hope to
provide perspective that sufficiently shocks and motivates; to
make a difference, both big and small.}
\lecture{I'm going depress everyone upfront---this is a~talk about
problems. Problems that are fundamental to the Web today, and
don't have a trivial solution. So who am I to tell you what is
and is not a problem with one of the great pillars of modern
life?}
\end{frame}
\begin{frame}{Who am I?}
\lecture{So my name's Mike Gerwitz,}
\lecture{Well, I'm Mike Gerwitz.}
\begin{itemize}
\item Long-time free software hacker and activist
@ -70,25 +69,23 @@
\lecture{I've been involved in web development to at least some capacity}
\item 10+ years of web development
\lecture{for well over ten years. But possibly \emph{just} as
importantly, I've been a \emph{user} of the web for even
longer. Now, I'm 26---I'm not part of the generation that
was swiping at newspapers when they were babies, wondering
why nothing was happening, but I did grow up with the
Internet.}
\lecture{for well over ten years. But possibly just as importantly,
I've been a \emph{user} of the web for even longer. Now, I'm
26---I'm not part of the generation that was swiping at
newspapers when they were babies, wondering why nothing was
happening, but I did grow up with the Internet.}
\begin{itemize}
\item<2-> The Web has \only<2>{changed}\only<3->{{\bf worsened}} a lot
in 10 years
\lecture{And as I'm sure all of you here can attest to---and I'm
really stating the obvious here---the Internet has changed a
\emph{lot} in the past ten years. In fact, it's had a
version change---the so-called ``Web 2.0''! Which, to
\emph{lot} in the past ten, fifteen years. In fact, it's had
a version change---the so-called ``Web 2.0''! Which, to
clarify, is just jargon; there's not actually a version
change.}
\lecture{But I suppose I could phrase this in another way: the
Internet has also \emph{worsened} a lot in the past ten
Web has also \emph{worsened} a lot in the past ten
years. A version bump isn't always an upgrade.}
\end{itemize}
\end{itemize}
@ -122,20 +119,12 @@
\item<4-> Freedom trumps all.
\lecture{\emph{Freedom trumps all.} So we can say that, while Web~2.0
was a \emph{technical} upgrade, it has been a steadily
progressing \emph{downgrade} for users' freedoms.}
was a \emph{technical} upgrade, it has been an alarmingly
progressive \emph{downgrade} for users' freedoms.}
\end{itemize}
\end{frame}
\defverbatim{\gnuhost}{%
\small
\begin{verbatim}
$ host gnu.org
gnu.org has address 208.118.235.148
\end{verbatim}
}
\defverbatim{\gnurequest}{%
\small
\begin{verbatim}
@ -176,62 +165,50 @@
\item<1-> Usually involves a web browser
\lecture{Normally when we talk about the ``Web'', as opposed to the
``Internet'' as a whole, we're referring to something that you
would access using a web browser. That web browser might be
a graphical browser like GNU IceCat, or it might be a
text-mode browser like w3m. But you don't \emph{have} to use
a web browser---you might even use \tt{wget} or \tt{curl}
directly and look at the plain text of the document, or parse
it with a script.}
would access using a web browser. That web browser might be a
graphical browser like GNU IceCat, it might be a text-mode
browser like w3m, or maybe even \tt{wget} or \tt{curl} to
directly and look at the plain text of the document, or parse
it with a script.}
\begin{enumerate}
\item <2-> User enters a URL or clicks on a link
\only<2>{\par(e.g. \url{https://gnu.org/})}
\only<2>{\par(e.g. \url{https://gnu.org/philosophy/free-sw.html})}
\lecture{The user first indicates the resource that they want to
``browse'' to using a URL, which stands for ``Uniform
Resource Locator''; it contains both a protocol and a
hostname. Let's take ``gnu.org'' as an example.}
resource identifier. Let's take ``gnu.org'' as an
example.}
\item<3-> Browser resolves domain to a host IP address (DNS lookup)
\only<3>{\gnuhost}
\lecture{The browser then resolves the domain name---\tt{gnu.org} in
this case---to the IP address of the server hosting the
resource. This is called a DNS---or ``Domain Name
Server''---lookup. The result may be one IP, or it may be
multiple. The easiest way to resolve a hostname on a
GNU/Linux system without worrying about what a DNS record
is, is to use the \tt{host} command. In the case of
\tt{gnu.org}, it resolves to a single IP address.}
\item<4-> For HTTP(S), brower sends HTTP request to host on port
\item<3-> For HTTP(S), brower sends HTTP request to host on port
80/443
\only<4>{\gnurequest}
\lecture{I mentioned a protocol. The beginning of the URL is
usually HTTP or HTTPS; we don't care about others for this
talk. The former transfers data in plaintext whereas the
later is encrypted using SSL. The browser sends an HTTP
request to the host requesting the resource.}
\only<3>{\gnurequest}
\lecture{The beginning of the URL is usually HTTP or HTTPS; we don't
care about others for this talk. The former transfers data
in plaintext whereas the later is encrypted using SSL. The
browser sends an HTTP request to the host requesting the
resource.}
\item<5-> Server responds with resource
\only<5>{\gnuresp}
\item<4-> Server responds with resource
\only<4>{\gnuresp}
\lecture{The server responds. That response might be affirmative,
it might be an error, it might be garbage; let's assume
that it was a successful response.}
\item<6-> Browser recursively loads all resources referenced by
\item<5-> Browser recursively loads all resources referenced by
webpage
\begin{itemize}
\item<6-> Stylesheets, Images, Scripts, etc.
\item<5-> Stylesheets, Images, Scripts, etc.
\end{itemize}
\only<6>{\includegraphics[width=\textwidth]{images/gnu-resources.png}}
\only<5>{\includegraphics[width=\textwidth]{images/gnu-resources.png}}
\lecture{This is the meat of the talk. The browser then recursively
processes all resources referenced by \emph{that}
resource. Most often, these include images, stylesheets,
and scripts.}
\end{enumerate}
\item<7-> Distributed network (``web'') of computers
\item<6-> Distributed network (``web'') of computers
\lecture{So fundamentally, the web is a distributed network of
computers that serve resources. Resources can be anything
from your conventional web page, to a program that runs in
@ -244,16 +221,15 @@
\begin{frame}{Interoperability}
\begin{itemize}
\item<1-> Fundamental building blocks are standardized (W3C)
\lecture{So the Web is composed of many different
things. Technically, you can include anything on the
\lecture{Technically, you can include anything on the
Web---certain formats will just invoke external programs or
trigger a download. But as far as web pages go, they
traditionally consist of HTML}
\begin{itemize}
\item<+-> HTML---Describes the document
\item<2-> HTML---Describes the document
\lecture{which describes the~document, and CSS}
\item<+-> CSS---Describes the document style (appearance)
\item<3-> CSS---Describes the document style (appearance)
\lecture{which describes the~document \emph{style}---how it looks,
what font to render in, the background color, et cetera.}
@ -262,29 +238,30 @@
video. Users can submit information by entering data in
form fields. Most of that falls under the HTML spec.}
\item<+-> HTTP---Communication protocol
\item<4-> HTTP---Communication protocol
\lecture{All of this communication is done using the HTTP
protocol, which defines how the server and client
communicate.}
\lecture{Back in the day, most every reaction to user input
involved loading a new webpage. You're seeing less and
less of that today---many web pages look and behave more
like \emph{software} than documents.}
like \emph{software} than documents. You might hear the
term ``single-page'' programs.}
\item<+-> JavaScript---Embed programs in web browser
\item<5-> JavaScript---Embed programs in web browser
\lecture{The standard way to do this today is with a language
called JavaScript.}
\end{itemize}
\item<5-> Variety of programs and standard tools can communicate with
\item<6-> Variety of programs and standard tools can communicate with
webservers and read documents
\lecture{Given these standards for representing documents, styles,
media, etc---you're free to use whatever software you choose!
Everything is interoperable, on both the server and the
client. And this is incredibly important for user freedom,
and for free software.}
and essential for free software.}
\item<6-> Threatened in the past: Java applets, ActiveX, Flash,
\item<7-> Threatened in the past: Java applets, ActiveX, Flash,
Silverlight, and other proprietary/non-standard software
\lecture{That interoperability has been threatened in the past by
other proprietary systems for embedding software in the
@ -294,9 +271,9 @@
Media Extensions proposal being considered by the W3C which
would effectively introduce DRM as a \emph{standard} for the
Web. We must oppose it, and I encourage you to join us
in protest just across the street tonight at 8:00.}
in protest just outside the conference tonight at 6:45.}
\item<7-> Now the greatest threat is JavaScript
\item<8-> Now the greatest threat is JavaScript
\lecture{But an \emph{existing} standard is now our greatest
threat. JavaScript.}
\end{itemize}
@ -309,15 +286,9 @@
\begin{itemize}
\item<2-> ECMAScript (Standard: ECMA-262; ISO/IEC 16262)
\lecture{Formally, it's ECMAScript, which is the standard defining the
language. Browsers tend to incorporate their own
features---some of which are subsequently incorporated into
the spec---so when we refer to ECMAScript, we're talking
about a core standard that all browsers implementing that
particular version should support. There are other
implementations of ECMAScript, like JScript and ActionScript,
but they're used almost exclusively in proprietary
environments, and you should not use them unless you have a
way of running that code on a fully Free operating system.}
language. But browsers tend to incorporate their own
features beyond the standard, which might subsequently be
adopted.}
\item<3-> Traditionally: Browser-based, client-side scripting language
\lecture{JavaScript started out in the web browser, specifically
@ -361,7 +332,7 @@
\end{itemize}
\end{frame}
%%%=== END TIMEBLOCK Nm ==============================================
%%%=== END TIMEBLOCK 8m ==============================================
%%%=== BEGIN TIMEBLOCK Nm ==============================================