# Vergleich mit Penpot OpenPencil und Penpot sind beides Open-Source-Design-Tools, aber sie unterscheiden sich grundlegend in Architektur, Rendering und Dateiformaten. ## 1. Auf einen Blick | Metrik | Open Pencil | Penpot | |--------|-------------|--------| | Total LOC | **~26.000** | **~299.000** | | Quelldateien | ~143 | ~2.900 | | Sprachen | TypeScript, Vue | Clojure, ClojureScript, Rust, JS, SQL, SCSS | | Rendering-Engine | ~3.200 LOC (TS, 10 Dateien) | 22.000 LOC (Rust/Skia WASM) | | UI-Code | ~4.500 LOC | ~175.000 LOC (CLJS + SCSS) | | Backend | Keines (local-first) | 32.600 LOC + 151 SQL-Dateien | | LOC-Verhältnis | **1×** | **~11×** | Open Pencil ist **~11× kleiner** — und das ist der Punkt. Es ist keine Vereinfachung; es ist eine grundlegend andere Architektur. ## 2. Architektur | Aspekt | Open Pencil | Penpot | |--------|-------------|--------| | Rendering | Skia CanvasKit (GPU, WASM) | Skia Rust/WASM (render-wasm v1) | | Layout | Yoga WASM (CSS-Flexbox) | Eigene CLJS-Engine | | Dateiformat | Figmas Kiwi-Binär (.fig) | Eigenes SVG + penpot-Metadaten | | Desktop | Tauri v2 (~5 MB) | Kein nativer Client | | Backend | Keines (P2P) | Clojure + PostgreSQL + Redis | | Hosting | Läuft lokal, kein Server nötig | Erfordert Docker-Stack | ## 3. Rendering Open Pencil und Penpot verwenden beide Skia für das Rendering, aber die Implementierungen unterscheiden sich: - **Open Pencil**: CanvasKit WASM — bewährt, GPU-beschleunigt, dieselbe Engine wie Figma - **Penpot**: Eigener Rust/Skia-WASM-Renderer (render-wasm), ersetzt den früheren SVG-Renderer ## 4. Dateiformat | | Open Pencil | Penpot | |---|-------------|--------| | Native-Format | .fig (Kiwi-Binär) | .penpot (SVG + Metadaten) | | Figma-Import | Nativ | Plugin/Konverter | | Figma-Export | Nativ | Nicht unterstützt | | Figma-Zwischenablage | Bidirektional | Nicht unterstützt | | Dateigröße | Kompakt (Zstd-komprimiert) | Größer (SVG-Text + JSON) | ## 5. Layout | | Open Pencil | Penpot | |---|-------------|--------| | Engine | Yoga WASM (CSS-Flexbox) | Eigene CLJS-Implementierung | | CSS Grid | Nicht unterstützt | Unterstützt | | Flexbox | Vollständig (via Yoga) | Eigene Implementierung | | Korrektheit | Yoga wird auf Milliarden von Geräten getestet | Eigene Testmatrix | ## 6. Kollaboration | | Open Pencil | Penpot | |---|-------------|--------| | Modell | P2P (Trystero + Yjs CRDT) | Client-Server | | Cursor | ✅ Echtzeit | ✅ Echtzeit | | Offline | Vollständig offline-fähig | Erfordert Server | | Self-Hosting | Nicht nötig (P2P) | Docker-basiertes Self-Hosting | ## 7. Entwicklererlebnis | | Open Pencil | Penpot | |---|-------------|--------| | Beitragsumfang | ~143 TS-Dateien | 2.900+ Dateien, 4 Sprachen | | Build-System | Vite + Bun (Sekunden) | Shadow-CLJS + Docker (Minuten) | | Typensicherheit | TypeScript durchgängig | Clojure (dynamisch typisiert) | | Tests | Playwright + bun:test | Clojure-Test + Cypress | | Desktop-Build | `bun run tauri build` | Kein nativer Client | ## 8. Programmierbarkeit | | Open Pencil | Penpot | |---|-------------|--------| | CLI | ✅ Headless .fig-Operationen | ❌ Kein CLI | | AI-Werkzeuge | **87 Werkzeuge** + MCP-Server | Plugin-System | | JSX-Renderer | ✅ Programmgesteuerte Erstellung | ❌ | | Eval-Befehl | ✅ Figma Plugin API | ❌ | | Plugin-System | Über eval/MCP | ✅ Natives Plugin-System | ## 9. Desktop | | Open Pencil | Penpot | |---|-------------|--------| | Native App | ✅ Tauri v2 (~5 MB) | ❌ | | Offline | ✅ Vollständig | Erfordert Server | | System-Schriften | ✅ Vollständig | Nur hochgeladene | | Autosave | ✅ | Server-seitig | | Native Menüs | ✅ macOS/Windows/Linux | N/A | ## 10. KI-Integration | | Open Pencil | Penpot | |---|-------------|--------| | Integrierter Chat | ✅ OpenRouter-Integration | ❌ | | Werkzeugnutzung | 87 Design-Werkzeuge | ❌ | | MCP-Server | ✅ stdio + HTTP | ❌ | | Bring your own key | ✅ Kein Vendor-Lock-in | ❌ | ## 11. Skripting & Erweiterbarkeit | | Open Pencil | Penpot | |---|-------------|--------| | Headless CLI | ✅ 12 Befehle | ❌ | | Plugin API | Figma-kompatibel | Eigene Plugin API | | MCP-Server | ✅ 90 Werkzeuge | ❌ | | Eval-Befehl | ✅ JS-Ausführung | ❌ | | JSX-Renderer | ✅ Programmatisch | ❌ | ## Zusammenfassung | Stärke | Gewinner | Grund | |--------|----------|-------| | **Figma-Kompatibilität** | Open Pencil | Natives .fig + Zwischenablage | | **Programmierbarkeit** | Open Pencil | CLI, eval, JSX, MCP-Server | | **Desktop-Erlebnis** | Open Pencil | Native Tauri-App, ~5 MB | | **KI-Integration** | Open Pencil | 90 Werkzeuge, MCP, integrierter Chat | | **Codebasis-Einfachheit** | Open Pencil | 11× weniger Code, 1 Sprache | | **CSS Grid** | Penpot | Yoga unterstützt es noch nicht | | **SVG-native** | Penpot | SVG ist die Muttersprache | | **Self-Hosting** | Penpot | Docker-bereit vs. Desktop-only | | **Ökosystem-Reife** | Penpot | Jahre der Produktion vs. frühe Phase | Open Pencil ist architektonisch schlanker — ein Single-Process-CanvasKit-Renderer in ~26K LOC TypeScript, Figma-kompatibel by Design. Penpot ist eine Full-Stack-Plattform mit ~299K LOC über Clojure, ClojureScript, Rust und SCSS, plus eine Docker-Service-Flotte. Beide bieten jetzt Echtzeit-Kollaboration (unterschiedliche Architekturen: P2P vs. Server). Penpot hat ein Plugin-Ökosystem und serverseitigen PDF-Export; Open Pencil hat Figma-kompatibles Headless-Scripting, **90 KI/MCP-Werkzeuge**, SVG-Export und eine native Desktop-App.