From e6d10a52c1ba3ff0f00fec141635bf5622c20446 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Frank=20Finn=C3=B8y=20Burmo?= Date: Mon, 22 Jun 2026 08:02:11 +0200 Subject: [PATCH] update content --- website/sider/about.html | 164 +++++++------- website/sider/about.md | 99 ++++++--- website/sider/history.html | 127 ++++++++--- website/sider/history.md | 58 +++-- website/sider/philosophy.html | 389 +++++++++++++++------------------- website/sider/philosophy.md | 147 +++++-------- website/sider/technology.html | 318 ++++++++++++++------------- website/sider/technology.md | 389 ++++++++-------------------------- website/sitemap.xml | 8 +- 9 files changed, 782 insertions(+), 917 deletions(-) diff --git a/website/sider/about.html b/website/sider/about.html index 29682de..16f50f0 100644 --- a/website/sider/about.html +++ b/website/sider/about.html @@ -3,20 +3,20 @@ - About Bare — A minimal Markdown browser - + About Bare — A reading instrument for the text internet + - - + + - - + + @@ -69,83 +69,85 @@

About Bare

- Bare is an experimental browser with a radical focus on what truly matters: - the content. In an era where websites have become bloated, - overflowing with scripts, ads, and tracking, Bare offers a future where you - only see what you came to read. + Bare is an experimental, open-source reading instrument for the + text internet. It is not a smaller version of Chrome — it is a different kind + of tool that does one thing deliberately: take whatever a server sends and turn it + into clean, consistent, private text that you control.


-
-

What Makes Bare Different?

+
+

What reading in Bare is actually like

-
-
- -

Pure Markdown Rendering

-

- Bare is designed to display Markdown files directly. When you visit a URL - pointing to a .md file, it is fetched and displayed immediately - in a clean, readable format. No HTML chaos, no distracting CSS, no JavaScript - loading. -

-
- -
- -

Zero Tracking. Ever.

-

- Bare does not support JavaScript, cookies, or any tracking - technology. This isn't a setting you can forget to enable — it's built into - the architecture. Your browsing remains private, by design. -

-
- -
- -

Blazing Fast Performance

-

- Without heavy frameworks, scripts, or ads, pages load in milliseconds rather - than seconds. Bare fetches and displays only what matters: the content. -

-
- -
- -

Multi-Protocol Support

-

- In addition to standard HTTP/HTTPS, Bare supports Gemini, Gopher, and local - files. Explore the text-based internet as it was meant to be. -

-
-
+

The difference is easiest to feel in a single click.

+

+ You type an address — or open a local .md file, a + gemini:// capsule, or an old gopher:// menu. Bare's Rust + core fetches that one document and nothing else. If it's an + ordinary web page, Bare reads the underlying HTML, scores it to find the actual + article, and throws away the navigation bars, the cookie wall, the newsletter + pop-up, the share buttons, the comment section, and the ad slots. What's left is + converted to Markdown, sanitized, and rendered. +

+

+ You then read it in your theme, your font, + your line width, your zoom level — the same + way every page looks, because presentation is your decision, not the author's. + Click a link and the whole calm process repeats. No layout shift, no scripts + spinning up, no fonts or beacons loading in the background. Just the next document. +

+

+ That is the entire product: the web, minus everything that isn't what you came to + read. +


-
-

Who is Bare For?

+
+

The problem it solves

-

Bare is perfect for:

+

+ Reading something online has quietly become one of the most hostile experiences in + computing. A short article can pull in megabytes of JavaScript, a dozen + third-party trackers, autoplaying video, and several interruptions before you reach + the first sentence — and the page often reflows under your eyes while it loads. +

+

+ Bare assumes you opened the link to read the thing, and removes + everything standing between you and that goal. The result is faster, quieter, and + private not because you configured it to be, but because the parts that make pages + slow and invasive are simply absent. +

+
+ +
+ +
+

Who Bare is for

  • - Writers and researchers who want to read and write without + Writers and researchers who want to read long-form text without distractions
  • - Privacy-conscious users who don't want to be tracked + Privacy-conscious people who would rather not be measured, + profiled, and followed
  • - Minimalists who prefer simplicity over complexity + Minimalists who prefer one calm format to a thousand competing + designs
  • - Technology enthusiasts curious about alternative web experiences + Tinkerers and the curious exploring Gemini, Gopher, and the + text internet
  • - Anyone who misses the original, text-based internet + Anyone who remembers when the web was mostly documents, and + misses it
@@ -155,47 +157,55 @@

Who is Bare For?

What Bare is NOT

+

Being clear about the boundaries is part of the design:

+
❌ - A full-featured browser — We will never support JavaScript + A full-featured web browser — it will never run JavaScript
❌ - An HTML renderer — Only Markdown is first-class + A faithful HTML renderer — only the readable text is first-class; pixel-perfect layouts are not the goal
❌ - A text editor — View only, not editing + An editor or publishing tool — Bare reads; it does not write
❌ - A social media tool — No integration with social platforms + A social or "platform" app — no accounts, no feeds, no sharing widgets
+ +

+ If you need any of those, a conventional browser is the right tool. Bare is + intentionally not trying to be one. +


-
-

Why Create Such a Browser?

- -

- The internet has changed dramatically since its inception. Where it was once - an open, text-based platform for sharing information, it's now a commercial - arena filled with tracking, ads, and distracting elements. -

+
+

An honest status

- Bare is an attempt to revive the original spirit of the internet: + Bare is early and experimental, released under the + GPL-3.0 license and developed in the open. What works today:

    -
  • Content over presentation
  • -
  • Privacy over surveillance
  • -
  • Simplicity over complexity
  • -
  • User control over platform control
  • +
  • Reading over HTTP/HTTPS with readability extraction
  • +
  • The Gemini protocol (with TOFU certificate trust)
  • +
  • The Gopher protocol (RFC 1436)
  • +
  • Local Markdown files via file://
  • +
  • Themes, typography, zoom, bookmarks, in-page search, and a command palette — in 13 languages
+ +

+ It is small, it is opinionated, and it is honest about what it does not do. If that + resonates, you are exactly who it was built for. +


diff --git a/website/sider/about.md b/website/sider/about.md index 563d23a..a283c29 100644 --- a/website/sider/about.md +++ b/website/sider/about.md @@ -2,65 +2,64 @@ > "The browser that gets out of your way, so the content can shine." -Bare is an experimental browser with a radical focus on what truly matters: **the content**. In an era where websites have become bloated, overflowing with scripts, ads, and tracking, Bare offers a future where you only see what you came to read. +Bare is an experimental, open-source **reading instrument** for the text internet. It is not a smaller version of Chrome β€” it is a different kind of tool that does one thing deliberately: take whatever a server sends and turn it into clean, consistent, private text that *you* control. --- -## What Makes Bare Different? +## What reading in Bare is actually like -### πŸ“„ Pure Markdown Rendering +The difference is easiest to feel in a single click. -Bare is designed to display Markdown files directly. When you visit a URL pointing to a `.md` file, it is fetched and displayed immediately in a clean, readable format. No HTML chaos, no distracting CSS, no JavaScript loading. +You type an address β€” or open a local `.md` file, or a `gemini://` capsule, or an old `gopher://` menu. Bare's Rust core fetches **that one document and nothing else**. If it's an ordinary web page, Bare reads the underlying HTML, scores it to find the actual article, and throws away the navigation bars, the cookie wall, the newsletter pop-up, the share buttons, the comment section, and the ad slots. What's left is converted to Markdown, sanitized, and rendered. -### 🚫 Zero Tracking. Ever. +You then read it in **your** theme, **your** font, **your** line width, **your** zoom level β€” the same way every page looks, because presentation is your decision, not the author's. Click a link and the whole calm process repeats. No layout shift, no scripts spinning up, no fonts or beacons loading in the background. Just the next document. -Bare does **not** support JavaScript, cookies, or any tracking technology. This isn't a setting you can forget to enable β€” it's built into the architecture. Your browsing remains private, by design. +That is the entire product: the web, minus everything that isn't what you came to read. -### ⚑ Blazing Fast Performance - -Without heavy frameworks, scripts, or ads, pages load in milliseconds rather than seconds. Bare fetches and displays only what matters: the content. +--- -### 🌐 Multi-Protocol Support +## The problem it solves -In addition to standard HTTP/HTTPS, Bare supports: +Reading something online has quietly become one of the most hostile experiences in computing. A short article can pull in megabytes of JavaScript, a dozen third-party trackers, autoplaying video, and several interruptions before you reach the first sentence β€” and the page often reflows under your eyes while it loads. -- **Gemini** (`gemini://`) β€” A modern, text-based protocol with mandatory encryption -- **Gopher** (`gopher://`) β€” The classic, menu-driven protocol from 1991 -- **Local files** (`file://`) β€” Open Markdown files directly from your computer +Bare assumes you opened the link to **read the thing**, and removes everything standing between you and that goal. The result is faster, quieter, and private not because you configured it to be, but because the parts that make pages slow and invasive are simply absent. --- -## Who is Bare For? - -Bare is perfect for: +## Who Bare is for -- **Writers and researchers** who want to read and write without distractions -- **Privacy-conscious users** who don't want to be tracked -- **Minimalists** who prefer simplicity over complexity -- **Technology enthusiasts** curious about alternative web experiences -- **Anyone who misses the original, text-based internet** +- **Writers and researchers** who want to read long-form text without distractions +- **Privacy-conscious people** who would rather not be measured, profiled, and followed +- **Minimalists** who prefer one calm format to a thousand competing designs +- **Tinkerers and the curious** exploring Gemini, Gopher, and the text internet +- **Anyone who remembers** when the web was mostly documents, and misses it --- ## What Bare is NOT -❌ **A full-featured browser** β€” We will never support JavaScript -❌ **An HTML renderer** β€” Only Markdown is first-class -❌ **A text editor** β€” View only, not editing -❌ **A social media tool** β€” No integration with social platforms +Being clear about the boundaries is part of the design: + +- ❌ **A full-featured web browser** β€” it will never run JavaScript +- ❌ **A faithful HTML renderer** β€” only the readable text is first-class; pixel-perfect layouts are not the goal +- ❌ **An editor or publishing tool** β€” Bare reads; it does not write +- ❌ **A social or "platform" app** β€” no accounts, no feeds, no sharing widgets + +If you need any of those, a conventional browser is the right tool. Bare is intentionally not trying to be one. --- -## Why Create Such a Browser? +## An honest status -The internet has changed dramatically since its inception. Where it was once an open, text-based platform for sharing information, it's now a commercial arena filled with tracking, ads, and distracting elements. +Bare is **early and experimental**, released under the **GPL-3.0** license and developed in the open. What works today: -Bare is an attempt to **revive the original spirit** of the internet: +- Reading over **HTTP/HTTPS** with readability extraction +- The **Gemini** protocol (with TOFU certificate trust) +- The **Gopher** protocol (RFC 1436) +- **Local Markdown files** via `file://` +- Themes, typography, zoom, bookmarks, in-page search, and a command palette β€” in 13 languages -- **Content over presentation** -- **Privacy over surveillance** -- **Simplicity over complexity** -- **User control over platform control** +It is small, it is opinionated, and it is honest about what it does not do. If that resonates, you are exactly who it was built for. --- @@ -88,6 +87,40 @@ cargo tauri build ## Learn More +- [Philosophy](./philosophy.md) β€” why the reader, not the author, is in charge +- [Technology](./technology.md) β€” how the reading pipeline is built +- [History](./history.md) β€” the lineage Bare belongs to, from MultiTorg to Gemini + +--- + +*"For a world where content matters more than animations."* + +--- + +[Back to Home](../index.md) | [GitHub](https://github.com/FrankBurmo/bare) | [License (GPL-3.0)](../LICENSE) + +### πŸ“₯ Download + +Pre-built binaries are under development. Check [GitHub Releases](https://github.com/FrankBurmo/bare/releases) for the latest builds for Windows, macOS, and Linux. + +### πŸ› οΈ Build from Source + +Requirements: +- [Rust](https://rustup.rs/) (latest stable version) +- [Node.js](https://nodejs.org/) (for Tauri CLI) +- [Tauri prerequisites](https://tauri.app/v2/guides/prerequisites/) + +```bash +git clone https://github.com/FrankBurmo/bare.git +cd bare +cargo install tauri-cli +cargo tauri build +``` + +--- + +## Learn More + - [Philosophy](./philosophy.md) β€” What Bare stands for - [Technology](./technology.md) β€” What Bare is built with - [History](./history.md) β€” The background and inspiration diff --git a/website/sider/history.html b/website/sider/history.html index 2c515c2..7dc9ebb 100644 --- a/website/sider/history.html +++ b/website/sider/history.html @@ -3,26 +3,26 @@ - History — The background of Bare and text-based internet - + History — From MultiTorg to Gemini + - - + + - - + + - + @@ -52,7 +52,7 @@

History

-

"Those who cannot remember the past are condemned to repeat it."

+

Who controls a document — the author, or the reader?

@@ -64,15 +64,59 @@

History

-

"Those who cannot remember the past are condemned to repeat it."

- — George Santayana +

"There is an unresolved tension between the sender and recipient of information — who is to be in charge of the final form presentation? HTML clearly champions the recipient."

+ Telektronikk 4/93

- The history of Bare is not just the history of a browser, but also the history - of the internet itself — how it started as an open, text-based - platform, became commercialized and complex, and how a new movement is now - trying to revive the original spirit. + Bare's story is really one long argument about a single question: when + you read a document, who decides how it looks — the author, or you? + The web has answered that question differently in different decades. Bare exists + to give one particular answer — you do — and this page traces + how that question was first asked, gradually lost, and is now being asked again. +

+
+ +
+ +
+

πŸ‡³πŸ‡΄ A Norwegian thread (1993)

+ +

+ Before the web was commercial, it was an experiment — and some of that + experiment happened in Norway. +

+

+ In 1993, researchers at Norwegian Telecom Research (Televerkets + Forskningsinstitutt) were building MultiTorg, an early + "distributed electronic information marketplace." Their account of it appeared in + the journal Telektronikk 4/93, which became one of + the first journals in the world published in full on the World Wide Web and + went on to win a "Best of the Web '94" award. +

+

+ The problem they described is the one the internet has never fully solved: a + "Tower of Babel" of incompatible document formats. Their survey + ran through the contenders — the rich and complex ODA + (Office Document Architecture), the flexible SGML, and SGML's + small, pragmatic offspring, HTML — and reached a conclusion + that still defines Bare: +

+
+

"There is an unresolved tension between the sender and recipient of information — who is to be in charge of the final form presentation? HTML clearly champions the recipient."

+
+

+ On the early web, in other words, the reader was in charge. The + author marked up meaning; the reader's software decided the + appearance. +

+

+ One of the article's co-authors was HΓ₯kon Wium Lie. Two years + later, in 1994, he proposed Cascading Style Sheets (CSS) — + handing a measure of presentational control back to authors. It was a reasonable + idea that, over three decades, helped tilt the balance all the way to today's web, + where the author (and the advertiser) controls nearly everything and the reader + controls almost nothing. Bare is, in a sense, a vote for the 1993 position.

@@ -280,22 +324,34 @@

Gemini Protocol (2019)

Background:

- Solderpunk was part of the Gopherspace community and had - become frustrated with: + Solderpunk was active in the Gopherspace community and had + grown frustrated with the modern web's complexity, its surveillance, and the + way even "simple" pages had become heavy and hostile. Gemini was an attempt to + build something deliberately in between — and to make it impossible to + grow into another web. +

+ +

Why "Gemini"?

+

+ The name references NASA's Gemini space program — the + "middle child" between Mercury and Apollo. + Gemini the protocol sees itself the same way: more capable than + Gopher (Mercury) but far simpler than the web + (Apollo), doing more with less rather than trying to do everything.

-
    -
  • Complexity of the modern Web
  • -
  • Privacy issues
  • -
  • Lack of simple, text-based communication
  • -
-

Gemini's design goals:

+

Design principles:

    -
  1. Simpler than Web, but more powerful than Gopher
  2. -
  3. Mandatory TLS encryption (no insecure connections)
  4. -
  5. Text-based (but with support for binary files)
  6. -
  7. Client-driven (the client decides how content is displayed)
  8. +
  9. Privacy — minimal metadata, no cookies, no tracking; "break all loops"
  10. +
  11. User autonomy — the client decides how content is presented, not the author
  12. +
  13. Non-extensibility — intentionally hard to extend, so it cannot bloat
  14. +
  15. Simplicity — a complete client can be written by one person in a weekend
+

+ Every request uses mandatory TLS and follows a strict "one + network transaction per click" rule — fetching a page never drags in + fonts, scripts, or trackers. +

Gemtext format:

# Heading
@@ -305,13 +361,22 @@ 

Gemtext format:

=> https://example.com Link description
-

Gemini today (2026):

+

A small but real network:

+

+ After a surge of attention on Hacker News in May 2020, + Geminispace grew into a modest, deliberately non-commercial community. A + mid-2023 crawl counted roughly: +

    -
  • ~3,900 known servers ("capsules")
  • -
  • ~600,000+ URIs in "Geminispace"
  • -
  • Growing community of developers and users
  • -
  • Many clients (browsers) available
  • +
  • ~425,000 URLs
  • +
  • ~2,500 capsules (sites)
  • +
  • ~1,700 domains across ~1,200 hosts
+

+ Small by web standards — and that is exactly the point. Gemini is, in + its own words, more like browsing a library than wandering through a shopping + mall or a casino. +

diff --git a/website/sider/history.md b/website/sider/history.md index 6c37781..2da8cc5 100644 --- a/website/sider/history.md +++ b/website/sider/history.md @@ -1,8 +1,27 @@ # History -> "Those who cannot remember the past are condemned to repeat it." – George Santayana +> *"There is an unresolved tension between the sender and recipient of information β€” who is to be in charge of the final form presentation? HTML clearly champions the recipient."* +> β€” *Telektronikk* 4/93 -The history of Bare is not just the history of a browser, but also the history of **the internet itself** – how it started as an open, text-based platform, became commercialized and complex, and how a new movement is now trying to revive the original spirit. +Bare's story is really one long argument about a single question: **when you read a document, who decides how it looks β€” the author, or you?** The web has answered that question differently in different decades. Bare exists to give one particular answer β€” *you do* β€” and this page traces how that question was first asked, gradually lost, and is now being asked again. + +--- + +## πŸ‡³πŸ‡΄ A Norwegian thread (1993) + +Before the web was commercial, it was an experiment β€” and some of that experiment happened in Norway. + +In 1993, researchers at **Norwegian Telecom Research** (Televerkets Forskningsinstitutt) were building **MultiTorg**, an early "distributed electronic information marketplace." Their account of it appeared in the journal **_Telektronikk_ 4/93**, which became *one of the first journals in the world published in full on the World Wide Web* and went on to win a **"Best of the Web '94"** award. + +The problem they described is the one the internet has never fully solved: a **"Tower of Babel"** of incompatible document formats. Their survey ran through the contenders β€” the rich and complex **ODA** (Office Document Architecture), the flexible **SGML**, and SGML's small, pragmatic offspring, **HTML** β€” and reached a conclusion that still defines Bare: + +> *"There is an unresolved tension between the sender and recipient of information β€” who is to be in charge of the final form presentation? HTML clearly champions the recipient."* + +On the early web, in other words, **the reader was in charge.** The author marked up *meaning*; the reader's software decided the *appearance*. + +One of the article's co-authors was **HΓ₯kon Wium Lie**. Two years later, in 1994, he proposed **Cascading Style Sheets (CSS)** β€” handing a measure of presentational control back to authors. It was a reasonable idea that, over three decades, helped tilt the balance all the way to today's web, where the author (and the advertiser) controls nearly everything and the reader controls almost nothing. + +Bare is, in a sense, a vote for the 1993 position. --- @@ -118,17 +137,20 @@ In **June 2019**, a developer under the pseudonym [Solderpunk](https://geminipro **Background:** -Solderpunk was part of the **Gopherspace community** and had become frustrated with: -- The complexity of the modern Web -- Privacy issues -- Lack of simple, text-based communication +Solderpunk was active in the **Gopherspace community** and had grown frustrated with the modern web's complexity, its surveillance, and the way even "simple" pages had become heavy and hostile. Gemini was an attempt to build something deliberately in between β€” and to make it impossible to grow into another web. + +**Why "Gemini"?** + +The name is a reference to NASA's **Gemini space program** β€” the "middle child" between **Mercury** and **Apollo**. Gemini the protocol sees itself the same way: more capable than **Gopher** (Mercury) but far simpler than the **web** (Apollo), doing more with less rather than trying to do everything. -**Gemini's design goals:** +**Design principles:** -1. Simpler than Web, but more powerful than Gopher -2. **Mandatory TLS encryption** (no insecure connections) -3. **Text-based** (but with support for binary files) -4. **Client-driven** (the client decides how content is displayed) +1. **Privacy** β€” minimal metadata, no cookies, no user-tracking; "break all loops" +2. **User autonomy** β€” the *client* decides how content is presented, not the author +3. **Non-extensibility** β€” the protocol is intentionally hard to extend, so it cannot bloat +4. **Simplicity** β€” a complete client can be written by one person in a weekend + +Every request uses **mandatory TLS** and follows a strict "one network transaction per click" rule β€” fetching a page never drags in fonts, scripts, or trackers. **Gemtext format:** ```gemini @@ -140,11 +162,15 @@ This is a paragraph. => https://example.com Link description ``` -**Gemini today (2026):** -- **~3,900 known servers** ("capsules") -- **~600,000+ URIs** in "Geminispace" -- **Growing community** of developers and users -- **Many clients** (browsers) available +**A small but real network:** + +After a surge of attention on Hacker News in **May 2020**, Geminispace grew into a modest, deliberately non-commercial community. A mid-2023 crawl counted roughly: + +- **~425,000** URLs +- **~2,500** capsules (sites) +- **~1,700** domains across **~1,200** hosts + +Small by web standards β€” and that is exactly the point. Gemini is, in its own words, more like browsing a library than wandering through a shopping mall or a casino. --- diff --git a/website/sider/philosophy.html b/website/sider/philosophy.html index a4e1c30..1c4370d 100644 --- a/website/sider/philosophy.html +++ b/website/sider/philosophy.html @@ -3,20 +3,20 @@ - Philosophy — Bare's vision for a better internet - + Philosophy — Who is the internet for? + - - + + - - + + @@ -52,7 +52,7 @@

Philosophy

-

"Simplicity is the ultimate sophistication."

+

Who is the internet for — the author, or the reader?

@@ -64,252 +64,203 @@

Philosophy

-

"Simplicity is the ultimate sophistication."

- — Leonardo da Vinci +

"There is an unresolved tension between the sender and recipient of information — who is to be in charge of the final form presentation? HTML clearly champions the recipient."

+ — Solvoll, IvarsΓΈy, Lie & Dybvik, Telektronikk 4/93

- Bare is more than just a browser — it's a philosophy - about how the internet should be. In an age where websites have become - increasingly heavy, complex, and intrusive, Bare represents a radical - alternative: a return to the fundamentals. + Bare is the answer to a question the web has spent thirty years trying to + forget: when you open a document, who is in charge — the person + who wrote it, or the person reading it? +

+

+ In 1993, four researchers at Norwegian Telecom Research wrote that the young + World Wide Web "championed the recipient." The reader decided how a page looked. + One of those researchers, HΓ₯kon Wium Lie, would propose CSS two years later + — and the balance began tilting back toward the author. Three decades on, + it has tilted so far that the reader has all but disappeared beneath layout, + scripts, pop-ups, and surveillance. Bare takes the 1993 position and refuses to + compromise on it: the reader is sovereign.


-
-

🧭 Core Values

- -
-
- 1 -

Content is King

-

- On the original internet, content was paramount. Websites were simple - HTML documents, and users could view the source and understand how - everything worked. -

-

- Today, websites are often cluttered with megabytes of JavaScript, complex - CSS frameworks, ads, and tracking. Bare removes all this noise and displays - only what truly matters: the content. -

-
- -
- 2 -

Privacy is Not a Setting — It's the Architecture

-

- Most browsers have privacy settings that you can turn on or off. - The problem is that these settings often are complex, can be forgotten, - don't provide full protection, or are overridden by websites. -

-

- In Bare, privacy is built into the design itself: -

- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FeatureStatus in BarePrivacy Benefit
JavaScriptNot supportedZero tracking, no malware
CookiesNot supportedNo third-party tracking
CSSMinimalNo CSS fingerprinting
ImagesOptionalPrevents tracking pixels
TrackingImpossibleFull protection
-
- -

- This means you never need to worry about whether your - privacy is enabled — it always is. -

-
- -
- 3 -

Simplicity Over Complexity

-

- Modern browsers have become extremely complex: they support countless - standards and protocols, have hundreds of settings, and consume large - amounts of memory and CPU. -

-

- Bare takes the opposite approach: -

-
    -
  • Fewer features = fewer bugs = more stability
  • -
  • Less code = faster performance = better experience
  • -
  • Simpler design = easier to understand = better user control
  • -
-
- -
- 4 -

User Control Over Platform Control

-

- Most browsers today are designed to collect data about you, lock you into - an ecosystem, or force you to use certain services. -

-

- Bare gives you control back: -

-
    -
  • Open source: You can see how everything works
  • -
  • Local files: You own your data
  • -
  • No telemetry: No data is ever sent
  • -
  • Configurable: You decide how the browser behaves
  • -
-
-
+
+

πŸ‘‘ The reader is sovereign

+

+ The author supplies meaning. You supply the presentation. +

+

+ Theme, typography, line width, zoom level, whether images load at all — + these are your decisions, made once and honored on every page you visit. A + document author can tell you what they mean, but they cannot dictate the font + you read it in, hijack your scroll, or decide that you must see their + advertising to reach their words. +

+

+ This is not a "reader mode" you toggle on for the rare unbearable page. In Bare + it is the only mode. Every document, from every source, arrives in one + consistent, legible form that you control. +


-
-

🌱 Inspiration

- +
+

πŸͺΆ Simplicity is the winning strategy

- Bare is inspired by several movements and projects: + The history of document formats is a history of simplicity defeating power.

- -
-
-

πŸ–₯️ Text-Based Browsers

-

- The earliest browsers were text-based, and they continue to inspire: -

-
    -
  • Lynx (1992) — The oldest browser still maintained
  • -
  • Links — Text-based with optional graphical mode
  • -
  • w3m (1995) — Supports colors, SSL, and inline images
  • -
-

- These browsers prove that you can have a full web experience - without graphics, JavaScript, or complex layouts. -

-
- -
-

🌐 Minimalist Protocols

-
    -
  • Gemini — A modern, text-based protocol with mandatory encryption
  • -
  • Gopher — The classic, menu-driven protocol from 1991
  • -
-

- These protocols show that there are alternatives to the heavy, complex web. -

-
- -
-

πŸ“ Markdown Movement

-

- Markdown, created by John Gruber in 2004 - with contributions from Aaron Swartz, - represents a philosophy of simple, readable formatting: -

-
    -
  • Readable as plain text: Markdown files look good even without formatting
  • -
  • Easy to learn: The syntax is intuitive and similar to existing conventions
  • -
  • Machine-readable: Easy to parse and convert to other formats
  • -
-
-
+

+ In the early 1990s, the rich and ambitious ODA (Office Document + Architecture) standard competed with the humble SGML, and + SGML's simplest application — HTML — won the web + outright. It won precisely because it was easy to implement and easy to + read. The simplest format that is "good enough" wins, every time. +

+
ODA  β†’  SGML  β†’  HTML  β†’  Markdown
+(rich, complex)        (simple, human-readable)
+

+ Bare bets that the same evolution is happening again. HTML has become the new + ODA: technically universal, but bloated past the point of usefulness. + Markdown is the next "good enough" format — readable as + plain text, trivial to parse, impossible to weaponize. Bare is built on that bet. +

+

Fewer moving parts is itself the feature:

+
    +
  • Fewer features β†’ fewer bugs β†’ more stability
  • +
  • Less code β†’ faster rendering β†’ a calmer experience
  • +
  • A smaller surface β†’ less to attack, less to track, less to break
  • +

-
-

🎯 Vision

- -

Bare has a long-term vision:

+
+

πŸ”’ Privacy is the architecture, not a checkbox

+

+ Most browsers treat privacy as a setting — something you can enable, + forget, misconfigure, or have silently overridden by a website. Bare treats it + as a structural property that cannot be switched off, because the capabilities + that enable tracking simply do not exist. +

-
-
- Short-term (0-2 years) -
    -
  • Full Markdown rendering support
  • -
  • Stable support for Gemini and Gopher
  • -
  • Good performance and usability
  • -
-
- -
- Medium-term (2-5 years) -
    -
  • A full ecosystem for text-based browsing
  • -
  • Integration with other open source projects
  • -
  • A sustainable maintenance model
  • -
-
- -
- Long-term (5+ years) -
    -
  • To inspire a new generation of text-based browsers
  • -
  • To contribute to a more open, private, and simple web experience
  • -
  • To preserve the original spirit of the internet
  • -
-
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CapabilityStatus in BareWhy it matters
JavaScriptNot supportedNo scripts means no behavioral tracking and no malware execution
CookiesNot supportedNothing can persist a unique identifier between visits
Remote CSS / fontsNot loadedCloses the door on CSS fingerprinting and font enumeration
ImagesBlocked by defaultTracking pixels never fire unless you choose to load them
External requestsZero by defaultOne click fetches one document — and nothing else
+ +

+ The Gemini protocol community calls this principle "break all + loops": a design where nothing a server sends can ever make its way + back to that server to re-identify you. Bare applies the same logic to the whole + browsing experience. There is no round trip to close, because there is no loop to + begin with. You never have to wonder whether your privacy is on — it is the + only state the program can be in. +


-
-

🀝 Join the Movement

- +
+

🚫 Non-extensibility is a promise

- Bare is not just a browser — it's a movement - towards a better internet. You can join by: + The web became a surveillance platform not through any single decision, but + through extensibility. HTML and HTTP were designed to be easy to add to, + and so — feature by reasonable-sounding feature — they grew until the + document-reading tool became a general-purpose computing platform that runs + untrusted code on your machine by default.

- +

+ Bare makes the opposite promise. There is deliberately no plugin system, + no scripting hook, no mechanism for a page to extend what the browser can + do. A document cannot ask Bare to connect somewhere else, run a + computation, or store state. This is not a missing feature; it is the central + guarantee. A tool that cannot be extended cannot be slowly corrupted into + something that works against you. +

+
+ +
+ +
+

βœ‹ What Bare refuses — and why

+

Saying "no" clearly is how Bare stays true to its purpose:

  • - Using Bare: Download and use the browser + No JavaScript. The single largest source of tracking, + fingerprinting, and attack surface on the web. Removing it removes the problem + at the root.
  • - Contributing to development: Help with code, documentation, or testing + No author-controlled styling. Presentation belongs to the + reader. A document with bad contrast or a hostile layout is the author's + failure to impose, not yours to suffer.
  • - Spreading the word: Tell others about Bare + No editing or publishing. Bare is a reading instrument. It + does one thing and gets out of the way.
  • - Creating content: Publish Markdown content that can be read in Bare + No telemetry, ever. Bare does not phone home. The most private + data is the data that is never collected.
-

- Together, we can recreate an internet that is - simpler, more private, and more focused on content. + These refusals are not limitations to apologize for. They are the entire point + — the things that make Bare Bare. +

+
+ +
+ +
+

πŸ“– A different kind of internet

+

+ The Gemini FAQ puts it well: browsing should feel "more like browsing a library + than wandering through a shopping mall or a casino." A library makes a world of + material available and then leaves you alone with it. Nobody follows you between + the shelves. Nobody redecorates the book while you read. Nobody reports your + borrowing habits to a marketing department. +

+

+ That is the internet Bare is trying to give back to you — one document at a + time, on your terms.

@@ -322,19 +273,19 @@

πŸ“š Related Reading

ℹ️ About Bare - What the browser is + What the browser is and who it's for πŸ› οΈ Technology - How Bare is built + How these principles are enforced in code πŸ“œ History - The background of text-based protocols + From MultiTorg to Gemini
diff --git a/website/sider/philosophy.md b/website/sider/philosophy.md index c3a34b5..601c164 100644 --- a/website/sider/philosophy.md +++ b/website/sider/philosophy.md @@ -1,142 +1,99 @@ # Philosophy -> "Simplicity is the ultimate sophistication." – Leonardo da Vinci +> *"There is an unresolved tension between the sender and recipient of information β€” who is to be in charge of the final form presentation? HTML clearly champions the recipient."* +> β€” Solvoll, IvarsΓΈy, Lie & Dybvik, *Telektronikk* 4/93 -Bare is more than just a browser – it's a **philosophy** about how the internet should be. In an age where websites have become increasingly heavy, complex, and intrusive, Bare represents a radical alternative: a return to the fundamentals. +Bare is the answer to a question the web has spent thirty years trying to forget: **when you open a document, who is in charge β€” the person who wrote it, or the person reading it?** ---- - -## 🧭 Core Values - -### 1. Content is King +In 1993, four researchers at Norwegian Telecom Research wrote that the young World Wide Web "championed the recipient." The reader decided how a page looked. One of those researchers, HΓ₯kon Wium Lie, would propose CSS two years later β€” and the balance began tilting back toward the author. Three decades on, it has tilted so far that the reader has all but disappeared beneath layout, scripts, pop-ups, and surveillance. -On the original internet, content was paramount. Websites were simple HTML documents, and users could view the source and understand how everything worked. +Bare takes the 1993 position and refuses to compromise on it: **the reader is sovereign.** -Today, websites are often cluttered with: -- Megabytes of JavaScript for simple functionality -- Complex CSS frameworks that make sites heavy -- Ads that disrupt the reading experience -- Tracking scripts that collect data about you +--- -Bare removes all this noise and displays only what truly matters: **the content**. +## The reader is sovereign -### 2. Privacy is Not a Setting – It's the Architecture +The author supplies meaning. *You* supply the presentation. -Most browsers have privacy settings that you can turn on or off. The problem is that these settings often: -- Are complex to configure -- Can be forgotten -- Don't provide full protection -- Are overridden by websites +Theme, typography, line width, zoom level, whether images load at all β€” these are your decisions, made once and honored on every page you visit. A document author can tell you what they mean, but they cannot dictate the font you read it in, hijack your scroll, or decide that you must see their advertising to reach their words. -In Bare, privacy is **built into the design itself**: +This is not a "reader mode" you toggle on for the rare unbearable page. In Bare it is the *only* mode. Every document, from every source, arrives in one consistent, legible form that you control. -| Feature | Status in Bare | Privacy Benefit | -|----------|---------------|------------------| -| JavaScript | ❌ Not supported | Zero tracking, no malware | -| Cookies | ❌ Not supported | No third-party tracking | -| CSS | ⚠️ Minimal | No CSS fingerprinting | -| Images | ⚠️ Optional | Prevents tracking pixels | -| Tracking | ❌ Impossible | Full protection | +--- -This means you **never** need to worry about whether your privacy is enabled – it always is. +## Simplicity is the winning strategy, not a sacrifice -### 3. Simplicity Over Complexity +The history of document formats is a history of simplicity defeating power. -Modern browsers have become extremely complex: -- They support countless standards and protocols -- They have hundreds of settings -- They consume large amounts of memory and CPU +In the early 1990s, the rich and ambitious **ODA** (Office Document Architecture) standard competed with the humble **SGML**, and SGML's simplest application β€” **HTML** β€” won the web outright. It won precisely *because* it was easy to implement and easy to read. As the 1993 paper concluded: the simplest format that is "good enough" wins, every time. -Bare takes the opposite approach: -- **Fewer features** = fewer bugs = more stability -- **Less code** = faster performance = better experience -- **Simpler design** = easier to understand = better user control +``` +ODA β†’ SGML β†’ HTML β†’ Markdown +(rich, complex) (simple, human-readable) +``` -### 4. User Control Over Platform Control +Bare bets that the same evolution is happening again. HTML has become the new ODA: technically universal, but bloated past the point of usefulness. **Markdown is the next "good enough" format** β€” readable as plain text, trivial to parse, impossible to weaponize. Bare is built on that bet. -Most browsers today are designed to: -- Collect data about you (Chrome, Edge) -- Lock you into an ecosystem (Safari, Firefox) -- Force you to use certain services (OS integrations) +Fewer moving parts is itself the feature: -Bare gives **you** control back: -- **Open source**: You can see how everything works -- **Local files**: You own your data -- **No telemetry**: No data is ever sent -- **Configurable**: You decide how the browser behaves +- **Fewer features** β†’ fewer bugs β†’ more stability +- **Less code** β†’ faster rendering β†’ a calmer experience +- **A smaller surface** β†’ less to attack, less to track, less to break --- -## 🌱 Inspiration - -Bare is inspired by several movements and projects: +## Privacy is the architecture, not a checkbox -### Text-Based Browsers +Most browsers treat privacy as a setting β€” something you can enable, forget, misconfigure, or have silently overridden by a website. Bare treats it as a structural property that cannot be switched off, because the capabilities that enable tracking simply do not exist. -The earliest browsers were text-based, and they continue to inspire: +| Capability | Status in Bare | Why it matters | +|------------|----------------|----------------| +| JavaScript | Not supported | No scripts means no behavioral tracking and no malware execution | +| Cookies | Not supported | Nothing can persist a unique identifier between visits | +| Remote CSS / fonts | Not loaded | Closes the door on CSS fingerprinting and font enumeration | +| Images | Blocked by default | Tracking pixels never fire unless *you* choose to load them | +| External requests | Zero by default | One click fetches one document β€” and nothing else | -- **[Lynx](https://lynx.invisible-island.net/)** (1992) – The oldest browser still maintained -- **[Links](http://links.twibright.com/)** – Text-based with optional graphical mode -- **[w3m](https://w3m.sourceforge.net/)** (1995) – Supports colors, SSL, and inline images +The Gemini protocol community calls this principle **"break all loops"**: a design where nothing a server sends can ever make its way back to that server to re-identify you. Bare applies the same logic to the whole browsing experience. There is no round trip to close, because there is no loop to begin with. -These browsers prove that you can have a full web experience **without** graphics, JavaScript, or complex layouts. +You never have to wonder whether your privacy is on. It is the only state the program can be in. -### Minimalist Protocols - -- **[Gemini](https://geminiprotocol.net/)** – A modern, text-based protocol with mandatory encryption -- **[Gopher](https://en.wikipedia.org/wiki/Gopher_(protocol))** – The classic, menu-driven protocol from 1991 - -These protocols show that there are alternatives to the heavy, complex web. +--- -### Markdown Movement +## Non-extensibility is a promise -Markdown, created by [John Gruber](https://daringfireball.net/) in 2004 with contributions from [Aaron Swartz](https://en.wikipedia.org/wiki/Aaron_Swartz), represents a philosophy of simple, readable formatting: +The web became a surveillance platform not through any single decision, but through *extensibility*. HTML and HTTP were designed to be easy to add to, and so β€” feature by reasonable-sounding feature β€” they grew until the document-reading tool became a general-purpose computing platform that runs untrusted code on your machine by default. -- **Readable as plain text**: Markdown files look good even without formatting -- **Easy to learn**: The syntax is intuitive and similar to existing conventions -- **Machine-readable**: Easy to parse and convert to other formats +Bare makes the opposite promise. There is deliberately **no plugin system, no scripting hook, no mechanism for a page to extend what the browser can do.** A document cannot ask Bare to connect somewhere else, run a computation, or store state. This is not a missing feature; it is the central guarantee. A tool that cannot be extended cannot be slowly corrupted into something that works against you. --- -## 🎯 Vision +## What Bare refuses β€” and why -Bare has a long-term vision: +Saying "no" clearly is how Bare stays true to its purpose: -### Short-term (0-2 years) -- Full Markdown rendering support -- Stable support for Gemini and Gopher -- Good performance and usability +- **No JavaScript.** The single largest source of tracking, fingerprinting, and attack surface on the web. Removing it removes the problem at the root. +- **No author-controlled styling.** Presentation belongs to the reader. A document with bad contrast or a hostile layout is the author's failure to impose, not yours to suffer. +- **No editing or publishing.** Bare is a reading instrument. It does one thing and gets out of the way. +- **No telemetry, ever.** Bare does not phone home. There is no "anonymized usage data," because the most private data is the data that is never collected. -### Medium-term (2-5 years) -- A full ecosystem for text-based browsing -- Integration with other open source projects -- A sustainable maintenance model - -### Long-term (5+ years) -- To inspire a new generation of text-based browsers -- To contribute to a more open, private, and simple web experience -- To preserve the original spirit of the internet +These refusals are not limitations to apologize for. They are the entire point β€” the things that make Bare *Bare*. --- -## 🀝 Join the Movement - -Bare is not just a browser – it's a **movement** towards a better internet. You can join by: +## A different kind of internet -- **Using Bare**: Download and use the browser -- **Contributing to development**: Help with code, documentation, or testing -- **Spreading the word**: Tell others about Bare -- **Creating content**: Publish Markdown content that can be read in Bare +The Gemini FAQ puts it well: browsing should feel "more like browsing a library than wandering through a shopping mall or a casino." A library makes a world of material available and then leaves you alone with it. Nobody follows you between the shelves. Nobody redecorates the book while you read. Nobody reports your borrowing habits to a marketing department. -Together, we can recreate an internet that is **simpler, more private, and more focused on content**. +That is the internet Bare is trying to give back to you β€” one document at a time, on your terms. --- -## πŸ“š Related Reading +## Related reading -- [About Bare](./about.md) – What the browser is -- [Technology](./technology.md) – How Bare is built -- [History](./history.md) – The background of text-based protocols +- [About Bare](./about.md) β€” what the browser is and who it's for +- [Technology](./technology.md) β€” how these principles are enforced in code +- [History](./history.md) β€” the lineage Bare belongs to, from MultiTorg to Gemini --- diff --git a/website/sider/technology.html b/website/sider/technology.html index efe3e22..6392883 100644 --- a/website/sider/technology.html +++ b/website/sider/technology.html @@ -4,25 +4,25 @@ Technology — How Bare is built - + - + - + - + @@ -52,7 +52,7 @@

Technology

-

"Technology is best when it disappears."

+

A reading instrument, not a small web browser.

@@ -65,31 +65,37 @@

Technology

"Technology is best when it disappears."

- — Adapted from Alan Kay + — adapted from Mark Weiser

- Bare is built with modern, lightweight technology to deliver a fast, secure - and efficient browsing experience. Unlike heavy, resource-intensive - browsers like Chrome or Electron-based applications, Bare is designed to be - minimal, secure, and performance-optimized. + Bare is not a small web browser. It is a reading instrument + that happens to speak HTTP, Gemini and Gopher. Every engineering decision serves + a single goal: turn whatever a server sends into clean, consistent, private text + — and then get out of your way. +

+

+ This page explains how that is built, honestly, including the things Bare + deliberately does not do.


-

πŸ—οΈ Architecture

+

πŸ—οΈ The shape of the program

- Bare uses a client-server architecture where: + Bare is a Tauri 2 application: a Rust core + wrapped in the operating system's own WebView, with no bundled browser + engine.

🎨

Frontend

-

Vanilla HTML/CSS/JavaScript for user interface

+

Vanilla HTML/CSS/JavaScript — renders finished, sanitized HTML

@@ -97,25 +103,25 @@

Frontend

πŸŒ‰

Bridge

-

Tauri for communication between frontend and backend

+

Tauri IPC — message passing only, no shared network access

βš™οΈ -

Backend

-

Rust for logic and fetching

+

Rust core

+

fetch · extract · sanitize · render

- This separation provides: + Why this split matters:

    -
  • Security: Rust backend handles all external communication
  • -
  • Performance: Native Rust code for network operations
  • -
  • Flexibility: Web technologies for user interface
  • +
  • All networking, parsing and sanitization happen in Rust — never inside the page.
  • +
  • The WebView only ever receives finished, already-sanitized HTML. It never talks to the network itself.
  • +
  • There is no Chromium to ship, so the entire application is a few megabytes instead of a few hundred.
@@ -307,132 +313,158 @@

Local files


-

πŸ”§ Key Features

+

οΏ½ The reading pipeline

+ +

+ The heart of Bare is what happens between "you click a link" and + "you see text." For an ordinary HTML page it is four stages, all in Rust: +

-

Markdown Rendering

-

Bare's Markdown rendering engine handles:

-
    -
  • Basic formatting: Bold, italic, headings, lists
  • -
  • Links: Inline and reference-style links
  • -
  • Images: Optional display (can be disabled for privacy)
  • -
  • Code blocks: Syntax highlighting (optional)
  • -
  • Tables: Full support
  • -
  • Footnotes: Supported
  • -
  • HTML: HTML in Markdown is escaped (security)
  • -
+

1. Fetch

+

+ reqwest over rustls + + ring (no OpenSSL, no native-tls), capped at 5 MB, sending an + Accept header that politely asks the server for Markdown first: +

+
Accept: text/markdown, text/plain;q=0.9, text/html;q=0.5
-

HTML to Markdown Conversion

-

For HTML pages, Bare offers Readability mode:

-
    -
  • Extracts main content from article pages
  • -
  • Removes ads, navigation, sidebars
  • -
  • Converts to clean Markdown
  • -
  • Preserves structure and formatting
  • -
+

2. Extract

+

+ A real DOM-based readability pass scores the document tree, + lifts out the article, and discards navigation, sidebars, ad slots and comment + threads. This replaced an earlier naive string-search method in v0.1.6 — + content extraction is the core promise, so it had to be done properly, + not approximated. +

-

Navigation

-
    -
  • Full back/forward navigation with history
  • -
  • Bookmarks with persistent storage
  • -
  • URL autocomplete with smart address bar
  • -
  • Automatic protocol detection
  • -
+

3. Sanitize

+

+ The result is run through ammonia, + an allowlist-based Rust HTML sanitizer, stripping scripts, event handlers and + anything that could carry a payload. This runs on the Markdown path too, so + untrusted content is cleaned in depth, not only fenced off by policy. +

-

User Experience

-
    -
  • Theme: Light, dark, sepia, high-contrast
  • -
  • Font family: System, serif, sans-serif, monospace
  • -
  • Font size: Adjustable (70%-150%)
  • -
  • Content width: Adjustable (400-1200px)
  • -
  • Zoom: Ctrl+/Ctrl- for zoom in/out
  • -
+

4. Render

+

+ pulldown-cmark turns the + cleaned Markdown into HTML with CommonMark + GitHub extensions (tables, task + lists, strikethrough), and syntect adds syntax highlighting to code + blocks. +

+

+ Gemtext and gophermaps skip the extraction stage entirely — they are + already clean by design and go straight to dedicated converters. +


-

πŸ“Š Performance Optimizations

+

⚑ Speed by subtraction

-
-
- 🧠 -

Memory Usage

-
    -
  • Small footprint: ~10-20 MB RAM
  • -
  • Efficient caching of recently visited pages
  • -
  • Minimal state: Only necessary data stored
  • -
-
- -
- ⚑ -

Load Time

-
    -
  • Instant startup: <1 second
  • -
  • Fast page switching: Markdown loads immediately
  • -
  • Async loading: No blocking operations
  • -
-
- -
- 🌐 -

Network

-
    -
  • HTTP/2 support: Multiplexed requests
  • -
  • Keep-alive: Reuses connections
  • -
  • Compression: Supports gzip, deflate, brotli
  • -
-
+

+ Bare is fast because it does less, not because it works harder. An + LRU render cache in the Rust core makes returning to a recently + visited page instant; typical pages stripped to their content are + 5–50 KB rather than multi-megabyte payloads; and async I/O + (tokio) means fetching never blocks the interface. +

+ +

Design targets the project measures itself against:

+ +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
MetricTarget
Cached re-render≈ one frame (~16 ms)
Typical page, fetch → readablewell under half a second
External network calls beyond the documentzero
Application binarysingle-digit megabytes
Resident memory~10–20 MB

-

πŸ”’ Security

+

πŸ”’ Privacy the code actually enforces

+ +

+ Privacy in Bare is not a preference panel; it is a property of the architecture. + Three mechanisms make it real rather than aspirational: +

- πŸ›‘οΈ -

Architectural Security

-
    -
  • No JavaScript: No way to run malicious code
  • -
  • No plugins: No extension API that can be abused
  • -
  • Sandboxed WebView: WebView runs in a restricted context
  • -
  • Rust Backend: Memory safety prevents many vulnerabilities
  • -
+ πŸ–ΌοΈ +

Structural image blocking

+

+ The WebView ships with a strict Content-Security-Policy of + img-src 'self' data:. The page is forbidden at the engine + level from loading a remote image, so a tracking pixel cannot fire even + if one survives extraction. The ImageMode setting + (Block · Placeholder · Show) puts that choice + in your hands. +

- πŸ”’ -

Network Security

-
    -
  • TLS verification: All HTTPS and Gemini connections verified
  • -
  • TOFU for Gemini: Trust On First Use for Gemini certificates
  • -
  • No mixed content: Blocks insecure resources on secure pages
  • -
  • CSP: Content Security Policy protection against XSS
  • -
+ 1️⃣ +

One click, one request

+

+ The WebView never originates network traffic. Only the Rust core fetches, and + it fetches exactly the document you asked for — no fonts, analytics + beacons, or third-party assets load in the background to leak your visit. +

- πŸ” -

Data Protection

-
    -
  • No telemetry: No data sent to developers
  • -
  • Local storage: All data stored locally
  • -
  • No cloud sync: No external storage
  • -
  • Encrypted storage: Sensitive data can be encrypted
  • -
+ πŸ”‘ +

TOFU for Gemini

+

+ Gemini connections are verified Trust-On-First-Use: a SHA-256 fingerprint of + each server's certificate is stored in known_hosts.json, and a + later mismatch is flagged as a possible machine-in-the-middle attack — + the same model SSH uses. +

+ +

+ No JavaScript, no cookies, no telemetry. The most private data is the data that is + never collected. +


@@ -472,41 +504,39 @@

Production Build


+
+

βœ… Quality and trust

+

Bare is small, but it is not casual about correctness:

+
    +
  • 117+ unit tests across the core logic — extraction, protocol clients, converters, settings.
  • +
  • Idiomatic Rust: Result + thiserror everywhere, ? propagation, almost no unwrap() outside tests, per-module error types.
  • +
  • A safe stack: rustls with ring (no OpenSSL), clamped numeric settings, allowlist sanitization.
  • +
  • 13 interface languages, in place unusually early for a project this size.
  • +
+
+ +
+
-

πŸš€ Technology Roadmap

+

🚫 What Bare will deliberately never build

-
-
-

Short-term (0-6 months)

-
    -
  • βœ… Basic Markdown rendering
  • -
  • βœ… HTTP/HTTPS support
  • -
  • βœ… Gemini protocol support
  • -
  • βœ… Gopher protocol support
  • -
  • ⬜ PDF export
  • -
  • ⬜ Tabs support
  • -
-
- -
-

Medium-term (6-18 months)

-
    -
  • ⬜ Plugin system
  • -
  • ⬜ Custom CSS themes
  • -
  • ⬜ Cross-device synchronization
  • -
  • ⬜ Mobile platforms (Android, iOS)
  • -
-
- -
-

Experimental (18+ months)

-
    -
  • ⬜ P2P protocol support (IPFS, DAT)
  • -
  • ⬜ AI-based content filtering
  • -
  • ⬜ Voice control
  • -
-
-
+

+ A roadmap is also a list of refusals. These are not missing features — + they are guarantees: +

+ +
    +
  • No plugin or extension system. Non-extensibility is the central promise; a tool that cannot be extended cannot be quietly corrupted.
  • +
  • No JavaScript engine. Ever. It is the largest source of tracking and attack surface on the web.
  • +
  • No telemetry, no cloud sync, no accounts. Your reading is yours.
  • +
  • No author-controlled styling. Presentation belongs to the reader.
  • +
+ +

+ What is genuinely on the table stays in character — improvements to + reading, never to running code: PDF export, heading anchors and a + table of contents, and richer reading-typography controls. +


diff --git a/website/sider/technology.md b/website/sider/technology.md index c308b7e..b4638f2 100644 --- a/website/sider/technology.md +++ b/website/sider/technology.md @@ -1,124 +1,103 @@ # Technology -> "Technology is best when it disappears." – Adapted from Alan Kay +> *"Technology is best when it disappears."* β€” adapted from Mark Weiser -Bare is built with modern, lightweight technology to deliver a fast, secure, and efficient browsing experience. Unlike heavy, resource-intensive browsers like Chrome or Electron-based applications, Bare is designed to be **minimal, secure, and performance-optimized**. +Bare is not a small web browser. It is a **reading instrument** that happens to speak HTTP, Gemini and Gopher. Every engineering decision serves a single goal: turn whatever a server sends into clean, consistent, private text β€” and then get out of your way. ---- +This page explains how that is built, honestly, including the things Bare deliberately does *not* do. -## πŸ—οΈ Architecture +--- -Bare uses a **client-server architecture** where: -- **Frontend** (User Interface): Vanilla HTML/CSS/JavaScript -- **Backend** (Logic and fetching): Rust -- **Bridge**: Tauri for communication between frontend and backend +## πŸ—οΈ The shape of the program -This separation provides: -- **Security**: Rust backend handles all external communication -- **Performance**: Native Rust code for network operations -- **Flexibility**: Web technologies for user interface +Bare is a [Tauri 2](https://tauri.app/) application: a Rust core wrapped in the operating system's own WebView, with **no bundled browser engine**. ---- - -## πŸ› οΈ Main Components +``` +Frontend (vanilla JS) β†’ Tauri IPC bridge β†’ Rust core + renders finished HTML message passing fetch Β· extract Β· sanitize Β· render +``` -### Tauri 2.0 +Why this split matters: -**[Tauri](https://tauri.app/)** is the foundational framework that makes Bare possible. +- All networking, parsing and sanitization happen in **Rust** β€” never inside the page. +- The WebView only ever receives finished, already-sanitized HTML. **It never talks to the network itself.** +- There is no Chromium to ship, so the entire application is a few megabytes instead of a few hundred. -**Why Tauri?** +**Why not Electron:** -| Aspect | Tauri | Electron | Tauri Advantage | -|--------|-------|----------|------------------| -| App size | ~2-5 MB | ~100-200 MB | 20-100x smaller | -| Memory usage | Low | High | 5x less RAM | -| Security | High (Rust) | Medium (JS) | Memory safety | -| Performance | High | Medium | Native speed | -| Platform support | Windows, macOS, Linux | Windows, macOS, Linux | Same, but lighter | +| | Bare (Tauri) | Electron | +|---|---|---| +| App size | single-digit MB | ~100–200 MB | +| Memory | ~10–20 MB | hundreds of MB | +| Engine | OS-native WebView | bundled Chromium | +| Core language | Rust (memory-safe) | Node.js | -**Key features of Tauri used by Bare:** +--- -- **System WebView**: Uses the OS's native WebView (WebKit on macOS/Linux, WebView2 on Windows) -- **Rust Backend**: Secure, fast system access -- **Minimal bundling**: No Chromium content -- **Platform-specific builds**: Optimal performance on each platform +## πŸ”¬ The reading pipeline -### Rust +The heart of Bare is what happens between *"you click a link"* and *"you see text."* For an ordinary HTML page it is four stages, all in Rust: -**[Rust](https://www.rust-lang.org/)** is the programming language powering Bare's backend. +1. **Fetch** β€” [reqwest](https://crates.io/crates/reqwest) over `rustls` + `ring` (no OpenSSL, no native-tls), capped at 5 MB, sending an `Accept` header that politely asks the server for Markdown first: + ``` + Accept: text/markdown, text/plain;q=0.9, text/html;q=0.5 + ``` -**Why Rust?** +2. **Extract** β€” a real **DOM-based readability** pass scores the document tree, lifts out the article, and discards navigation, sidebars, ad slots and comment threads. This replaced an earlier naive string-search method in v0.1.6, because content extraction *is* the core promise β€” it had to be done properly, not approximated. -1. **Memory safety**: Rust's ownership rules prevent memory errors like buffer overflows -2. **Performance**: Compiled to native code, as fast as C/C++ -3. **Security**: No garbage collection, no runtime overhead -4. **Concurrency**: Excellent support for asynchronous programming -5. **Ecosystem**: Rich package ecosystem (crates.io) +3. **Sanitize** β€” the result is run through [ammonia](https://crates.io/crates/ammonia), an allowlist-based Rust HTML sanitizer, stripping scripts, event handlers and anything that could carry a payload. This runs on the Markdown path too, so untrusted content is cleaned in depth, not only fenced off by policy. -**Rust libraries used in Bare:** +4. **Render** β€” [pulldown-cmark](https://crates.io/crates/pulldown-cmark) turns the cleaned Markdown into HTML with CommonMark + GitHub extensions (tables, task lists, strikethrough), and `syntect` adds syntax highlighting to code blocks. -- **[pulldown-cmark](https://crates.io/crates/pulldown-cmark)**: Fast CommonMark + GFM Markdown parser - - Fast: Written in Rust, optimized for performance - - Accurate: Full support for CommonMark specification - - Flexible: Supports extensions like tables, footnotes, etc. +Gemtext and gophermaps skip the extraction stage entirely β€” they are already clean by design and go straight to dedicated converters. -- **[reqwest](https://crates.io/crates/reqwest)**: Async HTTP client - - Supports HTTP/1.1 and HTTP/2 - - Integrated TLS support - - Async/await-based API +--- -- **[tauri](https://crates.io/crates/tauri)**: Tauri Rust library - - Communication with frontend - - System API access - - Window handling +## πŸ”’ Privacy the code actually enforces -### Vanilla Web Technologies +Privacy in Bare is not a preference panel; it is a property of the architecture (see [Philosophy](./philosophy.md)). Three mechanisms make it real rather than aspirational: -Bare's frontend is built with **pure web technologies**: +- **Structural image blocking.** The WebView ships with a strict Content-Security-Policy of `img-src 'self' data:`. The page is *forbidden at the engine level* from loading a remote image, so a tracking pixel cannot fire even if one survives extraction. The `ImageMode` setting (**Block Β· Placeholder Β· Show**) puts that choice entirely in your hands. -- **HTML5**: Semantic markup for structure -- **CSS3**: Minimal styling, focused on readability -- **JavaScript (ES6+)**: Clean, efficient code without frameworks +- **One click, one request.** The WebView never originates network traffic. Only the Rust core fetches, and it fetches exactly the document you asked for β€” nothing else loads in the background. There are no fonts, analytics beacons, or third-party assets to leak your visit. -**Advantages of this approach:** +- **TOFU for Gemini.** Gemini connections are verified Trust-On-First-Use: a SHA-256 fingerprint of each server's certificate is stored in `known_hosts.json`, and a later mismatch is flagged as a possible machine-in-the-middle attack β€” the same model SSH uses. -1. **No dependencies**: No npm packages, no build steps -2. **Fast loading**: No frameworks to load -3. **Easy maintenance**: No version conflicts -4. **Long lifespan**: Standards that don't change radically +No JavaScript, no cookies, no telemetry. The most private data is the data that is never collected. --- -## 🌐 Protocol Support +## ⚑ Speed by subtraction -### HTTP/HTTPS +Bare is fast because it does less, not because it works harder. -Standard web protocols with full support for: -- GET and HEAD requests -- Redirect handling -- SSL/TLS encryption -- Content-Type negotiation +- An **LRU render cache** in the Rust core means returning to a recently visited page is instant β€” the readable HTML is already built. +- Typical pages, stripped to their content, are **5–50 KB** instead of the multi-megabyte payloads of the modern web. +- Async I/O throughout (`tokio`) means fetching never blocks the interface. -**Special for Markdown:** -Bare sends an `Accept` header that signals preference for Markdown: -``` -Accept: text/markdown, text/plain;q=0.9, text/html;q=0.5 -``` +**Design targets the project measures itself against:** -This allows servers that support content negotiation to deliver cleaner content directly. +| Metric | Target | +|--------|--------| +| Cached re-render | β‰ˆ one frame (~16 ms) | +| Typical page, fetch β†’ readable | well under half a second | +| External network calls beyond the document | zero | +| Application binary | single-digit megabytes | +| Resident memory | ~10–20 MB | -### Gemini Protocol +--- -**[Gemini](https://geminiprotocol.net/)** is a modern, text-based protocol with mandatory TLS encryption. +## 🌐 Protocol support -**Bare's Gemini support includes:** +| Protocol | What Bare does | +|----------|----------------| +| **HTTP/HTTPS** | GET/HEAD, redirects, TLS via rustls, content negotiation, readability extraction | +| **Gemini** | Full client with TOFU certificates, gemtext β†’ Markdown, interactive input pages | +| **Gopher** | RFC 1436 client, gophermap β†’ Markdown, type-aware icons, search (item type 7) | +| **file://** | Open local Markdown files directly from disk | -- Full protocol implementation (RFC) -- TOFU (Trust On First Use) certificate handling -- Gemtext to Markdown conversion -- Interactive pages (input dialog) +Gemtext, for example, converts cleanly because it is already a line-oriented text format: -**Gemtext format:** ```gemini # Heading 1 ## Heading 2 @@ -128,257 +107,71 @@ This is a paragraph. => https://example.com Link description ``` -### Gopher Protocol - -**[Gopher](https://en.wikipedia.org/wiki/Gopher_(protocol))** is the classic protocol from 1991. - -**Bare's Gopher support includes:** - -- Full RFC 1436 implementation -- Gophermap to Markdown conversion -- Support for text files, menus, and search -- Emoji icons for different content types -- Search dialog for interactive Gopher queries - ---- - -## πŸ”§ Features - -### Markdown Rendering - -Bare's Markdown rendering engine handles: - -- **Basic formatting**: Bold, italic, headings, lists -- **Links**: Inline and reference-style links -- **Images**: Optional display (can be disabled for privacy) -- **Code blocks**: Syntax highlighting (optional) -- **Tables**: Full support -- **Footnotes**: Supported -- **HTML**: HTML in Markdown is escaped (security) - -### HTML to Markdown Conversion - -For HTML pages, Bare offers **Readability mode**: - -- Extracts main content from article pages -- Removes ads, navigation, sidebars -- Converts to clean Markdown -- Preserves structure and formatting - -**Example:** -A busy news site with ads and complex layout is converted to: -```markdown -# Article Title - -This is the main content of the article... -``` - -### Navigation - -- **History**: Full back/forward navigation -- **Bookmarks**: Save and organize favorite pages -- **URL autocomplete**: Smart address bar with suggestions -- **Protocol detection**: Automatic recognition of gemini://, gopher://, etc. - -### User Experience - -- **Theme**: Light, dark, sepia, high-contrast -- **Font family**: System, serif, sans-serif, monospace -- **Font size**: Adjustable (70%-150%) -- **Content width**: Adjustable (400-1200px) -- **Zoom**: Ctrl+/Ctrl- for zoom in/out - -### Search - -- **In-page search**: Ctrl+F to search current page -- **Regular expressions**: Advanced search with regex -- **Match highlighting**: Visual highlighting of matches - -### Keyboard Shortcuts - -Bare has comprehensive keyboard support: - -| Shortcut | Action | -|----------|--------| -| Ctrl+K | Open command palette | -| Ctrl+F | Search in page | -| Ctrl+D | Bookmark page | -| Ctrl+B | Show bookmarks | -| Ctrl+O | Open local file | -| Ctrl+Plus | Zoom in | -| Ctrl+Minus | Zoom out | -| Alt+← | Back | -| Alt+β†’ | Forward | -| Alt+Home | Home | -| F5 | Reload | - ---- - -## πŸ“Š Performance Optimizations - -### Memory Usage - -- **Small footprint**: ~10-20 MB RAM for entire application -- **Efficient caching**: Cache of recently visited pages -- **Minimal state**: Only necessary data stored - -### Load Time - -- **Instant startup**: <1 second -- **Fast page switching**: Markdown loads immediately -- **Async loading**: No blocking operations - -### Network - -- **HTTP/2 support**: Multiplexed requests -- **Keep-alive**: Reuses connections -- **Compression**: Supports gzip, deflate, brotli - --- -## πŸ”’ Security - -### Architectural Security - -1. **No JavaScript**: No way to run malicious code -2. **No plugins**: No extension API that can be abused -3. **Sandboxed WebView**: WebView runs in a restricted context -4. **Rust Backend**: Memory safety prevents many vulnerabilities - -### Network Security +## βœ… Quality and trust -1. **TLS verification**: All HTTPS and Gemini connections verified -2. **TOFU for Gemini**: Trust On First Use for Gemini certificates -3. **No mixed content**: Blocks insecure resources on secure pages -4. **CSP**: Content Security Policy protection against XSS +Bare is small, but it is not casual about correctness: -### Data Protection - -1. **No telemetry**: No data sent to developers -2. **Local storage**: All data stored locally -3. **No cloud sync**: No external storage -4. **Encrypted storage**: Sensitive data can be encrypted +- **117+ unit tests** across the core logic β€” extraction, protocol clients, converters, settings. +- **Idiomatic Rust:** `Result` + `thiserror` everywhere, `?` propagation, almost no `unwrap()` outside tests, per-module error types. +- **A safe stack:** `rustls` with `ring` (no OpenSSL), clamped numeric settings, allowlist sanitization. +- **13 interface languages**, in place unusually early for a project this size. --- -## πŸ› οΈ Build Process +## πŸ› οΈ Build it yourself -### Development Environment +Bare is GPL-3.0 and builds from source on Windows, macOS and Linux. ```bash -# Clone repository +# Clone the repository git clone https://github.com/FrankBurmo/bare.git cd bare -# Install Rust (if not already installed) +# Install Rust if you don't have it curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -# Install Tauri CLI +# Install the Tauri CLI cargo install tauri-cli -# Start development server +# Run in development with hot reload cargo tauri dev -``` - -### Production Build -```bash -# Build for current platform +# Produce an optimized release build cargo tauri build - -# Build for specific platform -cargo tauri build --target x86_64-pc-windows-msvc -cargo tauri build --target x86_64-unknown-linux-gnu -cargo tauri build --target universal2-apple-darwin -``` - -### Build for Distribution - -```bash -# Build all platforms (requires cross-compilation setup) -cargo tauri build --all-targets - -# Build with update check -cargo tauri build --features updater ``` ---- - -## πŸ“¦ Dependencies - -### Rust Crates (backend) - -```toml -[dependencies] -# Tauri -tauri = "2.0" -tauri-utils = "2.0" - -# HTTP -reqwest = { version = "0.12", features = ["json", "rustls-tls"] } - -# Markdown parsing -pulldown-cmark = { version = "0.10", features = ["html", "tick_token"] } - -# URL handling -url = "2.5" -percent-encoding = "2.3" - -# Async -tokio = { version = "1.0", features = ["full"] } - -# Error handling -anyhow = "1.0" -thiserror = "1.0" - -# Serialization -serde = { version = "1.0", features = ["derive"] } -serde_json = "1.0" - -# File system -walkdir = "2.4" -``` +Before sending a change, the project expects a clean `cargo fmt`, no `cargo clippy` warnings, and a green `cargo test`. --- -## πŸš€ Technology Roadmap +## 🚫 What Bare will deliberately never build -### Short-term (0-6 months) -- βœ… Basic Markdown rendering -- βœ… HTTP/HTTPS support -- βœ… Gemini protocol support -- βœ… Gopher protocol support -- ⬜ PDF export -- ⬜ Tabs support +A roadmap is also a list of refusals. These are not missing features β€” they are guarantees: -### Medium-term (6-18 months) -- ⬜ Plugin system -- ⬜ Custom CSS themes -- ⬜ Cross-device synchronization -- ⬜ Mobile platforms (Android, iOS) +- **No plugin or extension system.** Non-extensibility is the central promise; a tool that cannot be extended cannot be quietly corrupted. +- **No JavaScript engine.** Ever. It is the largest source of tracking and attack surface on the web. +- **No telemetry, no cloud sync, no accounts.** Your reading is yours. +- **No author-controlled styling.** Presentation belongs to the reader. -### Experimental (18+ months) -- ⬜ P2P protocol support (IPFS, DAT) -- ⬜ AI-based content filtering -- ⬜ Voice control +What *is* genuinely on the table stays in character β€” improvements to *reading*, never to *running code*: PDF export, heading anchors and a table of contents, and richer reading-typography controls. --- -## πŸ“š Related Reading +## πŸ”— Useful links -- [About Bare](./about.md) – What the browser is -- [Philosophy](./philosophy.md) – Why Bare was created -- [History](./history.md) – The background of text-based protocols - ---- - -## πŸ”— Useful Links - -- [Tauri Documentation](https://tauri.app/v2/guides/) -- [Rust Documentation](https://doc.rust-lang.org/) +- [Tauri documentation](https://tauri.app/v2/guides/) +- [Rust documentation](https://doc.rust-lang.org/) - [pulldown-cmark](https://docs.rs/pulldown-cmark/latest/pulldown_cmark/) - [reqwest](https://docs.rs/reqwest/latest/reqwest/) +## πŸ“š Related reading + +- [About Bare](./about.md) β€” what the browser is and who it's for +- [Philosophy](./philosophy.md) β€” why these constraints exist +- [History](./history.md) β€” the lineage Bare belongs to + --- [Back to Home](../index.md) diff --git a/website/sitemap.xml b/website/sitemap.xml index 12787cc..b40f30e 100644 --- a/website/sitemap.xml +++ b/website/sitemap.xml @@ -16,28 +16,28 @@ https://frankburmo.github.io/bare/sider/about.html - 2026-06-18 + 2026-06-22 monthly 0.8 https://frankburmo.github.io/bare/sider/philosophy.html - 2026-06-18 + 2026-06-22 monthly 0.8 https://frankburmo.github.io/bare/sider/technology.html - 2026-06-18 + 2026-06-22 monthly 0.8 https://frankburmo.github.io/bare/sider/history.html - 2026-06-18 + 2026-06-22 monthly 0.8