This document started as the original MVP PRD for BROWZ.
Today, BROWZ has moved beyond that first bootstrap phase, so this file now serves two purposes:
- preserve the original product intent
- restate the current project direction in a way that matches the repo today
For day-to-day implementation priorities, use these as the primary sources of truth:
README.mdTODO.mddocs/core-web-80-compliance-matrix.mddocs/core-web-80-benchmarks.md
Build an open-source desktop browser MVP that proves a custom, non-Chromium browser architecture can:
- load simple documents
- render a small but meaningful subset of HTML/CSS
- execute browser-hosted JavaScript through V8
- remain understandable and hackable by contributors
The product was never meant to be a standards-complete browser. It was meant to be a believable small browser engine and shell.
BROWZ is now optimizing for Core Web 80 rather than just a toy MVP.
That means the near-term goal is no longer merely:
- "open a local HTML file"
It is now:
- load a representative set of real sites
- render them with believable structure and usable controls
- survive moderate JS without collapsing
- improve via benchmarks and regression tests rather than anecdotes
Representative targets include:
- Google homepage/search shell
- Wikipedia pages and portal layouts
- docs/article sites
- news/link-list pages
- simple forms/search flows
- moderately JS-enhanced public pages
Primary user:
- a developer-hacker who wants a browser codebase they can understand, modify, test, and extend
Secondary user:
- a contributor who wants to experiment with browser subsystems without needing Chromium-scale complexity
- Linux desktop only
- C++20
- custom browser shell and renderer
- optional embedded V8 runtime
- understandable modular codebase
- no Chromium/CEF/WebKit/QtWebEngine
- no pretense of full browser completeness
BROWZ now includes or targets:
file://,http://, andhttps://navigation- external stylesheets/scripts/images
- a growing browser-oriented DOM/runtime surface
- benchmark-driven progress tracking
- live-site compatibility work
- visual debug/checkout workflows for real pages
BROWZ is succeeding when a contributor can:
- clone the repo and build it from the README
- launch either V8-off or V8-on variants predictably
- open local examples and real public pages
- interact with links, search/forms, and basic text inputs
- use benchmark/docs/test artifacts to understand what broke and why
A representative page should:
- load without hanging
- render recognizable structure
- show readable text and major images/icons where supported
- expose usable controls/hit targets
- survive moderate JS enhancement
Still out of scope for now:
- full standards compliance
- consumer-browser polish
- multiprocess isolation as a first priority
- GPU acceleration
- tabs as the main immediate blocker
- full storage/cookie/history/security parity
- browser-extension parity
- media/DRM parity
- complete CSS Grid / full modern CSS parity
Core stack:
- C++20
- Lexbor for HTML parsing
- custom style/layout/paint pipeline
- SDL2 windowing in desktop mode
- software rendering
- optional V8 runtime
- libcurl-backed HTTP(S) loading when available
Engineering posture:
- benchmark-driven development
- regression tests for real compatibility wins
- general browser behavior improvements over site-specific hacks
- keep abstractions explicit and modest
Highest-value work right now:
- layout/render fidelity on representative real pages
- control/input/search usability
- positioned layout, sizing, and overflow correctness
- background-image/sprite and image fidelity improvements
- broader Core Web 80 regression coverage
BROWZ is not trying to be "done" as a browser.
For the current phase, it is "done enough" when:
- the benchmark/docs workflow is coherent
- major regressions are caught by tests or benchmark runs
- the project can browse a meaningful slice of ordinary public pages
- contributors can understand the system and extend it without fighting hidden complexity