Gosub – An open-source browser engine
Project Goals and Scope
- New Rust-based browser engine intended to diversify the engine ecosystem and avoid monoculture, especially given concerns about Google’s dominance.
- Emphasis on modularity: components should be swappable over time, with uncertainty about exactly how much will be written from scratch vs. reused.
- Current focus appears to be HTML/CSS parsing and basic layout; writing a JavaScript engine is officially “out of scope” but a personal JS engine exists and may be integrated.
- Long‑term monetization and organizational model are not clearly defined; contributors acknowledge some of these answers are “unknown” for now.
Reuse vs. Existing Projects (Servo, etc.)
- Multiple commenters ask why effort isn’t going into Servo or a fork of existing engines.
- Counterarguments:
- People are free to work on what they find fun or meaningful.
- Joining an existing project can involve politics and limited influence; starting anew allows setting one’s own agenda.
- Forking doesn’t really avoid “why don’t you just…” criticism.
Feasibility and Complexity
- Many stress that modern browser engines are enormous, security‑critical, and spec‑heavy; burnout and abandoned projects are common.
- Some see Gosub as primarily an intellectual or educational exercise, unlikely to become a mainstream end‑user browser; others point to historical precedents where “hobby” projects became central infrastructure.
- Discussion notes HTML5 parsing is relatively well-specified, but layout/CSS behavior is full of ambiguities and underspecification, making compatibility hard.
Rust, Security, and Architecture Choices
- Rust is seen as a strong fit for browser engines: performance similar to C/C++ with improved memory safety, attractive to contributors, and good for security in a hostile environment.
- Some caution that language choice only reduces, not eliminates, risk, and criticize “rewrite it in Rust” absolutism.
- Concern is raised about the project implementing its own bytestream abstraction instead of reusing mature Rust libraries; maintainers respond that it was an early decision and is now swappable.
Use Cases and Niches
- Several commenters suggest focusing on niches: embedded devices, automation/QA, or lightweight Electron‑like app hosting, where partial spec support might be acceptable.
- Maintainers express interest in low memory usage and possibly compile-time feature flags, and longer‑term ideas about WASM-based applications with minimal or no JavaScript.
Branding, Naming, and Perception
- The “Gosub” name evokes BASIC’s
GOSUBand prompts nostalgia and jokes; some find it confusing given it’s not written in Go. - The AI‑influenced logo and tagline (“optimized search and unlimited browsing”) are perceived by some as vague or slightly “scammy”; others defend them or see branding as low priority at this stage.