Go to file
Melroy van den Berg d272b0b28f Some refactoring 2020-12-14 19:40:08 +01:00
.vscode IPFS works and renders to screen! 2020-12-05 02:51:40 +01:00
cmake Moving to GTK! 2020-11-28 23:47:34 +01:00
docs Some additional insides 2020-12-12 04:49:50 +01:00
go-ipfs Add helper script + go-ipfs binary for Linux 2020-12-06 21:31:47 +01:00
lib latest master 2020-12-14 18:20:39 +01:00
misc Add logo 2020-12-09 18:52:21 +01:00
scripts Fix some memory leaks, not really causing any leaks really. but still 2020-11-22 00:46:22 +01:00
src Some refactoring 2020-12-14 19:40:08 +01:00
.gitignore Add build & package phase 2020-11-19 04:04:52 +01:00
.gitlab-ci.yml use submodules 2020-12-11 01:05:19 +01:00
.gitmodules Introduce submodule from vasild again 2020-12-12 04:18:19 +01:00
CMakeLists.txt prepare for CPP-IPFS 2020-12-04 23:14:53 +01:00
LICENSE Add LICENSE 2020-11-19 03:36:38 +01:00
README.md rename to dbrowser 2020-12-10 19:53:05 +01:00
big.md Create Abstruct base class for renderer. Fix cppcheck. 2020-11-22 00:05:51 +01:00
check.sh Add ci 2020-11-15 04:51:00 +01:00
equation.md Add extra example 2020-11-13 18:55:03 +01:00
suppressions.txt Some refactoring 2020-12-14 19:40:08 +01:00
test.md Render horizontal line (hr) 2020-11-30 05:10:27 +01:00

README.md

DBrowser

Decentralized Browser; a revolution of the WWW.

What would you do different; if you could reinvent The Internet in 21st century? With all the knowledge and new technologies available today.

I was inspired by Douglas Engelbart, Tim Berners-Lee and Ted Nelson as well as projects like IPFS, Jekyll, ARPANET, and more.

Note: Project is WIP!

Browser Screenshot

Ideas/Features

The current success criteria:

  • 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.

Devs

Decentralized Browser written in C++20 with C libraries. And using the cmark-gfm library, used for CommonMark (markdown) parsing.

Browser is using GTK as UI library including Pango & Cairo for text drawing and manipulation.

For now we will use markdown as the source of the site. No HTML and JavaScript anymore, content is king after all.

Development Environment

I'm using VSCodium editor, with the following extensions installed: C/C++, CMake, CMake Tools, PlantUML, Markdown All in One and GitLab Workflow.

Build Dependencies

For the build you need at least:

  • GCC 9 or higher (GCC 8 should also work, but not adviced. Package: build-essential)
  • CMake (Package: cmake)
  • Ninja build system (Package: ninja-build)
  • GTK & Cairo & Pango (including C++ bindings):
    • Package: libgtkmm-3.0-dev under Debian based distros

Diagrams

There existing several design and/or research diagrams of Browser by using PlantUML. Sometimes words aren't enough to explain yourself.

Check-out the diagrams page.

Drawing/Graphics rendering engine/GUI

We are currently in an exploration phase about which 2D (vector) graphics rendering library we should use.

Currently: GTK + Cairo + Pango, which works fine and is fast!

See research document (also in markdown) for more information and conclusions based on facts.

Decentralized Web

We are also currently in an exploration page about which kind of P2P or decentralized network solution is the best fit.

See research document (also in markdown) for more information and conclusions based on facts.