Lecture reading copy

Web development — past, present, and possible futures

Revisit the slides, follow the sources, and keep a copy.

Opening · 1/89

Web development: past, present, and possible futures

How do we organize, connect, and use knowledge?

Explore the web’s history and possible futures while we build an application together.

Juho Vepsäläinen · 16.9.26

Opening · 2/89

Today’s route

  1. Past — Finding knowledge; documents, links and native forms
  2. Present — Browser interaction; AJAX and shared state
  3. Future — What people might delegate to agents
  4. References — Sources and further reading

Opening · 3/89

Join the live lecture

Scan to open https://live.scalableweb.dev/

live.scalableweb.dev

Keep this page open for votes and word clouds. No account needed.

Opening · 4/89

Practice vote: which drink would you pick?

Lecture activity · submissions are closed in this reading copy.

Opening · 5/89

Practice word cloud: name a place you would like to visit

Lecture activity · submissions are closed in this reading copy.

Enter one place per line on live.scalableweb.dev.

Use 1–3 words per idea, up to 32 characters. Submit up to five ideas together.

Opening · 6/89

One seminar app, three stages

We’ll build an app to help someone decide whether to attend SDLCAI, a seminar about AI in software development.

  1. Document: find the seminar essentials and follow source links.
  2. Interactive app: submit preferences and see shared results.
  3. Generated view: adapt the information to a chosen priority.

Opening · 7/89

When deciding whether to attend a seminar, what information do you need first?

Lecture activity · submissions are closed in this reading copy.

Word cloud

On live.scalableweb.dev, enter one idea per line.

Use 1–3 words per idea, up to 32 characters. Submit up to five ideas together.

Opening · 8/89

Which visual theme should shape our app?

Lecture activity · submissions are closed in this reading copy.

Opening · 9/89

Build · Create the seminar document

Live demonstration · implementation instructions omitted from this reading copy.

Past · 10/89

Past

Finding and connecting knowledge

Past · 11/89

Otlet: organizing knowledge (1895)

Catalogue drawers at the Mundaneum in Mons, photographed in 2011

The Universal Bibliographic Repertory: a shared catalogue of publications, organized for retrieval.

[1] [6] Mundaneum · Photo: fdecomite, 2011 · CC BY 2.0

Past · 12/89

Bush: Memex and associative trails (1945)

Conceptual sketch of the proposed Memex desk with side-by-side displays

Memex was a proposal: preserve an associative trail between records, rather than only filing each record in a category.

As We May Think (1945)

[2] [7] Memex sketch, c. 1945 · Computer History Museum

Past · 13/89

A research trail is more than a folder

flowchart LR
 Question --> Article
 Article -->|reference| Earlier[Earlier study]
 Earlier -->|association| Example[Example from another field]

Bush: As We May Think (1945)

[2] Bush, 1945 · Teaching diagram

Past · 14/89

Nelson: hypertext and Xanadu (1965)

Nelson’s diagram showing connections between parallel sequences of text

Hypertext supports non-sequential reading; Xanadu also pursued visible connections and reuse tied to origins.

A File Structure for the Complex, the Changing and the Indeterminate (1965)

[3] [8] Nelson, 1965 · Diagram reproduced 2000

Past · 15/89

Engelbart: the NLS demonstration (1968)

Doug Engelbart speaking beside a shared screen during his 1968 demonstration

The demonstration combined linked information and shared work: augment people’s ability to solve problems together.

Augmenting Human Intellect: A Conceptual Framework (1962)

[4] [9] NLS, 1968 · Doug Engelbart Institute

Past · 16/89

CERN: one filing tree is not enough (1989)

Projects change, people leave, and information is spread across incompatible systems.

A person can belong to several projects; a document can describe several systems. Where should each record go?

[5] © Tim Berners-Lee, 1989/1990 · W3C archive

Past · 17/89

CERN: finding shared knowledge (1989)

Tim Berners-Lee beside a computer at CERN, photographed in 1994

Often, the information has been recorded, it just cannot be found.

Tim Berners-Lee · Information Management: A Proposal

His proposal: follow links between documents, including documents on different servers.

Past · 18/89

WorldWideWeb browser-editor (1990)

WorldWideWeb browser-editor on NeXT: document windows and a link-creation menu, screenshot from 1993

The browser also edited documents and created links: authoring and reading belonged in the same tool.

[12] Berners-Lee / W3C · Screenshot, 1993

Past · 19/89

HTML: headings, paragraphs and links

<h1>Seminar</h1>
<p>Topic, date and location.</p>
<a href="https://www.sdlcai.org/">Seminar details</a>

Seminar

Topic, date and location.

Seminar details

[13] [14] HTML semantics · Teaching example

Past · 20/89

CSS: presentation rules (1996)

Style the same HTML without changing its meaning.

h1 {
  color: navy;
  font-size: 2em;
}

The selector chooses headings; the declarations change how they look.

[15] W3C · CSS1 Recommendation, 17 December 1996

Past · 21/89

JavaScript: behavior in the browser (1995)

Respond to an action and update the current page.

const button = document.querySelector("button");
button.addEventListener("click", () => {
  document.querySelector("h1").textContent = "Welcome!";
});

Changing the page does not by itself save anything on the server.

[16] Wirfs-Brock & Eich · JavaScript: The First 20 Years

Past · 22/89

GeoCities: personal publishing (1994)

Archived GeoCities page from CollegePark Lounge 9002, displayed in a browser

Personal publishing widened who could make a web page, while the hosting platform still controlled its availability.

[17] GeoCities archive · Lialina & Espenschied · Capture 2009

Past · 23/89

Microsoft FrontPage 1.1 (1996)

Microsoft FrontPage 1.1 showing a visual page editor and its View HTML dialog

Edit the page visually; inspect the HTML it produces.

[18] [19] Microsoft FrontPage 1.1 · Screenshot: Web Design Museum

Past · 24/89

Macromedia Dreamweaver (1997)

Macromedia Dreamweaver 1.2 visual editor showing a company profile page and formatting controls

Visual page editing · Dreamweaver 1.2 (1998)

[20] [21] Macromedia · Screenshot: Web Design Museum, Dreamweaver 1.2

Past · 25/89

Check the build · The document

Past · 26/89

Did the document answer your questions?

Find the information you asked for in the app we just inspected.

Which need is met? What is still missing or hard to find?

Past · 27/89

What would you like from the seminar?

Next we will build this survey. After the build, we’ll submit fresh responses and compare the room’s preferences.

Past · 28/89

HTML forms

<form action="/responses" method="post">
  <label for="experience">Experience</label>
  <select id="experience" name="experience" required>
    <option value="">Choose one</option>
    <option value="new">New to the subject</option>
    <option value="some">Some experience</option>
    <option value="regular">Regular use</option>
  </select>
  <button>Send response</button>
</form>

One field from the seminar-interest form.

[22] WHATWG HTML forms · Teaching example

Past · 29/89

Build · Add the seminar-interest form

Live demonstration · implementation instructions omitted from this reading copy.

Past · 30/89

Native form submission · 1/4 Submit

sequenceDiagram
%% focus-after: 0,0
 participant B as Browser
 participant S as Server
 participant D as Database
B->>S: POST /responses
[22] [23] Teaching model · Adapted from Vepsäläinen

Past · 31/89

Native form submission · 2/4 Store

sequenceDiagram
%% focus-after: 1,0
 participant B as Browser
 participant S as Server
 participant D as Database
B->>S: POST /responses
Note over S: Validate input
S->>D: Save response
D-->>S: Response saved
[22] [23] Teaching model · Adapted from Vepsäläinen

Past · 32/89

Native form submission · 3/4 Redirect

sequenceDiagram
%% focus-after: 3,1
 participant B as Browser
 participant S as Server
 participant D as Database
B->>S: POST /responses
Note over S: Validate input
S->>D: Save response
D-->>S: Response saved
S-->>B: 303 redirect to /results
[22] [23] Teaching model · Adapted from Vepsäläinen

Past · 33/89

Native form submission · 4/4 Load results

sequenceDiagram
%% focus-after: 0,1
 participant B as Browser
 participant S as Server
 participant D as Database
 Note over B: Follow the redirect
 B->>S: GET /results
 S->>D: Read aggregate
 D-->>S: Current aggregate
 S-->>B: Complete HTML
 Note over B: Replace the document
[22] [23] Teaching model · Adapted from Vepsäläinen

Past · 34/89

Progressive enhancement (2003)

JavaScript CSS HTML HTMLRead the content and submit the formCSSMake the same content easier to scanJavaScriptUpdate results without navigating

HTML provides the core task: read and submit.

Original presentation: Champeon & Finck, SXSW 2003

[24] Champeon & Finck, 2003 · Onion diagram: teaching adaptation

Past · 35/89

Progressive enhancement (2003)

JavaScript CSS HTML HTMLRead the content and submit the formCSSMake the same content easier to scanJavaScriptUpdate results without navigating

CSS improves presentation; the same HTML still works.

Original presentation: Champeon & Finck, SXSW 2003

[24] Champeon & Finck, 2003 · Onion diagram: teaching adaptation

Past · 36/89

Progressive enhancement (2003)

JavaScript CSS HTML HTMLRead the content and submit the formCSSMake the same content easier to scanJavaScriptUpdate results without navigating

JavaScript improves interaction; the core task remains available.

Original presentation: Champeon & Finck, SXSW 2003

[24] Champeon & Finck, 2003 · Onion diagram: teaching adaptation

Past · 37/89

Submit the survey; inspect confirmation and counts

Past · 38/89

Demo · Remove the outer layers

Compare Full, No JavaScript, and HTML only in this prepared app.

Present · 39/89

Present

Web pages become application-like experiences.

Paraphrase · [25] Jesse James Garrett (2005)

Present · 40/89

Which interaction improvement should we prioritize?

Lecture activity · submissions are closed in this reading copy.

Present · 41/89

Build · Make the room interactive

Live demonstration · implementation instructions omitted from this reading copy.

Present · 42/89

AJAX: requests without navigation (1999/2005)

sequenceDiagram
 Browser->>Server: JavaScript sends a request
 Server-->>Browser: Response data
 Note over Browser: Update the current page

1999: XMLHTTP ships with Internet Explorer 5.

2005: Jesse James Garrett names the approach “Ajax”.

[25] [26] [27] Garrett; Hopmann; Microsoft · Teaching diagram

Present · 43/89

AJAX: JSON response · 1/4 Request

sequenceDiagram
%% focus-after: 0,0
 participant B as Browser
 participant S as Server
 participant D as Stored responses
Note over B: JavaScript handles submit
B->>S: POST /responses
[22] [23] Teaching model · Adapted from Vepsäläinen

Present · 44/89

AJAX: JSON response · 2/4 Store

sequenceDiagram
%% focus-after: 1,1
 participant B as Browser
 participant S as Server
 participant D as Stored responses
Note over B: JavaScript handles submit
B->>S: POST /responses
S->>S: Validate input
S->>D: Save response
D-->>S: Updated aggregate
[22] [23] Teaching model · Adapted from Vepsäläinen

Present · 45/89

AJAX: JSON response · 3/4 Respond

sequenceDiagram
%% focus-after: 4,1
 participant B as Browser
 participant S as Server
 participant D as Stored responses
Note over B: JavaScript handles submit
B->>S: POST /responses
S->>S: Validate input
S->>D: Save response
D-->>S: Updated aggregate
S-->>B: JSON aggregate
[22] [23] Teaching model · Adapted from Vepsäläinen

Present · 46/89

AJAX: JSON response · 4/4 Update

sequenceDiagram
%% focus-after: 5,1
 participant B as Browser
 participant S as Server
 participant D as Stored responses
Note over B: JavaScript handles submit
B->>S: POST /responses
S->>S: Validate input
S->>D: Save response
D-->>S: Updated aggregate
S-->>B: JSON aggregate
Note over B: JavaScript renders the results region
[22] [23] Teaching model · Adapted from Vepsäläinen

Present · 47/89

Outlook Web Access (2000)

Outlook Web Access for Exchange 2000 in Internet Explorer, from a 2002 tutorial

Mail interactions within a browser application, using dynamic HTML and XMLHTTP.

[26] [28] Hopmann · Screenshot: ServerWatch, 2002; interface © Microsoft

Present · 48/89

Gmail (2004)

Gmail’s original 2004 inbox, published by Google

A dynamic mail interface helped popularize AJAX.

[29] [30] Buchheit · Screenshot: Google, original 2004 interface

Present · 49/89

Initial rendering: server or browser

flowchart LR
 subgraph SSR[SSR]
 S[Server renders HTML] --> B[Browser displays HTML]
 end
 subgraph CSR[CSR]
 J[Shell and JavaScript] --> C[Browser fetches data and renders]
 end
[23] Lecture adaptation · Web architecture lens

Present · 50/89

Serving cached HTML

sequenceDiagram
 participant B as Browser
 participant C as Cache
 participant S as Server
 B->>C: GET /seminar
 alt Fresh cached HTML
 C-->>B: HTML response
 else Missing or expired
 C->>S: GET /seminar
 S-->>C: Rendered HTML
 Note over C: Store if cache policy permits
 C-->>B: HTML response
 end
[23] Lecture adaptation · Web architecture lens

Present · 51/89

Visible HTML is not the same as initialized JavaScript

Native links and forms can work before JavaScript initializes.

For a JavaScript-dependent control, the HTML may be visible before the control responds.

In our app, identify which controls still work while scripts load.

[31] Vepsäläinen · Client activation teaching model

Present · 52/89

Organizing browser applications (2012–2016)

Tool What it helps organize
AngularJS 1.0 · 2012 Templates and two-way data binding
React · 2013 Component-based user interfaces
Vue · 2014 Reactive interfaces and components
Angular 2 · 2016 Components, routing and forms

The browser manages interface state: unsent input, feedback and displayed results.

Present · 53/89

Change a preference; watch the second view

Change a seminar preference. Watch its aggregate update.

Present · 54/89

Updating a second browser

sequenceDiagram
 participant A as Browser A
 participant S as Server
 participant D as Stored responses
 participant B as Browser B
 A->>S: Submit vote
 S->>D: Save response
 S-->>A: Updated result
 B->>S: Request current aggregate
 S->>D: Read votes
 S-->>B: Current aggregate
 Note over B: Render updated result
[22] [23] Teaching model · Adapted from Vepsäläinen

Present · 55/89

Check the build · Two views, one result

Present · 56/89

Did the interaction become easier?

Start with the test chosen by the priority vote. State expected → observed → passed or unresolved.

Then compare the form with the approved needs below. Name one remaining need and the next test.

Present · 57/89

A person can use this. What would another client need to understand it?

Inspect in pairs

Pick one action in our app. Identify its required input and how a client can tell it succeeded.

Report one detail that is explicit—and one the client would have to guess.

[36] Petros et al., 2025 · Discussion

Future · 58/89

Future

Agents and interfaces composed for a task

[37] Lecture hypothesis summary, 2026

Future · 59/89

Where I think we’re headed

[37] Lecture hypothesis summary, 2026

Future · 60/89

Semantic Web agents (2001)

flowchart LR
 Need[Arrange appointments] --> Agent[Software agent]
 Providers[Providers and availability] --> Agent
 Constraints[Preferences and schedules] --> Agent
 Agent --> Plan[Proposed plan]
[38] Berners-Lee, Hendler & Lassila, 2001 · Teaching diagram

Future · 61/89

What should the generated seminar view prioritize?

Lecture activity · submissions are closed in this reading copy.

Future · 62/89

Before composition: define the boundary

A context receipt records the inputs, destination, revision and result.

Context receipt · Lecture proposal

Future · 63/89

From selected inputs to a generated view

flowchart LR
 F[Reviewed seminar facts] --> C[Frozen context and receipt]
 R[Predefined-field counts] --> C
 C --> M[Runtime model]
 M --> V[Validate output and allowed actions]
 V -->|Valid| G[Generated view]
 V -->|Invalid or unavailable| B[Fixed fallback]

Both views must answer the same task using the same source revision.

Context receipt · Teaching diagram

Future · 64/89

Build · Compose a constrained interface

Live demonstration · implementation instructions omitted from this reading copy.

Future · 65/89

Provider-designed and agent-composed interfaces

flowchart LR
 C[Shared capability] --> P[Provider-designed interface]
 C --> A[Agent-composed interface]
 P --> H[Human use]
 A --> H

These can coexist. A generated view alone does not show that an agent can safely execute service actions.

[37] Lecture hypothesis summary, 2026

Future · 66/89

Which application type should we examine?

Lecture activity · submissions are closed in this reading copy.

Word cloud

On live.scalableweb.dev, enter one idea per line.

Use 1–3 words per idea, up to 32 characters. Submit up to five ideas together.

[37] Lecture hypothesis summary, 2026

Future · 67/89

For this application, which interface approach fits?

Choose one approved application type below and name a specific user task.

A · Stable: the same controls and structure each time.

B · Generated: a view composed for the task.

C · Mixed: stable core actions with generated supporting views.

Report: application + task → A, B or C → reason.

[37] Lecture hypothesis summary, 2026

Future · 68/89

Discovering available actions

Question In our seminar app
What is this? Seminar information and its source
What can I do? Choose a priority; request a view
What input is valid? The predefined choices
What happened? A result, rejection or unknown outcome

Future · 69/89

Human accessibility and agent interaction

Shared design Human accessibility Agent use
Named controls Identify purpose Identify action
Explicit inputs Understand choices Construct valid input
Exposed state Perceive feedback Check the outcome
Stable structure Navigate consistently Locate relevant controls

Future · 70/89

Accessible to people does not mean authorized for agents

A clear action can still require permission.

A machine-readable interface can still exclude people.

Future · 71/89

Describe an action once

For submit seminar interests, describe:

Shared semantics may help different clients. They do not by themselves guarantee accessibility or reliable agent action.

[37] Lecture hypothesis summary, 2026

Future · 72/89

Pick one generated claim; find its source

Check the evidence

Pick one claim in the generated output. Find the input that supports it in the context receipt.

Report the claim and its evidence—or say what evidence is missing.

Context receipt · Lecture proposal

Future · 73/89

Check the build · The generated interface

Closing · 74/89

Recap · What changes, what remains

Across all three: start with people’s needs, then test whether the implementation meets them.

Closing · 75/89

What we built and tested

Stage What we added What we checked
Past Seminar information and a native form Reading, links and submission without JavaScript
Present Browser interaction and shared results In-place updates, unsent choices and shared results
Future A generated seminar view Source inputs, the chosen priority and a fallback

Closing · 76/89

Where could we take this next?

Closing · 77/89

What our audience evidence suggests next

Return to the needs we collected at the start: what did our app address, and what remains?

Closing · 78/89

Join us at SDLCAI

Scan to open SDLCAI student registration

Explore AI across the software lifecycle with researchers and practitioners.

13 October 2026 · Marsio, Aalto University, Espoo

Free student tickets (limited): scan the QR or visit bit.ly/4wRkjCa

SDLCAI · sdlcai.org · Student link supplied by the lecturer

Closing · 79/89

Questions?

Keep the slides and explore the references:

live.scalableweb.dev/slides

References · 80/89

References

Sources and further reading

References · 81/89

References · 1–5

References · 82/89

References · 6–10

References · 83/89

References · 11–15

References · 84/89

References · 16–20

References · 85/89

References · 21–25

References · 86/89

References · 26–30

References · 87/89

References · 31–34

References · 88/89

References · 35–38

References · 89/89

References · 39–42