<?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: Mohamed Ibrahim</title>
    <description>The latest articles on DEV Community by Mohamed Ibrahim (@aldgar).</description>
    <link>https://dev.to/aldgar</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.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F865890%2Fa6589b79-688c-47b7-8df0-f20eb16f5568.jpeg</url>
      <title>DEV Community: Mohamed Ibrahim</title>
      <link>https://dev.to/aldgar</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/aldgar"/>
    <language>en</language>
    <item>
      <title>Why are we still writing separate extensions for VS Code, JetBrains, and Zed?</title>
      <dc:creator>Mohamed Ibrahim</dc:creator>
      <pubDate>Sat, 23 May 2026 08:43:02 +0000</pubDate>
      <link>https://dev.to/aldgar/why-are-we-still-writing-separate-extensions-for-vs-code-jetbrains-and-zed-28n7</link>
      <guid>https://dev.to/aldgar/why-are-we-still-writing-separate-extensions-for-vs-code-jetbrains-and-zed-28n7</guid>
      <description>&lt;p&gt;I got tired of the fact that every time a developer wants to launch a tooling product, they have to write it three separate times: once in TypeScript for VS Code, once in Java/Kotlin for JetBrains, and again in Rust for Zed.&lt;br&gt;
It feels like an absolute waste of engineering hours. The IDE landscape has evolved, but the way we build extensions is stuck in a fragmented past.&lt;/p&gt;

&lt;p&gt;To try and solve this for myself, I've spent the last few months building OXP (Open Extension Protocol). It’s an open source infrastructure layer designed to let you build an extension once and run it across any host editor.&lt;/p&gt;

&lt;p&gt;How the Architecture Works Under the Hood: Instead of trying to map complex, bloated editor's specific APIs directly, OXP decouples the extension from the host entirely:&lt;/p&gt;

&lt;p&gt;The Component Model: Extensions are compiled into WebAssembly (WASM) components using WebAssembly Interface Type (WIT) files to define strict boundaries.&lt;/p&gt;

&lt;p&gt;The Communication Layer: A JSON RPC protocol handles the asynchronous communication bridge between the isolated WASM guest runtime and the native IDE host adapters.&lt;/p&gt;

&lt;p&gt;Sandboxed Execution: Because the plugins run in a lightweight WASM sandbox, a buggy or malicious extension can't crash the entire editor thread, leak memory, or steal local environment variables.&lt;/p&gt;

&lt;p&gt;The Current State &amp;amp; The VSX Wedge: Right now, I have host adapters running for VS Code and JetBrains.&lt;/p&gt;

&lt;p&gt;To bridge the "chicken and egg" ecosystem problem, I’ve also been hacking on an internal translation layer. Using a jco backend to execute JavaScript from WASM components inside a background Node process, I’m building a compatibility shim that intercepts require(vscode) calls from standard Open VSX .vsix packages.&lt;/p&gt;

&lt;p&gt;By mapping basic namespaces (window.showInformationMessage, workspace.fs, commands), I can get about 20% of existing, lightweight VS Code utilities running natively inside JetBrains right now. The other 80% the heavy language servers and complex WebViews is the long term mountain to climb.&lt;/p&gt;

&lt;p&gt;Where I Need Your Brutal Feedback: This is a massive undertaking for a solo developer, and the WIT boundary definitions are incredibly tricky to get right. I would love to hear from other tool authors or engine developers:&lt;/p&gt;

&lt;p&gt;Is the performance and UI rendering overhead of a universal JSON RPC/WASM layer too high a price to pay for cross platform portability?&lt;/p&gt;

&lt;p&gt;What core editor APIs should be prioritized next in the WIT definition to make this genuinely useful for your workflow?&lt;/p&gt;

&lt;p&gt;The codebase is completely open, and I’d appreciate your realistic, brutal architectural critiques.&lt;/p&gt;

&lt;p&gt;Repo: &lt;a href="https://github.com/oxprotocol/OXP" rel="noopener noreferrer"&gt;https://github.com/oxprotocol/OXP&lt;/a&gt;&lt;/p&gt;

</description>
      <category>hackernews</category>
      <category>extensions</category>
      <category>webdev</category>
      <category>programming</category>
    </item>
    <item>
      <title>OXP – Write one WASM extension, run natively in VS Code, JetBrains, and Neovim</title>
      <dc:creator>Mohamed Ibrahim</dc:creator>
      <pubDate>Sat, 16 May 2026 08:13:30 +0000</pubDate>
      <link>https://dev.to/aldgar/oxp-write-one-wasm-extension-run-natively-in-vs-code-jetbrains-and-neovim-13od</link>
      <guid>https://dev.to/aldgar/oxp-write-one-wasm-extension-run-natively-in-vs-code-jetbrains-and-neovim-13od</guid>
      <description>&lt;p&gt;Hi Folks,&lt;/p&gt;

&lt;p&gt;I’m the solo developer behind OXP (Open Extension Protocol).&lt;/p&gt;

&lt;p&gt;I built this out of pure frustration. &lt;/p&gt;

&lt;p&gt;Like many of you, I was tired of the fragmentation in the IDE tooling space. Building an extension meant maintaining separate codebases in TypeScript, Java/Kotlin, and Lua. Worse, in editors like VS Code, we are forced to rely on iframes and webviews for UI, which feel sluggish and disconnected from the native editor experience.&lt;/p&gt;

&lt;p&gt;OXP is my attempt to fix this. It’s an open-source protocol and host layer that lets you write an extension once (using React and WebAssembly) and run it natively across major code editors.&lt;/p&gt;

&lt;p&gt;How it works under the hood:&lt;/p&gt;

&lt;p&gt;WASM Sandboxing: Extensions are bundled as a single .oxp file and run securely via WASI Preview 2. This isolates the extension and forces explicit permission requests for network or file access.&lt;/p&gt;

&lt;p&gt;Zero-Latency IPC Bridge: Instead of running a webview, OXP translates your extension's actions directly into native IDE commands. It hooks directly into the native VS Code API, and for JetBrains, it uses JCEF to render as a native OS window.&lt;/p&gt;

&lt;p&gt;MCP Routing: I also built in a system-level router for the Model Context Protocol (MCP). If you use AI tools like Cursor or Copilot, you can configure your database or local context once via OXP, and it instantly wires that context across all detected IDEs on your machine.&lt;/p&gt;

&lt;p&gt;The Current State:&lt;/p&gt;

&lt;p&gt;My goal is to make this a community-driven standard. If you are interested in tooling, WASM, or just want to tell me why my IPC bridge implementation is flawed, I would deeply appreciate your feedback.&lt;/p&gt;

&lt;p&gt;I’ve optimized the repo so you can spin up a "Hello World" cross-editor extension locally in about two minutes.&lt;/p&gt;

&lt;p&gt;I’ll be here all day to answer questions, explain the architecture, or take your brutal feedback. Thanks for looking!&lt;/p&gt;

&lt;p&gt;Repo: &lt;a href="https://oxp.sh/docs" rel="noopener noreferrer"&gt;https://oxp.sh/docs&lt;/a&gt;&lt;br&gt;
Docs: &lt;a href="https://github.com/oxprotocol/OXP" rel="noopener noreferrer"&gt;https://github.com/oxprotocol/OXP&lt;/a&gt;&lt;/p&gt;

</description>
      <category>webdev</category>
      <category>vscode</category>
      <category>webassembly</category>
      <category>opensource</category>
    </item>
    <item>
      <title>I spent months fighting VS Code webviews, so I built an open source universal extension protocol</title>
      <dc:creator>Mohamed Ibrahim</dc:creator>
      <pubDate>Thu, 14 May 2026 00:49:59 +0000</pubDate>
      <link>https://dev.to/aldgar/i-spent-months-fighting-vs-code-webviews-so-i-built-an-open-source-universal-extension-protocol-20h7</link>
      <guid>https://dev.to/aldgar/i-spent-months-fighting-vs-code-webviews-so-i-built-an-open-source-universal-extension-protocol-20h7</guid>
      <description>&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feukfg6g8hitw43th6i0u.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feukfg6g8hitw43th6i0u.png" alt=" " width="800" height="276"&gt;&lt;/a&gt;Hey Folks,&lt;/p&gt;

&lt;p&gt;This project started because I simply wanted to build a new IDE to fix my own workflow bottlenecks. But I immediately hit a brick wall trying to build the tooling for it. I spent months, days, and nights trying to hack and fix VS Code extension webviews just to get a decent UI to render.&lt;/p&gt;

&lt;p&gt;I realized I was fighting a 33 year old architectural problem: extension vendor lock in. If you want your dev tool to reach people today, you have to write Electron/TypeScript for VS Code/Cursor, and Kotlin/JVM for JetBrains.&lt;/p&gt;

&lt;p&gt;So I stopped building the IDE, and I built the fix instead.&lt;/p&gt;

&lt;p&gt;Meet OXP (Open eXtensions Protocol).&lt;br&gt;
OXP is an open source universal standard that lets you write your extension once in React/WASM and run it natively across every major editor.&lt;/p&gt;

&lt;p&gt;How I fixed the Webview problem:&lt;br&gt;
This isn't a slow iframe hack. OXP uses a secure WebAssembly sandbox and a zero-latency IPC bridge. Your React code triggers an action, and OXP translates it to native IDE commands.&lt;/p&gt;

&lt;p&gt;In VS Code, it binds directly to the native extension API.&lt;/p&gt;

&lt;p&gt;In JetBrains, it uses JCEF to render as a native floating OS window.&lt;br&gt;
You get blazing fast native speed from a single codebase.&lt;/p&gt;

&lt;p&gt;**The Accidental MCP Fix:&lt;/p&gt;

&lt;p&gt;While building this universal host layer, I realized OXP perfectly solves the current Model Context Protocol (MCP) configuration hell.&lt;/p&gt;

&lt;p&gt;Instead of manually editing configurations for Cursor, Copilot, and JetBrains individually, OXP acts as a system level MCP router. If you run oxp install @modelcontextprotocol/server-postgres, the OXP daemon instantly wires that database context into the AI configurations of every detected IDE on your machine.&lt;/p&gt;

&lt;p&gt;I'm opening up the infrastructure today. The CLI is live, and you can test it on your machine right now.&lt;/p&gt;

&lt;p&gt;Initialize your environment: npm i -g @oxprotocol/cli&lt;br&gt;
Architecture and Docs: &lt;a href="https://oxp.sh" rel="noopener noreferrer"&gt;https://oxp.sh&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;I'll be in the comments all day to talk about the WASM bridge, IPC latency, fighting with JCEF, and why extension silos need to die.&lt;/p&gt;

</description>
      <category>showdev</category>
      <category>devtools</category>
      <category>opensource</category>
      <category>webdev</category>
    </item>
  </channel>
</rss>
