LibreWeb-Browser/README.md

84 lines
3.0 KiB
Markdown
Raw Normal View History

2020-11-12 13:29:31 -08:00
# Browser for DWWW
2020-11-13 19:39:35 -08:00
Decentralized Browser; a revolution of the WWW.
2020-11-12 13:29:31 -08:00
2020-11-13 19:39:35 -08:00
What would you do, if you could **reinvent** The Internet in 21st century? With all the knowledge and new technologies available today.
I was inspired by Douglas Engelbart, Ted Nelson as well as projects like IPFS, Jekyll, ARPANET, and more.
*Note:* Project is WIP!
## Ideas/Features
The current plan:
* Everyone should be able to easily **read** and **create** a site/blog/news page and publish the content online (without minimal technical knowledge);
* Built-in easy-to-use **editor** (whenever you want to publish some content without programming language knowledge);
* **Decentralized** (no single failure or censorship), like: P2P, DHT and IPFS;
* *No* client-server approach (the client is also the server and visa versa) - think **mesh network**.
* **Encrypted** transfers;
* Data is stored **redundantly** within the network (no single failure);
* **Versioning**/revisions of content and documenents (automatically solves broken 'links', that can't happy anymore);
* Publisher user should be able to add additional information about the document/page, eg. title or path (similar in how Jekyll is using the `YML` format for meta data)
* Human-readable source-code (eg. `Markdown`, could be extended as well);
* End-user is in control about the layout and styling (just like with e-books);
* Content is King;
* Fast and Extensible!
*Note:* Since HyperText (so is HTML) is not used, you can even ditch the HTTP protocol. However TLS, for encryption, can still be used.
2020-11-14 17:49:35 -08:00
## Text on Screen Flowcharts
2020-11-14 09:59:15 -08:00
2020-11-14 17:48:45 -08:00
**Prepare steps**
```plantuml
(*) --> "Load fonts glyphs (ttf)/default font"
--> "Create Font Atlas"
--> "Create Viewport"
-->[Ready for render] (*)
```
**Text rendering**
2020-11-14 09:59:15 -08:00
```plantuml
2020-11-14 15:03:56 -08:00
(*) --> "Get file online /\nRead from disk"
2020-11-14 17:48:45 -08:00
-->[Content in memory] "Parse document"
-->[AST output] "Convert AST to Bitmap struct"
-->[Ready for painter] "Paint text on Viewport"
-->[Text visable on Screen] (*)
2020-11-14 09:59:15 -08:00
```
2020-11-14 17:48:45 -08:00
*ttf* = TrueType Font
2020-11-14 17:49:35 -08:00
2020-11-14 17:48:45 -08:00
*AST* = Abstract Syntax Tree
2020-11-13 19:39:35 -08:00
## Devs
2020-11-22 16:50:50 -08:00
Decentralized Browser written in C++20 with C libraries. And using the [cmark-gfm](https://github.com/github/cmark-gfm) library, used for CommonMark (markdown) parsing.
2020-11-13 19:39:35 -08:00
2020-11-28 20:00:32 -08:00
Browser is using GTK as UI library including Pango & Cairo for text drawing and manipulation.
2020-11-13 19:39:35 -08:00
2020-11-28 20:00:32 -08:00
For now we will use markdown as the source of the site. No HTML and JavaScript anymore, content is king after all.
2020-11-13 19:39:35 -08:00
2020-11-22 16:50:50 -08:00
### Development Environment
I'm using VSCodium editor, with the following extensions installed: `C/C++`, `Cmake` and `Cmake Tools` .
2020-11-20 15:13:12 -08:00
## Depedencies
For the build you need at least:
2020-11-20 15:13:12 -08:00
* GCC 9 or higher (GCC 8 should also work)
* CMake
2020-11-28 20:00:32 -08:00
* GTK & Cairo & Pango (including C++ bindings):
- Install: `libgtkmm-3.0-dev` under Debian based distros
2020-11-20 15:13:12 -08:00
For Release packaging:
2020-11-20 15:13:12 -08:00
* CPack
2020-11-22 16:50:50 -08:00
### 2D/Vector engines - Under Research
2020-11-13 19:39:35 -08:00
2020-11-22 16:50:50 -08:00
We are currently in an exploration phase, which 2D vector graphics rendering library we should us.
2020-11-14 17:39:05 -08:00
2020-11-22 16:50:50 -08:00
See [research document](docs/research.md) for more information and conclusions based on facts.