<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Marco Allegretti</title>
    <description>The latest articles on DEV Community by Marco Allegretti (@marcoallegretti).</description>
    <link>https://dev.to/marcoallegretti</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3820308%2Fcf316890-2f53-4b29-95d8-30f8fbe7bf39.png</url>
      <title>DEV Community: Marco Allegretti</title>
      <link>https://dev.to/marcoallegretti</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/marcoallegretti"/>
    <language>en</language>
    <item>
      <title>Building a Deep Fantasy Manager in Rust: Want to join?</title>
      <dc:creator>Marco Allegretti</dc:creator>
      <pubDate>Mon, 16 Mar 2026 21:10:51 +0000</pubDate>
      <link>https://dev.to/marcoallegretti/building-a-deep-fantasy-manager-in-rust-want-to-join-4c3f</link>
      <guid>https://dev.to/marcoallegretti/building-a-deep-fantasy-manager-in-rust-want-to-join-4c3f</guid>
      <description>&lt;p&gt;I’ve been heads-down building Mythic League, a persistent fantasy guild manager.&lt;/p&gt;

&lt;p&gt;The goal is the long-term depth of manager sims like Hattrick / Football Manager, but set in a tactical fantasy world: you run a guild, develop heroes across seasons, play scheduled league matches, and deal with the economic consequences of every decision.&lt;/p&gt;

&lt;p&gt;This is not an “idea” post. The backend, schema, and core simulation loop already run locally end-to-end, and there’s a first-run workflow that takes you from an empty database to scheduled matches, battle processing, and a replay log.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CURRENT STATE (WHAT’S IMPLEMENTED)&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You can do this today in local dev:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Create an account and a guild&lt;/li&gt;
&lt;li&gt;Use a dev-only panel (guarded by DEV_MODE=true) to:

&lt;ul&gt;
&lt;li&gt;seed a world (season, divisions, NPC guilds, missions)&lt;/li&gt;
&lt;li&gt;seed starter heroes&lt;/li&gt;
&lt;li&gt;schedule matches&lt;/li&gt;
&lt;li&gt;enqueue a match into a Redis-backed battle queue&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;

&lt;li&gt;Process matches via a background battle worker&lt;/li&gt;

&lt;li&gt;Persist match results and battle logs in Postgres&lt;/li&gt;

&lt;li&gt;Navigate core UI areas (roster, missions, market, matches, league standings)&lt;/li&gt;

&lt;/ul&gt;

&lt;p&gt;On the persistence/narrative side, these are real tables + queries + endpoints (not a pitch):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Guild Chronicle: chronicle_events table + API endpoint to list events per guild&lt;/li&gt;
&lt;li&gt;Hero Legacy: hero_legacy table for long-lived hero career stats / defining moments&lt;/li&gt;
&lt;li&gt;Hall of Fame: hall_of_fame table + API endpoint&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;THE STACK (ACTUAL REPO STACK)&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Backend: Rust + Axum (HTTP + WebSockets)&lt;/li&gt;
&lt;li&gt;Jobs/workers: Rust crate for background processing (including battle processing)&lt;/li&gt;
&lt;li&gt;Battle sim: a dedicated battle-engine crate&lt;/li&gt;
&lt;li&gt;Database: PostgreSQL 16&lt;/li&gt;
&lt;li&gt;Queue/realtime: Redis 7 (battle queue + pub/sub for match events)&lt;/li&gt;
&lt;li&gt;Frontend: React 18 + Vite + Tailwind&lt;/li&gt;
&lt;li&gt;Shared types: ts-rs is in the Rust workspace dependencies (Rust↔TS type sharing)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The repo is split accordingly: crates/api, crates/jobs, crates/battle-engine, crates/db, crates/domain, plus frontend/.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;WHY I’M LOOKING FOR A CO-MAINTAINER&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;I’m not looking for someone to “help out” with busywork. I’m looking for a technical partner who wants to co-own hard problems in a production-grade simulation game codebase.&lt;/p&gt;

&lt;p&gt;The interesting work is in the seams:&lt;/p&gt;

&lt;p&gt;1) Battle simulation determinism + debugging ergonomics&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Matches are simulated by the worker with a derived seed and a blocking simulation call.&lt;/li&gt;
&lt;li&gt;I want to tighten determinism guarantees and make edge cases easier to reproduce and regression-test.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;2) Market correctness under concurrency (Redis + Postgres boundaries)&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Redis is already in the stack and there are dev endpoints for closing/settling expired auctions.&lt;/li&gt;
&lt;li&gt;I want to nail atomic settlement and sniping behavior and prevent race conditions between API calls, settlement, and background processing.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;3) Chronicle / legacy data that stays useful long-term&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Chronicle events are persisted as first-class rows; hero legacy lives independently.&lt;/li&gt;
&lt;li&gt;I want to keep this useful, queryable, and fast without turning it into an unbounded logging dump.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;4) Economy + progression balancing that survives seasons&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;There are weekly jobs (training, salaries) and match-driven income.&lt;/li&gt;
&lt;li&gt;I want help validating the sinks/sources and preventing degenerate strategies (inflation, runaway guilds, “always optimal” builds).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;WHAT YOU’LL BE WORKING WITH&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A repo that boots locally with Docker (Postgres + Redis)&lt;/li&gt;
&lt;li&gt;A defined first-run workflow that gets you from empty DB to simulated matches&lt;/li&gt;
&lt;li&gt;A backend split into API / domain / DB / jobs / battle engine crates&lt;/li&gt;
&lt;li&gt;A React UI with real pages and navigation (not just a landing page)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If you’re a Rust + TypeScript dev and you want to co-maintain a simulation-heavy game project, I’d like to talk.&lt;/p&gt;

&lt;p&gt;Let's Connect!&lt;br&gt;


&lt;/p&gt;
&lt;div class="crayons-card c-embed text-styles text-styles--secondary"&gt;
    &lt;div class="c-embed__content"&gt;
      &lt;div class="c-embed__body flex items-center justify-between"&gt;
        &lt;a href="https://mythicleague.online/" rel="noopener noreferrer" class="c-link fw-bold flex items-center"&gt;
          &lt;span class="mr-2"&gt;mythicleague.online&lt;/span&gt;
          

        &lt;/a&gt;
      &lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;




</description>
      <category>webdev</category>
      <category>gamedev</category>
      <category>rust</category>
      <category>help</category>
    </item>
    <item>
      <title>COSMIC and WEFT OS: Two Ways to Build a Rust Desktop (Smithay, Wayland, Servo)</title>
      <dc:creator>Marco Allegretti</dc:creator>
      <pubDate>Mon, 16 Mar 2026 07:41:52 +0000</pubDate>
      <link>https://dev.to/marcoallegretti/cosmic-and-weft-os-two-ways-to-build-a-rust-desktop-smithay-wayland-servo-3kbe</link>
      <guid>https://dev.to/marcoallegretti/cosmic-and-weft-os-two-ways-to-build-a-rust-desktop-smithay-wayland-servo-3kbe</guid>
      <description>&lt;h2&gt;
  
  
  COSMIC and WEFT OS: two ways to build a Rust desktop
&lt;/h2&gt;

&lt;p&gt;I’ve been thinking a lot about what a modern desktop actually is once you strip away the branding, the defaults, and the decades of inherited assumptions.&lt;/p&gt;

&lt;p&gt;At the core, the shape is surprisingly simple:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;A compositor owns the screen, the input devices, and window placement.&lt;/li&gt;
&lt;li&gt;A shell defines the experience around those windows.&lt;/li&gt;
&lt;li&gt;An app model decides how software starts, what it can access, and how it talks to the rest of the system.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That is why System76’s &lt;strong&gt;COSMIC&lt;/strong&gt; and my experimental project &lt;strong&gt;WEFT OS&lt;/strong&gt; are so interesting to compare.&lt;/p&gt;

&lt;p&gt;They both live in the Rust + Wayland world. They both use &lt;strong&gt;Smithay&lt;/strong&gt; as an important building block. But they point in different directions.&lt;/p&gt;

&lt;p&gt;COSMIC asks: what does a polished, practical, Rust-first desktop environment look like?&lt;/p&gt;

&lt;p&gt;WEFT asks: what happens if the shell becomes web-native, the app logic becomes WebAssembly, and the OS is designed around explicit boundaries from the start?&lt;/p&gt;

&lt;p&gt;This is not a competition piece. It is a structural comparison.&lt;/p&gt;




&lt;h2&gt;
  
  
  The common ground: Wayland and Smithay
&lt;/h2&gt;

&lt;p&gt;Both projects start from the same place.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Wayland&lt;/strong&gt; is the protocol that lets clients present windows and receive input.&lt;/p&gt;

&lt;p&gt;A &lt;strong&gt;compositor&lt;/strong&gt; is the part that actually owns the screen. It decides:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;which window is visible&lt;/li&gt;
&lt;li&gt;where it appears&lt;/li&gt;
&lt;li&gt;who receives keyboard, mouse, or touch input&lt;/li&gt;
&lt;li&gt;how everything is composed into the final frame&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Smithay&lt;/strong&gt; matters because it gives Rust projects a serious foundation for building that layer.&lt;/p&gt;

&lt;p&gt;That shared foundation is important. It means COSMIC and WEFT are not separated by language or by rendering era. They are separated by design choices.&lt;/p&gt;




&lt;h2&gt;
  
  
  COSMIC: a full desktop environment made of Rust components
&lt;/h2&gt;

&lt;p&gt;The easiest way to understand COSMIC is to look at its shape.&lt;/p&gt;

&lt;p&gt;It is not just a compositor. It is a desktop environment made of many coordinated Rust projects: panel, settings, terminal, file manager, session manager, applets, launcher, notifications, and more.&lt;/p&gt;

&lt;p&gt;That tells you a lot before you even read the code.&lt;/p&gt;

&lt;p&gt;COSMIC is trying to be a real desktop people can live in.&lt;/p&gt;

&lt;p&gt;Its compositor, &lt;code&gt;cosmic-comp&lt;/code&gt;, reflects that ambition. It is built to handle the realities of a desktop environment rather than a narrow demo path. It supports multiple backends, integrates XWayland, runs a Wayland event loop, and includes practical debugging and profiling hooks.&lt;/p&gt;

&lt;p&gt;That breadth matters. A production desktop has to survive mixed environments, odd hardware, legacy applications, and the boring-but-essential details of logging, profiling, and session management.&lt;/p&gt;

&lt;p&gt;So when I look at COSMIC, I do not mainly see “Rust desktop hype.” I see a serious attempt to answer a very difficult question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Can you build a complete, modern Linux desktop in Rust without making it feel like an experiment?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is what makes COSMIC important.&lt;/p&gt;




&lt;h2&gt;
  
  
  WEFT OS: a smaller system with stricter boundaries
&lt;/h2&gt;

&lt;p&gt;WEFT OS is not trying to be a general-purpose desktop environment in the same way.&lt;/p&gt;

&lt;p&gt;It is an experimental operating system project with a narrower, more controlled structure:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;weft-compositor
├─ owns Wayland surfaces, input, and display composition
├─ hosts the system panel surface from weft-servo-shell
└─ hosts application surfaces from weft-app-shell

weft-servo-shell
└─ renders the system UI in Servo

weft-appd
├─ starts and stops app sessions
├─ supervises runtime state
├─ relays per-session IPC
└─ launches the per-app shell when the runtime is ready

weft-runtime
└─ runs the app logic as a WASI WebAssembly component

weft-app-shell
└─ renders the app UI in an isolated Servo WebView

weft-file-portal
└─ mediates file access for the session
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;


&lt;p&gt;The difference in philosophy shows up immediately.&lt;/p&gt;

&lt;p&gt;COSMIC grows outward from the idea of a desktop environment.&lt;/p&gt;

&lt;p&gt;WEFT grows inward from the idea of &lt;strong&gt;process boundaries and explicit contracts&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;Every major responsibility has its own place:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the compositor composes&lt;/li&gt;
&lt;li&gt;the shells render&lt;/li&gt;
&lt;li&gt;the daemon supervises&lt;/li&gt;
&lt;li&gt;the runtime executes app logic&lt;/li&gt;
&lt;li&gt;the portal mediates filesystem access&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That makes WEFT feel less like “a desktop with some apps” and more like “a small operating system made of cooperating parts.”&lt;/p&gt;


&lt;h2&gt;
  
  
  The real fork in the road: what the shell is
&lt;/h2&gt;

&lt;p&gt;This is where the two projects stop merely looking different and start &lt;em&gt;thinking&lt;/em&gt; differently.&lt;/p&gt;
&lt;h3&gt;
  
  
  In COSMIC, the shell is native
&lt;/h3&gt;

&lt;p&gt;COSMIC’s user experience is built out of Rust-native components. The compositor is a key piece, but the desktop itself is a collection of native programs and libraries working together.&lt;/p&gt;

&lt;p&gt;That is a very strong model if your goal is to ship a responsive, integrated desktop that behaves like people expect a Linux desktop to behave.&lt;/p&gt;
&lt;h3&gt;
  
  
  In WEFT, the shell is a document
&lt;/h3&gt;

&lt;p&gt;WEFT takes a different path.&lt;/p&gt;

&lt;p&gt;The system UI is rendered through &lt;strong&gt;Servo&lt;/strong&gt;. App UIs are also rendered through Servo, in isolated per-app shells.&lt;/p&gt;

&lt;p&gt;That means the shell is not just “a UI toolkit in Rust.” It is a browser engine embedded into the operating system model.&lt;/p&gt;

&lt;p&gt;That changes the conversation.&lt;/p&gt;

&lt;p&gt;When your shell is HTML and CSS, a few things happen at once:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;layout becomes document layout&lt;/li&gt;
&lt;li&gt;interaction becomes event-driven in a web sense&lt;/li&gt;
&lt;li&gt;styling becomes a first-class part of the platform&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That can be powerful. It can also be dangerous if the boundaries are vague.&lt;/p&gt;

&lt;p&gt;So the important part is not simply “WEFT uses Servo.” The important part is &lt;em&gt;how&lt;/em&gt; it uses Servo: as one piece in a system where the compositor, shell, runtime, and policy layer are kept separate.&lt;/p&gt;

&lt;p&gt;That separation is doing a lot of work.&lt;/p&gt;

&lt;p&gt;It is what makes “browser engine as shell” feel like an operating system design choice instead of a shortcut.&lt;/p&gt;


&lt;h2&gt;
  
  
  Two different ideas of what an app should be
&lt;/h2&gt;

&lt;p&gt;This is the second major split.&lt;/p&gt;
&lt;h3&gt;
  
  
  COSMIC’s app model
&lt;/h3&gt;

&lt;p&gt;COSMIC is a desktop environment. It is built to host the world Linux users already live in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Wayland-native applications&lt;/li&gt;
&lt;li&gt;X11 applications through XWayland&lt;/li&gt;
&lt;li&gt;COSMIC-native applications built in Rust&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In other words, COSMIC is designed to be a place where existing desktop software can live comfortably.&lt;/p&gt;
&lt;h3&gt;
  
  
  WEFT’s app model
&lt;/h3&gt;

&lt;p&gt;WEFT is stricter.&lt;/p&gt;

&lt;p&gt;In WEFT, an app is really two things at once:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;logic&lt;/strong&gt;, running as a WebAssembly component in &lt;code&gt;weft-runtime&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;UI&lt;/strong&gt;, rendered in a separate Servo-based app shell&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The launch path reflects that design:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The system UI asks &lt;code&gt;weft-appd&lt;/code&gt; to launch an app.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;weft-appd&lt;/code&gt; creates the session context, including IPC and, when needed, a file portal.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;weft-appd&lt;/code&gt; starts &lt;code&gt;weft-runtime&lt;/code&gt;, which runs the app logic.&lt;/li&gt;
&lt;li&gt;Once the runtime is ready, &lt;code&gt;weft-appd&lt;/code&gt; starts &lt;code&gt;weft-app-shell&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;The app shell creates the Wayland surface and presents the UI through Servo.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;That structure is not just about startup order.&lt;/p&gt;

&lt;p&gt;It is the app model made visible.&lt;/p&gt;

&lt;p&gt;The app logic does not silently become the UI process. The UI process does not silently gain full filesystem access. Lifecycle is supervised. Filesystem access is mediated. IPC is part of the design, not a hidden implementation detail.&lt;/p&gt;

&lt;p&gt;That is the heart of WEFT.&lt;/p&gt;


&lt;h2&gt;
  
  
  What Smithay makes possible
&lt;/h2&gt;

&lt;p&gt;One of the most interesting lessons here is that &lt;strong&gt;Smithay does not force a worldview on you&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It gives you the infrastructure for a compositor, but it does not tell you what kind of desktop must sit on top of it.&lt;/p&gt;

&lt;p&gt;That is why both of these can exist on the same technical foundation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a production-oriented desktop environment like COSMIC&lt;/li&gt;
&lt;li&gt;an experimental, shell-and-runtime-driven system like WEFT&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That flexibility is exactly why Smithay matters.&lt;/p&gt;

&lt;p&gt;It is not only a toolkit. It is an enabler of architectural diversity.&lt;/p&gt;


&lt;h2&gt;
  
  
  Why Servo is still interesting
&lt;/h2&gt;

&lt;p&gt;Servo is easy to talk about in abstract terms, but it becomes more interesting when you place it inside an operating system design.&lt;/p&gt;

&lt;p&gt;In WEFT, Servo is not being used just to say “look, web tech on the desktop.” That would be shallow.&lt;/p&gt;

&lt;p&gt;The interesting part is that Servo becomes the rendering engine for a shell that is still constrained by:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;compositor rules&lt;/li&gt;
&lt;li&gt;process boundaries&lt;/li&gt;
&lt;li&gt;lifecycle supervision&lt;/li&gt;
&lt;li&gt;capability boundaries&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That makes Servo feel less like a gimmick and more like a deliberate experiment in what a desktop shell could be.&lt;/p&gt;

&lt;p&gt;Not a browser pretending to be an OS.&lt;/p&gt;

&lt;p&gt;An OS deciding that document rendering can be a first-class part of its user interface model.&lt;/p&gt;


&lt;h2&gt;
  
  
  What I take away from the comparison
&lt;/h2&gt;

&lt;p&gt;When I look at COSMIC, I see confidence in the idea that Rust is ready for mainstream desktop infrastructure.&lt;/p&gt;

&lt;p&gt;When I look at WEFT, I see a different question being asked:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If we take the compositor seriously, the boundaries seriously, and the web seriously, what kind of OS falls out of that?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is why I think these two projects sit well next to each other.&lt;/p&gt;

&lt;p&gt;COSMIC shows how far a modern Rust desktop can go when the goal is completeness, polish, and practical deployment.&lt;/p&gt;

&lt;p&gt;WEFT explores what happens when you use the same low-level world—Wayland, Smithay, process isolation—but point it toward a different model for shells and apps.&lt;/p&gt;

&lt;p&gt;Both are valuable.&lt;/p&gt;

&lt;p&gt;Both are modern.&lt;/p&gt;

&lt;p&gt;And both say something important about where the Linux desktop might still go.&lt;/p&gt;


&lt;h2&gt;
  
  
  Closing thought
&lt;/h2&gt;

&lt;p&gt;The most interesting part of the current Rust desktop moment is not that people are rewriting old ideas in a new language.&lt;/p&gt;

&lt;p&gt;It is that the same technical base is now strong enough to support genuinely different visions.&lt;/p&gt;

&lt;p&gt;COSMIC is one vision: a serious, full desktop environment built in Rust.&lt;/p&gt;

&lt;p&gt;WEFT is another: a more experimental system where shells are rendered through Servo, apps are split between WebAssembly logic and web UI, and the operating system is shaped around clear process contracts.&lt;/p&gt;

&lt;p&gt;That difference is exactly what makes the comparison worth having.&lt;/p&gt;

&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/marcoallegretti" rel="noopener noreferrer"&gt;
        marcoallegretti
      &lt;/a&gt; / &lt;a href="https://github.com/marcoallegretti/WEFT_OS" rel="noopener noreferrer"&gt;
        WEFT_OS
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      WEFT OS is an experimental operating system built around WebAssembly, Servo, and Wayland, designed to run secure, GPU-accelerated web and Wasm applications in a modular package-based system.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;WEFT OS&lt;/h1&gt;
&lt;/div&gt;

&lt;p&gt;WEFT OS is a Wayland compositor and application runtime where every app is a WebAssembly component rendered in an isolated Servo WebView. No capability is granted by default; all resource access is declared in a per-app manifest and enforced at runtime.&lt;/p&gt;

&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;What is implemented&lt;/h2&gt;
&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;Compositor&lt;/strong&gt; — &lt;code&gt;weft-compositor&lt;/code&gt; is a Smithay-based Wayland compositor with DRM/KMS and winit backends. It implements the &lt;code&gt;zweft-shell-unstable-v1&lt;/code&gt; protocol extension, which typed shell slots (panel, application) register against.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;System shell&lt;/strong&gt; — &lt;code&gt;weft-servo-shell&lt;/code&gt; embeds Servo (feature-gated, &lt;code&gt;--features servo-embed&lt;/code&gt;) and renders &lt;code&gt;system-ui.html&lt;/code&gt; as a Wayland panel. Without &lt;code&gt;servo-embed&lt;/code&gt;, the binary builds as a no-op stub. Navigation gestures from the compositor are forwarded to &lt;code&gt;weft-appd&lt;/code&gt; over WebSocket.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;App shell&lt;/strong&gt; — &lt;code&gt;weft-app-shell&lt;/code&gt; is a per-process Servo host for application WebViews. It resolves &lt;code&gt;weft-app://&amp;lt;id&amp;gt;/ui/index.html&lt;/code&gt;, injects a &lt;code&gt;weftIpc&lt;/code&gt; WebSocket bridge into the page, and registers with the compositor as an application surface. Also feature-gated behind &lt;code&gt;servo-embed&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;App&lt;/strong&gt;…&lt;/p&gt;
&lt;/div&gt;


&lt;/div&gt;
&lt;br&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/marcoallegretti/WEFT_OS" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;br&gt;
&lt;/div&gt;





</description>
      <category>rust</category>
      <category>linux</category>
      <category>programming</category>
      <category>showdev</category>
    </item>
    <item>
      <title>LLMs Are Just Another Layer of Abstraction</title>
      <dc:creator>Marco Allegretti</dc:creator>
      <pubDate>Sun, 15 Mar 2026 16:15:12 +0000</pubDate>
      <link>https://dev.to/marcoallegretti/llms-are-just-another-layer-of-abstraction-24p8</link>
      <guid>https://dev.to/marcoallegretti/llms-are-just-another-layer-of-abstraction-24p8</guid>
      <description>&lt;p&gt;&lt;em&gt;&lt;em&gt;(A reflection on AI-generated code and the history of software development)&lt;/em&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;In the last couple of years, many developers have started saying something like:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“AI will replace programming.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Personally, I don’t think that’s what’s happening.&lt;/p&gt;

&lt;p&gt;What we’re seeing looks much more familiar.&lt;/p&gt;

&lt;p&gt;It’s just &lt;strong&gt;another layer of abstraction.&lt;/strong&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  The History of Programming Is the History of Abstraction
&lt;/h2&gt;

&lt;p&gt;If you look at the evolution of computer science, it’s essentially a story about building layers.&lt;/p&gt;

&lt;p&gt;At the beginning we had to write:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;machine code&lt;/li&gt;
&lt;li&gt;assembly&lt;/li&gt;
&lt;li&gt;low-level languages&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then came higher-level languages.&lt;/p&gt;

&lt;p&gt;Then frameworks.&lt;/p&gt;

&lt;p&gt;Then platforms.&lt;/p&gt;

&lt;p&gt;Every step moved us &lt;strong&gt;further away from the machine&lt;/strong&gt; while making software easier to build.&lt;/p&gt;

&lt;p&gt;Compilers, interpreters, and APIs all did the same thing: they allowed developers to work at a higher conceptual level while the system handled the complexity underneath.&lt;/p&gt;

&lt;p&gt;Now something similar is happening again.&lt;/p&gt;




&lt;h2&gt;
  
  
  LLMs as a New Interface
&lt;/h2&gt;

&lt;p&gt;Large Language Models introduce something interesting:&lt;br&gt;
&lt;strong&gt;natural language as an interface to software creation.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Instead of writing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;syntax&lt;/li&gt;
&lt;li&gt;configuration&lt;/li&gt;
&lt;li&gt;boilerplate&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;we can increasingly describe &lt;strong&gt;intent&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;You explain the idea, and the system generates the code.&lt;/p&gt;

&lt;p&gt;In this sense, LLMs behave almost like a new kind of compiler.&lt;/p&gt;

&lt;p&gt;Not a compiler from C to assembly.&lt;/p&gt;

&lt;p&gt;But something closer to:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;intent → implementation&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  But Abstractions Are Never Perfect
&lt;/h2&gt;

&lt;p&gt;There’s an old meme that says:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;“If your code doesn’t work, blame the compiler.”&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;It’s funny, but it also reveals something important.&lt;/p&gt;

&lt;p&gt;Abstractions don’t remove complexity.&lt;/p&gt;

&lt;p&gt;They &lt;strong&gt;move it somewhere else.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Every developer knows this moment:&lt;/p&gt;

&lt;p&gt;You’re happily using a framework…&lt;br&gt;
until something breaks.&lt;/p&gt;

&lt;p&gt;And suddenly you have to understand the internals.&lt;/p&gt;

&lt;p&gt;The abstraction leaks.&lt;/p&gt;

&lt;p&gt;This isn’t a flaw of abstraction — it’s simply how complex systems work.&lt;/p&gt;




&lt;h2&gt;
  
  
  The Skill That Never Changes
&lt;/h2&gt;

&lt;p&gt;Because of this, one thing in programming never really disappears.&lt;/p&gt;

&lt;p&gt;The ability to &lt;strong&gt;look below the abstraction layer&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;It doesn’t matter if that layer is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;a framework&lt;/li&gt;
&lt;li&gt;a compiler&lt;/li&gt;
&lt;li&gt;a runtime&lt;/li&gt;
&lt;li&gt;or now an LLM&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Eventually something breaks.&lt;/p&gt;

&lt;p&gt;And when it does, someone needs to understand what’s happening underneath.&lt;/p&gt;




&lt;h2&gt;
  
  
  AI Doesn’t Replace Engineers
&lt;/h2&gt;

&lt;p&gt;If anything, AI might make this skill even more important.&lt;/p&gt;

&lt;p&gt;Because the higher the abstraction, the more critical it becomes to understand:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;when to trust the system&lt;/li&gt;
&lt;li&gt;when to inspect the output&lt;/li&gt;
&lt;li&gt;when to go deeper.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;LLMs might generate code.&lt;/p&gt;

&lt;p&gt;But understanding systems is still a human responsibility.&lt;/p&gt;




&lt;h2&gt;
  
  
  Final Thought
&lt;/h2&gt;

&lt;p&gt;AI-generated code is not the end of programming.&lt;/p&gt;

&lt;p&gt;It’s simply the next chapter in a very long story.&lt;/p&gt;

&lt;p&gt;A story about abstraction, tools, and the evolving relationship between humans and machines.&lt;/p&gt;

&lt;p&gt;And like every abstraction before it,&lt;br&gt;
it will make some things easier…&lt;/p&gt;

&lt;p&gt;while making other things more interesting.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>programming</category>
      <category>llm</category>
      <category>coding</category>
    </item>
    <item>
      <title>WEFT OS – Rethinking “Firefox OS” For 2026</title>
      <dc:creator>Marco Allegretti</dc:creator>
      <pubDate>Sun, 15 Mar 2026 13:30:04 +0000</pubDate>
      <link>https://dev.to/marcoallegretti/weft-os-rethinking-firefox-os-for-2026-1aai</link>
      <guid>https://dev.to/marcoallegretti/weft-os-rethinking-firefox-os-for-2026-1aai</guid>
      <description>&lt;p&gt;When people hear “new operating system,” they usually think of big consumer products: Windows, macOS, Android, iOS.&lt;br&gt;&lt;br&gt;
When developers hear “new OS,” they often think of hobby projects that boot, show a prompt, and stop there.&lt;/p&gt;

&lt;p&gt;WEFT OS is neither of those.&lt;/p&gt;

&lt;p&gt;It is a serious attempt to answer a simple question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;If we took the best ideas from Firefox OS — the idea that apps are just web content — and rebuilt them with modern isolation, security, and reliability in mind, what would that operating system look like?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This article walks through that answer in plain language.&lt;br&gt;&lt;br&gt;
It is written for a general audience, but it is precise enough that a senior systems architect should recognize the design patterns and trade‑offs.&lt;/p&gt;


&lt;h2&gt;
  
  
  Remembering Firefox OS (And What It Got Right)
&lt;/h2&gt;

&lt;p&gt;Firefox OS tried something bold:&lt;br&gt;&lt;br&gt;
instead of installing “native” apps, you would run applications built with web technologies — HTML, CSS, JavaScript — directly on the phone.&lt;/p&gt;

&lt;p&gt;It got a few important things right:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The web as the app platform.&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
You don’t compile separate apps for every device. You build with the web stack developers already know.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Permissioned capabilities.&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Apps didn’t just get full device access. They had to declare which things they used (camera, contacts, etc.).&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Simple deployment.&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Apps were essentially packaged websites, not massive native binaries.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What went wrong is more complex: hardware realities, market timing, and some architectural limits.&lt;br&gt;&lt;br&gt;
But the core idea — “the web as a first‑class app platform” — never stopped being interesting.&lt;/p&gt;

&lt;p&gt;WEFT OS picks that idea back up, but with a much stricter focus on:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Isolation:&lt;/strong&gt; every app is strongly contained.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Contracts:&lt;/strong&gt; components talk over clearly defined channels.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reliability:&lt;/strong&gt; one broken app should not bring down your session.&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  WEFT OS In One Sentence
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;WEFT OS is an operating system that treats the web as the primary UI layer, runs each app in its own isolated sandbox, and connects everything through explicit, inspectable IPC (inter‑process communication) contracts.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That’s a mouthful, so let’s unpack it in human terms.&lt;/p&gt;


&lt;h2&gt;
  
  
  A Simple Mental Model: Three “Rooms” Talking
&lt;/h2&gt;

&lt;p&gt;Imagine WEFT OS as a small house with three main rooms:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The Display Room – “the compositor”&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
This is the part that actually talks to your monitor and input devices (keyboard, mouse, touch).&lt;br&gt;&lt;br&gt;
It knows how to draw windows, move them around, and react when you click or type.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The System UI Room – “system shell”&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
This is where the &lt;strong&gt;system interface&lt;/strong&gt; lives:&lt;br&gt;&lt;br&gt;
task switcher, status bar, notifications, “home screen”, system dialogs.&lt;br&gt;&lt;br&gt;
In WEFT OS, this entire room is &lt;strong&gt;a single web page&lt;/strong&gt; running in an embedded browser engine.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;The App Rooms – “app runtimes”&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Each app gets its own small, locked‑down room.&lt;br&gt;&lt;br&gt;
Inside it runs app logic and UI, also driven by web technologies and WebAssembly.&lt;br&gt;&lt;br&gt;
Every app room is separate from every other app room.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The key is &lt;strong&gt;how these rooms talk&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;
In WEFT OS, they don’t reach into each other’s memory.&lt;br&gt;&lt;br&gt;
They send messages over well‑defined channels, like people passing written notes under the door.&lt;/p&gt;

&lt;p&gt;That sounds slow and over‑engineered.&lt;br&gt;&lt;br&gt;
But it buys you three things that are very hard to retrofit into a traditional desktop OS:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Crashes are contained.&lt;/li&gt;
&lt;li&gt;Permissions are explicit.&lt;/li&gt;
&lt;li&gt;Behavior is inspectable and testable end‑to‑end.&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  What Actually Happens When You Launch An App
&lt;/h2&gt;

&lt;p&gt;Let’s walk through a concrete example: opening a “Notes” app on WEFT OS.&lt;/p&gt;
&lt;h3&gt;
  
  
  1. You click the icon
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;You see a &lt;strong&gt;system UI&lt;/strong&gt; page — think of it like a “desktop” or “home screen.”
&lt;/li&gt;
&lt;li&gt;That UI is just HTML + CSS + JavaScript rendered by Servo (a modern browser engine).
&lt;/li&gt;
&lt;li&gt;You click the “Notes” icon.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  2. The click becomes a message
&lt;/h3&gt;

&lt;p&gt;Instead of launching some random binary directly, the system UI sends a &lt;strong&gt;structured message&lt;/strong&gt; to a background service:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“Please start app &lt;code&gt;com.example.notes&lt;/code&gt; for session &lt;code&gt;12345&lt;/code&gt;.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This background service is the &lt;strong&gt;app daemon&lt;/strong&gt;.&lt;br&gt;&lt;br&gt;
Its job is to manage app lifecycles: start, stop, track state.&lt;/p&gt;
&lt;h3&gt;
  
  
  3. The daemon sets up a safe environment
&lt;/h3&gt;

&lt;p&gt;Before any app code runs, WEFT OS:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Works out which &lt;strong&gt;files and folders&lt;/strong&gt; the app is allowed to see.&lt;br&gt;&lt;br&gt;
For example: a per‑app data directory, maybe a shared “Documents” folder, nothing else.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Optionally launches a &lt;strong&gt;file portal&lt;/strong&gt; process.&lt;br&gt;&lt;br&gt;
This is a small helper that sits between the app and your real filesystem.&lt;br&gt;&lt;br&gt;
The app asks the portal to read or write files; the portal enforces the rules.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Prepares &lt;strong&gt;IPC sockets&lt;/strong&gt; (communication channels) so that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The app can send and receive messages (for example, to the system UI).&lt;/li&gt;
&lt;li&gt;The system can observe and control its lifecycle.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Only after all that is in place does the daemon start the app’s runtime process.&lt;/p&gt;
&lt;h3&gt;
  
  
  4. The app starts and announces “I’m ready”
&lt;/h3&gt;

&lt;p&gt;Inside the app room, the runtime boots:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It loads the app’s code (WebAssembly / web code).&lt;/li&gt;
&lt;li&gt;It sets up the local environment (permissions, pre‑opened directories, IPC).&lt;/li&gt;
&lt;li&gt;Crucially, it does &lt;strong&gt;not&lt;/strong&gt; get full system access; it only sees what was explicitly granted.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;When initialization is complete, the app runtime simply prints one line:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;code&gt;READY&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The daemon watches for that.&lt;br&gt;&lt;br&gt;
If it doesn’t see &lt;code&gt;READY&lt;/code&gt; within a fixed time window, the daemon:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Kills the app process.&lt;/li&gt;
&lt;li&gt;Cleans up its file portal.&lt;/li&gt;
&lt;li&gt;Marks the session as “Stopped”.&lt;/li&gt;
&lt;li&gt;Notifies the rest of the system that this launch failed cleanly.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If it does see &lt;code&gt;READY&lt;/code&gt;, the daemon:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Marks the session “Running”.&lt;/li&gt;
&lt;li&gt;Sends a message back to the system UI: “Notes app session 12345 is ready.”&lt;/li&gt;
&lt;li&gt;Optionally launches a &lt;strong&gt;per‑app UI shell&lt;/strong&gt; (another browser instance) to render the app’s front‑end.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The result: when the Notes window appears, it has already proved that:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Its code loaded correctly.&lt;/li&gt;
&lt;li&gt;Its IPC channels work.&lt;/li&gt;
&lt;li&gt;Its basic environment is valid.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There is no half‑started zombie process hanging around.&lt;/p&gt;


&lt;h2&gt;
  
  
  Why This Is Different From “Just Use The Browser”
&lt;/h2&gt;

&lt;p&gt;You could ask: why not just run everything in browser tabs?&lt;/p&gt;

&lt;p&gt;Three big differences:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Ownership of the screen&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
In WEFT OS, the &lt;strong&gt;compositor&lt;/strong&gt; is not the browser; it is the OS component that controls displays and input directly.&lt;br&gt;&lt;br&gt;
The system UI and apps are guests in that space, not owners of it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Hard isolation by process&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Each app runs in its own dedicated process with a very narrow view of the filesystem and OS services.&lt;br&gt;&lt;br&gt;
It doesn’t share memory with other apps.&lt;br&gt;&lt;br&gt;
If the app crashes, the compositor and system shell stay alive.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;IPC as a contract, not an afterthought&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Instead of arbitrary internal calls, components communicate via structured messages with clearly defined types.&lt;br&gt;&lt;br&gt;
For a senior architect, this looks much more like &lt;strong&gt;micro‑services&lt;/strong&gt; than a monolithic desktop shell.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You still get the productivity of the web stack, but on top of an OS that behaves more like a collection of small, cooperating services than a single giant program.&lt;/p&gt;


&lt;h2&gt;
  
  
  Reliability: What Happens When Things Go Wrong
&lt;/h2&gt;

&lt;p&gt;Because everything is separated, WEFT OS can make &lt;strong&gt;failure a first‑class case&lt;/strong&gt;, not an exception.&lt;/p&gt;

&lt;p&gt;A few concrete examples:&lt;/p&gt;
&lt;h3&gt;
  
  
  Example 1: App never says “READY”
&lt;/h3&gt;

&lt;p&gt;The app starts, but never prints &lt;code&gt;READY&lt;/code&gt; — maybe it’s stuck in initialization, or crashed silently.&lt;/p&gt;

&lt;p&gt;What WEFT OS does:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Waits up to a fixed timeout (e.g. 30 seconds).&lt;/li&gt;
&lt;li&gt;If &lt;code&gt;READY&lt;/code&gt; never appears:

&lt;ul&gt;
&lt;li&gt;Kills the app process.&lt;/li&gt;
&lt;li&gt;Shuts down the app’s file portal.&lt;/li&gt;
&lt;li&gt;Marks the session as Stopped.&lt;/li&gt;
&lt;li&gt;Broadcasts that new state to anyone interested (e.g. the system UI).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To the user, this looks like:&lt;br&gt;&lt;br&gt;
“Notes failed to start. Try again or check logs.”&lt;/p&gt;

&lt;p&gt;To an architect, this is:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A clear &lt;strong&gt;state machine&lt;/strong&gt;: Starting → Running or Stopped.&lt;/li&gt;
&lt;li&gt;No “half alive” processes.&lt;/li&gt;
&lt;li&gt;A single place (the app daemon) responsible for enforcing this policy.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;
  
  
  Example 2: UI shell can’t create a window
&lt;/h3&gt;

&lt;p&gt;The UI shell is the embedded browser used to render the system UI or an app window.&lt;br&gt;&lt;br&gt;
If window creation fails (for example, graphics issues), WEFT OS:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Logs a clear error.&lt;/li&gt;
&lt;li&gt;Exits the shell process cleanly.&lt;/li&gt;
&lt;li&gt;Tells the event loop to stop instead of panicking the whole program.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The compositor itself stays alive; it doesn’t crash just because an app window failed to open.&lt;/p&gt;
&lt;h3&gt;
  
  
  Example 3: Background IPC channel dies mid‑session
&lt;/h3&gt;

&lt;p&gt;Apps talk to the daemon and other components over local sockets.&lt;br&gt;&lt;br&gt;
If that socket breaks:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The daemon notices.&lt;/li&gt;
&lt;li&gt;It cleans up the session and updates state.&lt;/li&gt;
&lt;li&gt;The system UI can show “Disconnected” instead of hanging indefinitely.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These are small details in code, but collectively they define a &lt;strong&gt;failure‑aware OS&lt;/strong&gt;, where the normal path and the error path are equally designed.&lt;/p&gt;


&lt;h2&gt;
  
  
  Security and Privacy: Capabilities, Not “All Or Nothing”
&lt;/h2&gt;

&lt;p&gt;Traditional desktop apps often see your entire home directory by default.&lt;br&gt;&lt;br&gt;
On phones, apps ask for broad permissions: “Photos”, “Files”, etc.&lt;/p&gt;

&lt;p&gt;WEFT OS takes a narrower approach:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Each app declares &lt;strong&gt;capabilities&lt;/strong&gt; such as “needs persistent app data” or “needs access to Documents”.&lt;/li&gt;
&lt;li&gt;The app daemon turns those into &lt;strong&gt;pre‑opened directories&lt;/strong&gt;:
“You can see &lt;code&gt;/data&lt;/code&gt; and &lt;code&gt;/xdg/documents&lt;/code&gt;, nothing else.”&lt;/li&gt;
&lt;li&gt;A separate &lt;strong&gt;file portal&lt;/strong&gt; process enforces this at runtime:

&lt;ul&gt;
&lt;li&gt;It receives file read/write requests from the app.&lt;/li&gt;
&lt;li&gt;It checks them against the allow‑list.&lt;/li&gt;
&lt;li&gt;It can log or deny anything outside the allowed paths.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To a non‑technical user, this means:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;“An app only sees the folders it really needs, not your whole system.”&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;To an architect, it means:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No direct filesystem syscalls from app code to arbitrary paths.&lt;/li&gt;
&lt;li&gt;A single choke point for policy (the portal).&lt;/li&gt;
&lt;li&gt;Easier reasoning about what data an app can touch.&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  Why Architects Might Care
&lt;/h2&gt;

&lt;p&gt;From a systems‑design point of view, WEFT OS has a few interesting properties:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Clear component boundaries&lt;/strong&gt;  &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Compositor: owns displays and input.&lt;/li&gt;
&lt;li&gt;Shells (system + per‑app): own UI and user interactions.&lt;/li&gt;
&lt;li&gt;App daemon: owns lifecycle and session state.&lt;/li&gt;
&lt;li&gt;Runtime: owns execution of app code.&lt;/li&gt;
&lt;li&gt;File portal: owns filesystem policy.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Everything talks via messages&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
IPC is not a side detail; it is the backbone of the system.&lt;br&gt;&lt;br&gt;
That makes it possible to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Trace flows end‑to‑end.&lt;/li&gt;
&lt;li&gt;Test components in isolation with fake messages.&lt;/li&gt;
&lt;li&gt;Swap implementations without changing contracts.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Failure is explicit&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Timeouts, missing binaries, socket errors, window creation failures — all mapped to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Well‑defined log messages.&lt;/li&gt;
&lt;li&gt;State changes (&lt;code&gt;Starting&lt;/code&gt; → &lt;code&gt;Stopped&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Predictable cleanup.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Web UI without “Electron bloat”&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Instead of every app bundling its own browser, the OS provides a shared, deeply integrated browser engine as a core service.&lt;br&gt;&lt;br&gt;
Apps are guests; the OS remains in charge.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can think of WEFT OS as a &lt;strong&gt;small, service‑oriented system for running web apps&lt;/strong&gt;, rather than “yet another Linux desktop.”&lt;/p&gt;


&lt;h2&gt;
  
  
  Why Non‑Technical People Might Care
&lt;/h2&gt;

&lt;p&gt;If you are not a systems engineer, most of the above might sound abstract.&lt;br&gt;&lt;br&gt;
Here is what it means in everyday terms:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Apps feel like websites, but behave like proper apps.&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
They can send notifications, access your files (within limits), and integrate into the system UI.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Crashes are less scary.&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
If your Calendar app dies, it should not bring down your whole desktop.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Permissions are more understandable.&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Instead of giving apps the keys to everything, the OS can say:&lt;br&gt;&lt;br&gt;
“This app can only see this folder and talk to this service.”&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;It is easier to inspect and debug problems.&lt;/strong&gt;&lt;br&gt;&lt;br&gt;
Because everything is message‑based, operators and developers can see where something went wrong:&lt;br&gt;&lt;br&gt;
“The app never sent READY”, “The IPC channel broke”, “The portal denied this path”.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;h2&gt;
  
  
  Closing Thoughts
&lt;/h2&gt;

&lt;p&gt;WEFT OS is not trying to compete with the big general‑purpose desktops on features.&lt;br&gt;&lt;br&gt;
Instead, it explores a focused idea:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Web technologies as the primary UI.&lt;/li&gt;
&lt;li&gt;Small, isolated runtimes for each app.&lt;/li&gt;
&lt;li&gt;A compositor and daemon that treat &lt;strong&gt;contracts, capabilities, and failures&lt;/strong&gt; as first‑class citizens.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;If Firefox OS was an early experiment in “the web as an OS,”&lt;br&gt;&lt;br&gt;
WEFT OS is a modern, more careful experiment in &lt;strong&gt;“the web, but with strong isolation and explicit contracts.”&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;For non‑technical readers, the takeaway is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This operating system is built so that apps behave more like well‑behaved website tabs, and less like all‑powerful desktop programs.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;For architects, the takeaway is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;This is a message‑driven, componentized OS with clear boundaries, capability‑based access, and designed‑in failure handling — using the web stack as its primary UI layer.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;If you are curious, the next step is simply to explore:&lt;br&gt;&lt;br&gt;
read the architecture docs, look at how sessions move from “Requested” to “Running” to “Stopped,” and see how much complexity disappears once you treat the OS itself as a set of contracts between small, cooperating processes.&lt;/p&gt;

&lt;p&gt;

&lt;/p&gt;
&lt;div class="ltag-github-readme-tag"&gt;
  &lt;div class="readme-overview"&gt;
    &lt;h2&gt;
      &lt;img src="https://assets.dev.to/assets/github-logo-5a155e1f9a670af7944dd5e12375bc76ed542ea80224905ecaf878b9157cdefc.svg" alt="GitHub logo"&gt;
      &lt;a href="https://github.com/marcoallegretti" rel="noopener noreferrer"&gt;
        marcoallegretti
      &lt;/a&gt; / &lt;a href="https://github.com/marcoallegretti/WEFT_OS" rel="noopener noreferrer"&gt;
        WEFT_OS
      &lt;/a&gt;
    &lt;/h2&gt;
    &lt;h3&gt;
      WEFT OS is an experimental operating system built around WebAssembly, Servo, and Wayland, designed to run secure, GPU-accelerated web and Wasm applications in a modular package-based system.
    &lt;/h3&gt;
  &lt;/div&gt;
  &lt;div class="ltag-github-body"&gt;
    
&lt;div id="readme" class="md"&gt;
&lt;div class="markdown-heading"&gt;
&lt;h1 class="heading-element"&gt;WEFT OS&lt;/h1&gt;
&lt;/div&gt;
&lt;p&gt;WEFT OS is a Wayland compositor and application runtime where every app is a WebAssembly component rendered in an isolated Servo WebView. No capability is granted by default; all resource access is declared in a per-app manifest and enforced at runtime.&lt;/p&gt;
&lt;div class="markdown-heading"&gt;
&lt;h2 class="heading-element"&gt;What is implemented&lt;/h2&gt;
&lt;/div&gt;
&lt;p&gt;&lt;strong&gt;Compositor&lt;/strong&gt; — &lt;code&gt;weft-compositor&lt;/code&gt; is a Smithay-based Wayland compositor with DRM/KMS and winit backends. It implements the &lt;code&gt;zweft-shell-unstable-v1&lt;/code&gt; protocol extension, which typed shell slots (panel, application) register against.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;System shell&lt;/strong&gt; — &lt;code&gt;weft-servo-shell&lt;/code&gt; embeds Servo (feature-gated, &lt;code&gt;--features servo-embed&lt;/code&gt;) and renders &lt;code&gt;system-ui.html&lt;/code&gt; as a Wayland panel. Without &lt;code&gt;servo-embed&lt;/code&gt;, the binary builds as a no-op stub. Navigation gestures from the compositor are forwarded to &lt;code&gt;weft-appd&lt;/code&gt; over WebSocket.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;App shell&lt;/strong&gt; — &lt;code&gt;weft-app-shell&lt;/code&gt; is a per-process Servo host for application WebViews. It resolves &lt;code&gt;weft-app://&amp;lt;id&amp;gt;/ui/index.html&lt;/code&gt;, injects a &lt;code&gt;weftIpc&lt;/code&gt; WebSocket bridge into the page, and registers with the compositor as an application surface. Also feature-gated behind &lt;code&gt;servo-embed&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;App&lt;/strong&gt;…&lt;/p&gt;
&lt;/div&gt;
  &lt;/div&gt;
  &lt;div class="gh-btn-container"&gt;&lt;a class="gh-btn" href="https://github.com/marcoallegretti/WEFT_OS" rel="noopener noreferrer"&gt;View on GitHub&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;




&lt;p&gt;If you find this idea interesting, leave a comment.&lt;br&gt;
If you think it's crazy: leave a comment and debunk my idea.&lt;/p&gt;

&lt;p&gt;If you'd like to give me a little support, leave a Star on the GitHub repository.&lt;/p&gt;

</description>
      <category>opensource</category>
      <category>showdev</category>
      <category>linux</category>
      <category>css</category>
    </item>
  </channel>
</rss>
