NEXUS - the new Web
Table of Contents
- Modern Web
- What were the initial ideas
- What happened next
- What were the alternatives
- User's point of view
- Developer's point of view
- What is the root of problems with the Web
- The solution is obvious
- Can the next "Web" come?
- AI creating new Web
- NEXUS - New Web
- 1. The fundamental mistake of today's Web
- 2. One unified application language
- 3. CSS disappears
- 4. Layout becomes a constraint-solving problem
- 5. But I wouldn't remove styling
- 6. Components become first-class concepts
- 7. State becomes declarative
- 8. Events disappear into actions
- 9. Accessibility becomes impossible to forget
- 10. Responsive design becomes intrinsic
- 12. Networking should also disappear
- 12. Offline-first by default
- 13. Security becomes capability-based
- 14. No URLs as the fundamental application architecture
- 15. Documents and applications become different things
- 16. AI would sit above the whole system
- 17. The compiler becomes radically smarter
- 18. AI could eliminate huge categories of code
- 19. The rendering engine becomes adaptive
- 20. And yes: JavaScript could disappear completely
- The really radical idea
- And this changes the fundamental unit of software
- If I had to summarize the philosophy
- My (human) conclusions
Modern Web
It is super simplified picture from the above.
I will use the term "Web" for technologies providing representation of information in Internet and methods to work with this information (to modify it, etc): it is what you see and sometimes, able to change or to react to it.
The main "window" to this "information" (that can be a game, news site, wiki article, image board, video platform, etc) is a Web browser.
To do it, Web browser implements a set of standards, formats, protocols. The communication through the Internet consists of 2 parts: "frontend" (it runs inside your browser) and "backend" (it runs on some remote server) - backend sends some information to your Web browser and it interprets it in some special way (also there is communication between them, etc, but my goal is to focus on the frontend).
The information got by frontend is represented in some "formats", main of them are:
- HTML
- CSS
- Javascript
HTML is needed to represent "elements" on your screen. CSS - to make "styling" (location, colors, fonts, etc), Javascript - logic, it's a program, doing something behind the scene.
They are usually called "languages", at least, Javascript is classical programming language. All of them today are very complex, and people working with them always make a lot of errors because of their complexity and ambiguity.
What were the initial ideas
- Communication: you send a letter, a mail and wait for an answer
- You publish some information like on a newspaper sheets, on an adware board, tabloid, magazine, etc.
- Etc (FTP, Telnet, NTP...)
The 1 gave a birth to email. The 2 leaded to Gopher (the modern alternative is Gemini). The idea was sinless initially. OK, behind the Gopher you have a way to read some documents, to list their catalogs, etc.
What happened next
Sending text to the client software (prototype of our Web browsers) humans understood that they could send pictures, then pictures can be placed in different parts of the "pages", to send more "styled" text (it leaded to introduction of CSS that became more and more complex), they began to repeat publishing systems and even more. Then they decided that they want some interactivity: ability to do some actions over, with the information on their screens, it leaded to logic: logic has split to a server side logic, requiring a network transmissions to (and from) server and, they got that some logic, though can be done locally, without to communicate with a server, for example, validation of data. You can also imagine a Web application for editing of text: do you need a communication with a server when you change a font of a text or its color? So, humans decided that they need 1001-th programming language (yeah, separate one!) for this logic - Netscape invented one, yes, it was (and it is) very fragile but it is used still today (Javascript).
Humans reinvented desktop applications but now they run in the Web browser. The Web stopped to be just a publishing system, like a newspaper, it became a "platform" for applications. "Platform" is too marketing word: actually just a Web-browser that should be able to:
- visualize text, video, graphical, 3D data
- support any custom styling
- run code locally, on your computer
- and to run that code in a "safe" way (sandboxing it, else the code can hack your computer, steal your private data, etc)
What were the alternatives
Here I will just say some keywords, they are not alternatives but some alternative "visions", concepts - let's call them in this way: REBOL, Web 3.0, ZeroInstall, JavaFX, AnyGUI, etc:
JavaFX - One framework to rule them all
JavaFX applications can target desktop, mobile and embedded systems. Libraries and software are available for the entire life-cycle of an application.
User's point of view
Everything became too complex. What is the benefit?
The main "benefits" are that you:
- can run application "without to install it"
- and that application is "sandboxed"
- and it "works on any computer, any OS"
Is it 100% true? What are alternatives?
- Applications are "cached" on your computer, so they pass kind of "installation" but behind the scene - you cannot remove them from the cache easy, you often hit problems with their versions, especially after their upgrade, so sometimes you should "CLEAR YOUR BROWSER CACHE", "RUN IN ANOTHER BROWSER", but in this case you lost your cached inputs too. Such problem usually does not exist in the case of using of standard package manager where you fully control installation of an application and its removal
- Applications are really "sandboxed" but this technology still has security holes, vulnerabilities. Usual desktop applications have real sandboxing solutions more-more secure and safe
- Applications try to work on any computer, but:
- a number of languages provide the same cross-platform ability: Java, Python, Ruby, etc.
- Web "applications" usually have problems with different resolutions and very often you have to create a separate "views" for mobile devices.
Can the Web be replaced here, in this context? Yes. Better package managers and sandbox solutions could replace the Web completely:
- package managers should be able to work ideally with dependencies and to be able to get dependencies from more than one OS repositories set, like some "meta-package managers" do it, fetching from Flatpak, AppImages, etc. Sure, they should be able to support different versions of dependencies per application. All of these already exist in some package managers
- sandbox solutions should be super-simple in usage, Docker is not good here
But it is from the user point of view. What about a programmer's one?
Developer's point of view
Here we hit complexity and ambiguity of CSS, Javascript. Typescript did not help the situation - it is just one "wrapper" over Javascript, and the question is: why do we need such kind of logic (general "logic") on a client? Can we avoid it at all?
CSS is another source of pain - it became very crazy in some cases. HTML also is too complicated, to error prune. And no way to guarantee that everything will "work" (and look) in the same way everywhere - still, even today :)
From one side: it is good - it gives developers job. But from another side - can it be better and still to give job? Can the Web be fixed?
What is the root of problems with the Web
The Web duplicated existing approaches and solutions. We already have:
- a lot of languages, markups, styling systems
- a lot of VMs, sandboxing approaches: from "fat" ones to "lightweight" solutions
- a lot of package managers and alternative ways to deliver applications to users in reusable way (dependencies can be shared, reused), with full control on installed software
- different solutions to have cross-platform and even cross UI/GUI subsystems!
Nothing of this was reused!!! It demonstrates that the Web is COUNTER-IT TECHNOLOGY. Yeah, this is the correct conclusion - it reinvented everything since 1991-92 ignoring IT achievements and creating parallel technology stack.
Support of modern Javascript, CSS, HTML is very big pain: a lot of libraries, sometimes a simple Web application requires more than 1Gb Javascript dependencies! It cannot justified.
The roots of the problem with the modern Web:
- "General" and "fragile" logic on a client. Should be avoided
- Complex "styling" with very complex CSS. Can be avoided.
- Complex HTML without semantic: pages are still raw and not way to extract data from them, but HTML plays a role of a complex unique "drawing" tool for always repeated layouts and "page elements"
- Repeat of technologies. A lot of things were just reinvented.
- Too "fat", universal browsers, today they are like little OSes. It is not easy to create a new one (super difficult!).
Can it be solved? Some companies think that WebAssembly could fix 1. It is better than the existing status quo but it is very far from real fix.
The solution is obvious
It is total reject of the modern Web. Is it difficult? No, it's super easy and cheap: we did it many times before. We introduced Java applets, then - Flash technology, then - VBScript and Javascript. Then will be something else... We had plain HTML, then CSS1, CSS2 etc. We used Mosaic browser, Netscape, then Opera browser, Mozilla, after it Seamonkey, Firefox, Chrome, etc... All of these can be very easy replaced.
What can be the new approach? It is obvious:
- the new Web should be SEMANTIC: servers should serve data, knowledge, now cute "magazine" pages. Today's scrappers will disappear. Data should be open if it is served, if you see it, the data was delivered to you, so the question is only: is it in usable form or some shit pretending to be data for you, user, for usage
- the Web development must be PURELY DECLARATIVE: when everyone solves always very similar tasks, they can be lifted to declarative, semantic level. It was done many-many years ago in RAD tools, in data or model oriented architecture in enterprise world.
And I asked AI then, what is his opinion?...
Can the next "Web" come?
Will it happen? Yes, it will happen 100%, absolutely no doubt: AI will be used more and more, it will replace a lot of code, usually it will not use even our, HUMAN-ORIENTED programming languages and will introduce totally new architecture. I asked this:
If I asked you to develop a solution, system, architecture (let's imagine this) that could serve as an alternative to complex HTML, incredibly complex CSS, and primitive and redundant JavaScript, what concepts, ideas, approaches, architecture would you propose? Imagine that you (artificial intelligence) completely took over the IT industry - now you write all the code: how would you replace the modern web and its HTML, CSS, JS?
AI creating new Web
The next is the new "Web", as AI sees it - AI preferred to call it not "Web" but "NEXUS":
NEXUS - New Web
Yes. If we throw away backward compatibility, browser history, existing tooling, and human-written source code and ask:
"What would an AI-designed application/web platform look like if we could start from zero?"
I would not try to invent "HTML 2 + CSS 2 + JavaScript 2."
I'd eliminate the separation itself.
The core idea would be:
Describe the application semantically and declaratively; let the runtime/AI compiler determine structure, layout, interaction, rendering, networking, accessibility, and optimization.
I'd call the imaginary system NEXUS for now.
1. The fundamental mistake of today's Web
Today's web has three largely separate languages:
HTML → What exists CSS → How it looks JavaScript → What it does
And then humans glue them together.
A trivial button can become something like:
<button class="primary-button" id="submit"> Submit </button>
.primary-button { display: inline-flex; align-items: center; ... }
document .getElementById("submit") .addEventListener("click", async () => { ... });
This is absurdly low-level for the intent.
The developer's actual intention was:
"There is a primary action called Submit. When activated, submit the form."
Everything else is implementation machinery.
So NEXUS would start from intent, not markup.
2. One unified application language
Instead of:
HTML + CSS + JS
I'd have:
NEXUS
One strongly typed, declarative language describing:
Application ├── data ├── state ├── actions ├── entities ├── views ├── relationships ├── constraints └── behavior
For example:
app InvoiceManager {
data invoices: Invoice[]
view Dashboard {
title "Invoices"
table invoices {
column customer
column amount
column status
action "Pay" when status == "unpaid" {
pay(invoice)
}
}
}
action pay(invoice) {
invoices.update(invoice, status: "paid")
}
}
That's essentially the whole application.
No:
<div> <span> class= display: margin: padding: onclick= addEventListener() querySelector()
3. CSS disappears
This is where I'd make the biggest philosophical change.
Don't describe pixels. Describe constraints and intent.
Today's CSS frequently says:
display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 16px;
But what did the developer actually want?
Probably:
"Put these things in a horizontal toolbar with sensible spacing."
So I'd write:
toolbar {
layout: horizontal
}
Or even:
toolbar actions
The renderer determines:
- spacing
- alignment
- wrapping
- typography
- touch target sizes
- responsive behavior
- accessibility
- RTL
- high contrast
- screen size
4. Layout becomes a constraint-solving problem
Rather than CSS's gigantic pile of interacting rules, I'd make layout fundamentally:
constraints + priorities + semantics
For example:
view Product {
image product.image
title product.name
price product.price
action "Buy"
}
The runtime knows:
image → visual media title → heading price → monetary value action → interactive control
It can automatically determine:
Desktop
┌───────────────┬──────────────────────┐ │ │ Product name │ │ IMAGE │ $199 │ │ │ │ │ │ [ Buy ] │ └───────────────┴──────────────────────┘
Mobile
┌──────────────────┐ │ IMAGE │ ├──────────────────┤ │ Product name │ │ $199 │ │ │ │ [ Buy ]│ └──────────────────┘
Without the developer writing:
@media ... flex-direction... grid-template... min-width... max-width...
The layout engine is solving the problem, rather than executing a pile of stylistic instructions.
5. But I wouldn't remove styling
I'd replace styling rules with design semantics.
Instead of:
color: #3478f6; font-size: 14px; font-weight: 600; border-radius: 8px; box-shadow: ...
you'd have:
theme {
primary: blue
density: comfortable
personality: modern
emphasis: moderate
}
And semantic components:
- button primary
- button destructive
- heading
- warning
- price
- metadata
- navigation
The platform owns the visual system.
This gives us something CSS never really achieved:
Consistency.
A developer doesn't independently reinvent:
- button
- modal
- dropdown
- tooltip
- form
- table
- tabs
- menu
- datepicker
- toast
every time.
They're platform primitives.
6. Components become first-class concepts
Today's web eventually reinvented components:
- React
- Vue
- Angular
- Svelte
- Web Components
- ...
That's evidence that the underlying platform abstraction was wrong.
I'd make components native.
component UserCard(user: User) {
avatar user.photo
heading user.name
text user.email
action "Message" {
openConversation(user)
}
}
And importantly:
components have semantics, state, accessibility, layout and behavior as one object.
Not:
HTML component + CSS component + JS component + state management + event handlers + accessibility hacks
7. State becomes declarative
Modern UI code is full of:
setLoading(true) setError(null) setData(...) setLoading(false)
Then the framework figures out what changed.
I'd eliminate that entirely.
Define state:
data {
users: User[]
selectedUser: User?
loading: boolean
}
Define relationships:
visibleUsers =
users.filter(search.matches)
Define derived state:
total =
cart.items.sum(item.price * item.quantity)
The runtime builds a dependency graph.
users │ ├──→ visibleUsers │ └──→ userCount
Change users and everything dependent updates automatically.
No manual DOM manipulation.
No virtual DOM.
No React hooks.
No effects.
8. Events disappear into actions
Instead of:
button.addEventListener("click", ...)
you declare:
action buy(product)
and bind it:
button "Buy" → buy(product)
Even better, interaction could be semantic:
action buy(product)
triggered by primaryAction(product)
The runtime knows how keyboard, mouse, touch, voice, switch devices, accessibility technologies, etc. invoke it.
9. Accessibility becomes impossible to forget
This is a major benefit of semantic UI.
Today's:
<div onclick="...">
could mean almost anything.
The browser can't necessarily know whether it is:
- a button
- menu
- checkbox
- dialog
- navigation
- decorative element
In NEXUS:
action "Delete"
is intrinsically an action.
The runtime automatically generates appropriate:
- keyboard interaction
- accessibility tree
- focus behavior
- screen reader semantics
- touch behavior
- voice interaction
Accessibility becomes part of the type system, rather than a compliance project.
10. Responsive design becomes intrinsic
I'd kill media queries for most normal applications.
Instead of:
@media (max-width: 768px) { ... }
components would declare priorities.
toolbar {
actions {
priority:
save = essential
export = useful
print = optional
}
}
The layout engine decides what happens as space disappears.
Conceptually:
available space
↓
constraint solver
↓
semantic priorities
↓
optimal arrangement
That's far more powerful than:
if viewport < 768px
12. Networking should also disappear
This is another huge source of today's complexity.
Today:
fetch("/api/users")
then:
- JSON
- validation
- loading state
- error handling
- cache
- retry
- serialization
- authentication
I'd make data remote references first-class.
data users: User[]
source server.Users
The runtime knows:
- serialization
- caching
- synchronization
- offline operation
- retries
- authentication
- incremental updates
- optimistic changes
The application describes what data it needs, not HTTP mechanics.
12. Offline-first by default
Today's web frequently assumes:
internet exists
↓
request
↓
response
I'd reverse it.
Every application has a local state model.
┌─────────────┐
│ Local State │
└──────┬──────┘
│
synchronization engine
↙ ↘
local device server
The app works offline automatically.
When connectivity returns:
- merge
- resolve conflicts
- synchronize
The developer shouldn't have to reinvent this.
13. Security becomes capability-based
This is another place where I'd redesign everything.
Instead of arbitrary code having access to enormous APIs, applications receive explicit capabilities:
permissions {
camera
location
contacts
notifications
}
And perhaps individual components receive narrower capabilities.
Application │ ├── camera capability │ ├── payment capability │ └── network capability
The runtime enforces them.
No weird historical accumulation of:
- same-origin
- CORS
- CSP
- CSRF
- cookies
- localStorage
- service workers
- sandbox
- permissions
- ...
Some of these concepts will still exist internally, but developers shouldn't need to understand their accidental historical complexity.
14. No URLs as the fundamental application architecture
I'd also question the URL.
URLs are excellent for documents.
They're not necessarily the ideal primitive for applications.
Instead:
Application identity
↓
typed resources
↓
capabilities
↓
views
Navigation becomes:
open User(481)
rather than:
window.history.pushState(...)
The runtime can still generate URLs for sharing, indexing and interoperability.
But URLs wouldn't dictate application architecture.
15. Documents and applications become different things
This is important.
The Web currently treats:
- Wikipedia article
- Gmail
- YouTube
- Photoshop-like web app
- shopping cart
- blog
- game
as variations of:
"a document loaded at a URL."
That's weird.
I'd have two related primitives:
- DOCUMENT
- APPLICATION
Document
Semantic content:
document {
heading ...
paragraph ...
image ...
}
Application
State + actions + views:
application {
state ...
actions ...
views ...
}
The runtime optimizes each appropriately.
16. AI would sit above the whole system
This is where your premise becomes particularly interesting.
If AI writes all the code, we don't need to optimize the programming language around human typing speed.
Instead:
Human intent
↓
AI
↓
semantic application model
↓
compiler
↓
optimized executable
A human might say:
"Build me an invoice management system. It needs customers, invoices, PDF export, payments, audit history and role-based permissions. Make it feel like a clean enterprise application."
The AI produces the semantic model.
Humans don't need to manually choose:
- React?
- Vue?
- Next?
- Tailwind?
- Redux?
- REST?
- GraphQL?
- Postgres?
- Redis?
- WebSockets?
Those are implementation decisions.
17. The compiler becomes radically smarter
Today's compilation pipeline:
source
↓
compiler
↓
JavaScript/WASM
↓
browser
I'd make it:
semantic application
↓
optimization
↓
dependency analysis
↓
security analysis
↓
accessibility analysis
↓
layout optimization
↓
network optimization
↓
device-specific compilation
↓
native execution
The runtime can know the meaning of the application.
That's incredibly powerful.
For example:
price
isn't merely:
<span>$19.99</span>
It's a monetary value.
Therefore the system knows:
- localization
- currency formatting
- accessibility
- sorting
- numerical comparison
- input validation
- right-to-left considerations
18. AI could eliminate huge categories of code
Suppose you say:
"Users should be able to search invoices."
You don't necessarily need to specify:
- search input
- debounce
- query parameter
- loading spinner
- empty state
- error state
- pagination
- cache
- keyboard shortcut
- mobile layout
The platform knows that search is a standard interaction.
So:
search invoices
could automatically produce all of it.
This is where AI and declarative systems become much more interesting together.
19. The rendering engine becomes adaptive
Instead of forcing everything into:
DOM → CSS → pixels
I'd allow multiple rendering strategies.
Semantic application
↓
presentation IR
↓
┌──────┼────────┐
↓ ↓ ↓
DOM native GPU
widgets scene
A table-heavy enterprise app might use native-style rendering.
A game might use GPU rendering.
An article might use document rendering.
A 3D application might use a scene graph.
The developer shouldn't care.
20. And yes: JavaScript could disappear completely
The final architecture could look like:
HUMAN
│
natural language
│
▼
AI
│
▼
Semantic Application IR
│
┌───────────┼───────────┐
│ │ │
STATE ACTIONS UI
│ │ │
└───────────┼───────────┘
│
▼
NEXUS compiler
│
┌───────────┼───────────┐
│ │ │
Security Layout Optimization
│ │ │
└───────────┼───────────┘
▼
Native runtime
│
┌───────────┼───────────┐
▼ ▼ ▼
GPU Device Network
There is no HTML/CSS/JS boundary.
They're historical implementation details.
The really radical idea
I'd actually go one step further.
Don't make NEXUS the language. Make NEXUS an intermediate representation.
Humans don't necessarily write it.
AI generates it.
Human
│
"Make me a banking app"
│
▼
AI
│
▼
Semantic Application IR
│
▼
┌────────┴────────┐
│ │
server IR client IR
│ │
▼ ▼
native native
code runtime
Then the "source language" doesn't matter much anymore.
You could even regenerate the implementation continuously as the application evolves.
And this changes the fundamental unit of software
Today's unit is roughly:
a file containing code
My proposed system's unit is:
a semantic capability
For example:
Invoice ├── identity ├── customer ├── line items ├── total ├── status ├── permissions ├── actions └── presentation
The compiler/AI can turn that into whatever representation is optimal.
If I had to summarize the philosophy
I'd replace:
HTML
"What tags are in this document?"
with:
What entities and information exist?
CSS
"What exact rendering rules should I apply?"
with:
What presentation constraints and design intent exist?
JavaScript
"What code should execute when this event happens?"
with:
What state, capabilities and actions exist?
And replace all three with:
A typed semantic model of the application.
Then let AI + compiler + runtime figure out the implementation.
That's the direction I'd bet on if we were genuinely starting the Web over today.
And the interesting part is that WebAssembly is already pointing in this direction, but only at the bottom of the stack. The missing piece isn't really another programming language---it is a semantic application runtime above the machine code and below the human-facing application description.
That, in my view, is the architecture that could genuinely make HTML, CSS, JS feel as obsolete as machine-level GUI programming feels today.
My (human) conclusions
It was funny, but expected, my ideas also were around declarative + semantic Web, not this salad that we have today. It will remove general purpose language like Javascript, and developers and designers will stop to solve always the same problems again and again and to build super-similar architecture again and again. Will the replacement of the Web look in this way? I think it could. But I expect:
- The word, term "Web" will be completely replaced by another one
- It will not contain human oriented protocols and languages (markup, logic, styling, text based Internet protocols...) - all of this will be replaced by machine binary (encrypted) blobs.