-
Notifications
You must be signed in to change notification settings - Fork 37
Open
Description
Summary
I'd like to propose exploring potential alignment between VS Code's WASM extension work and the emerging WebAssembly IDE Extension Standard - an open, IDE-agnostic specification for building sandboxed IDE extensions using WebAssembly.
Motivation
The WebAssembly IDE Extension Standard aims to enable write-once, run-anywhere IDE extensions through:
- Portability: Extensions work across any IDE implementing the standard
- Security: Capability-based permissions with fine-grained access control
- WASI Alignment: Built on WASI 0.2+ and the Component Model
- WIT Interfaces: Standardized interface definitions for IDE capabilities
VS Code's WASM work is excellent for running WASM within VS Code, but exploring cross-IDE portability could benefit the broader developer ecosystem.
Comparison
| Aspect | vscode-wasm | IDE Extension Standard |
|---|---|---|
| Scope | VS Code only | IDE-agnostic |
| Model | WASM within JS extension | Pure WASM extension |
| Permissions | Extension-level | Fine-grained capability-based |
| Interfaces | VS Code APIs | WIT-defined contracts |
Potential Benefits
- Ecosystem Growth: Extensions could run on VS Code, JetBrains IDEs, Zed, etc.
- Security Model: Fine-grained permissions (e.g.,
workspace:read,network:fetch:*.example.com) - Standardization: Common WIT interfaces for editor, workspace, UI, and language features
- Interoperability: Shared tooling and extension formats
Proposed Actions
- Review the specification
- Evaluate WIT interface definitions in the wit/ directory
- Consider if VS Code could optionally support extensions built to this standard
- Discuss potential collaboration on interface standardization
References
- WebAssembly IDE Extension Standard
- Specification Overview
- WIT Interface Definitions
- Example Extension
I'd love to hear the team's thoughts on this direction. Happy to discuss further or contribute if there's interest in exploring this.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels