refactor: docs rewrite

This commit is contained in:
Derrick Hammer 2023-09-30 00:36:22 -04:00
parent 32467cc9a6
commit 338a100c50
Signed by: pcfreak30
GPG Key ID: C997C339BE476FF2
21 changed files with 6588 additions and 107 deletions

73
.releaserc.json Normal file
View File

@ -0,0 +1,73 @@
{
"plugins": [
[
"@semantic-release/commit-analyzer",
{
"releaseRules": [
{
"breaking": true,
"release": "major"
},
{
"revert": true,
"release": "patch"
},
{
"type": "feat",
"release": "minor"
},
{
"type": "fix",
"release": "patch"
},
{
"type": "perf",
"release": "patch"
},
{
"type": "dep",
"release": "patch"
},
{
"type": "refactor",
"release": "patch"
}
]
}
],
"@semantic-release/release-notes-generator",
[
"@semantic-release/changelog",
{
"changelogFile": "CHANGELOG.md"
}
],
[
"@semantic-release/npm",
{
"npmPublish": false
}
],
[
"@semantic-release/git",
{
"assets": [
"package.json",
"CHANGELOG.md",
"npm-shrinkwrap.json"
]
}
]
],
"branches": [
"master",
{
"name": "develop",
"prerelease": true
},
{
"name": "develop-*",
"prerelease": true
}
]
}

59
docs/better-web.md Normal file
View File

@ -0,0 +1,59 @@
---
title: Making a Better Web
---
Want to hear a joke?
## Web3.
Probably not the start you expected, but let's be honest with ourselves for a moment - the current state of web3 is a joke, at least to the majority of the world.
Sure, a lot of useful components are being made, but the focus is mostly on money, rather than our freedom and privacy. Money is what rules this space and everyone knows it. Scams, projects that are decentralized in name only and lack of education, that's what we got out of all those glorified DeFi and NFT, it's effectively one large casino with no real value or problems being solved. It's because it takes time and most of the people in space don't have such patience or intentions. And it makes sense when all that you need to get people interested is to just make a fancy presentation and pay some shills. This effectively misdirected flow of funding and talent from meaningful projects to scams and schemes, setting the space back by several years.
On the other side there is the Bitcoin, it doesn't care, it just works as it's meant to. Many tried to grasp control but failed, being educated about actual decentralization in the process. But while it's kind of a beacon of hope to many for a reason, it shouldn't be treated as an ideology or religion, which is actually happening. Don't worship money, use it.
So, what's next? Maybe to better understand this all, let's rewind a bit and learn from our past first.
### Web 1.0
This era started in early 90s and marks a first generation of the world wide web, aka internet. It was `open` and had an `unlimited potential`. Number of users was growing exponentially, as was the number of companies building in the space and it didn't take too long for few big ones to emerge and people just happily handing control of own data over to them.
### Web 2.0
By 2005, the internet was becoming increasingly centralized and this transition was complete with arrival of massive social networks connecting billions of people around the globe and monetizing their voluntarily entered and frequently updated personal data. On Web 2.0, the user is the real `product` and your data are no longer yours, same as your money on a bank account are not yours, you only trust a third party to manage it for you.
### Web3?
Web3 as an ideal is supposed to be about you, `the user`, not you, `the builder`. I have seen various ideas suggesting Web3 is `read + write + own`, and I can largely agree, though many builders don't agree with the route to achieve that.
![image](/read_write_own.png)
Web3 is also intended to help create a `creator economy`. It's meant to support the little guy and have an open community system where people can thrive `peer to peer (P2P)` and earn a living, without invasion of privacy or de-platforming. Many will argue that it's not a real problem if you don't do anything illegal, but that's not removing the possibility of your favorite service disappearing over night, it's just your decision to ignore it and eventually deal with consequences. Web3 is meant to be here for those who don't want to accept such risks and take the data ownership back in own hands.
One thing is for sure, the `internet for public` is with us for more than three decades, yet we are only starting to recognize another evolution beginning. Are we going to call it Web3, or 10 years later we will have a different term to call it? No idea. It's clear this is only the beginning and the space is still searching for the right approach and solutions to numerous issues.
Let's look at some of those.
## Problems and solutions
- First thing to say is that `it's not decentralized`. Many teams are building decentralized products, but it's like building a castle on sand, since they are using centralized storage for their data storage needs. I don't think a decentralized internet can exist without starting with decentralized storage. And that's a direction where I expect the next generation of Web3 apps to come from.
- `VC Funding`. While Venture Capitalists have an important role to play in the free market side of things, they are more often than not interested just in the easy profit, rather than actually contributing to the space. They have funded a lot of Research and Development (R&D) in a very high risk environment, but the good minority is overshadowed by the majority that wants to turn Web3 into a new walled garden to rent-seek on their users, completely defeating the ethos of the entire space. Lesson learned here is that if you want to fund the R&D for public infrastructure, you cannot do it with a for-profit focus. That's where we took a wrong turn in Web 2.0 and we cannot keep repeating the same mistake.
- This is especially true with `Decentralized Finance (DeFi)`, where the money/game theory often overrides ideology. The building blocks of an open market are very important and can be seen as public goods but we are increasingly being witnesses to market-competitiveness turning into the form of `Business Licences` or closed-source code which defeats the trustlessness of the system (*"Just trust me, bro."*)
- But the worst problem is the `infrastructure` we have. It's all in 3 places: AWS/Google, Cloudflare, ICANN and any of these could easily "kill" most of what we have today in just a flick of a switch. We are NOT ready for the battles that lie ahead for the space. We are sitting and waiting if `DeFi`, `Crypto`, or even `P2P technology` is declared illegal by the world tomorrow.
Most of the world would roll over and comply anyway since its what people always do, at least until everyone sees it, but then it's usually too late. And we cannot expect support from communities focusing on software rights like Linux. Even for them we are like black sheeps, most likely for the amount of bad actors in the space. But the core ideals remain, this is not about money or scams, this is about civil rights, freedom of speech & privacy, and your property ownership rights. This is the USA 1990's encryption wars, redux.
## Getting to real users
The whole trajectory of Web3 needs to go past short-term casino games, centralization of its infrastructure, and a Microsoft EEE mentality in the DeFi space. Only then can we start to get real value for users to care.
Our view is that, if you use Web3, and you don't notice it is any different to Web 2.0, it is boring and *"just is"*, only then the Web3 is can be considered a success. An open web needs to be the `standard`, not the exception.
And that starts with `access`. Your network can be the most decentralized ever, but if no one can easily access it, does it matter? This is the last mile issue of Web3. We have all this infrastructure, centralized or decentralized, but access is still a barrier, and frankly... it's a joke.
We need to fix this. Now.

View File

@ -1,25 +0,0 @@
---
title: Browser Extension
---
Lume has been put into a browser extension as the first prototype product being created. This is an **extremely** early demo and many things are buggy and can break.
This extension has the goal of letting you browse decentralized (web3) websites, but doing so in an *actual* decentralized way. This means not using:
* AWS/Cloud for blockchain access
* Cloudflare/CDN's for application access
* ICANN (.com, .net, .org) for your website name
You will get your own Lume account that is a 12 word seed, which will create an anonymous account on web3portal.com.
The current networks supported are:
* Handshake (https://handshake.org)
* Ethereum (https://ethereum.org)
* IPFS (https://ipfs.io)
* Normal servers (accessing a VPS/Dedicated Server/Cloud server/Web host)
The current domain networks supported are:
* Handshake
* ENS

View File

@ -1,7 +0,0 @@
---
title: Account
---
After you have either gone through the onboarding or skipped it you will be greeted with a login. Lume uses a 12 word seed as an account, and you can either provide your own or have one be created.
![Account](/extension/account.png)

View File

@ -1,7 +0,0 @@
---
title: Bootup
---
Lume now has to connect into the network, this process is usually fast and should not take more than a minute.
![Bootup](/extension/bootup.png)

View File

@ -1,9 +0,0 @@
---
title: Start
---
The browser extension is currently Firefox only. Google has enforced security restrictions on Chrome/Chromium to make creating an all-in-one extension not feasible engineering-wise without compromising on decentralization. Simply put, Google's browser is more restrictive than any other.
You will need to install the extension at https://addons.mozilla.org/en-US/firefox/addon/lume-web/
![Start](/extension/start.png)

View File

@ -1,13 +0,0 @@
---
title: Sync
---
Once you are in the dashboard you will need to let all networks sync. This is the current estimated time of all networks syncing:
* Handshake: 45 min
* Ethereum: 5 min
* IPFS: 1 min
Once done you can now browse web3 (the open web) with Lume!
![Start](/extension/sync.png)

View File

@ -1,18 +0,0 @@
---
title: Websites
---
There are a few things to note before you start browsing. As stated before, this is an early demo. So here are a list of known problems:
* IPFS is highly hit/miss. It fails more often that it works and needs more love. IPNS which works with IPFS is generally even worse.
* Ethereum may have issues syncing. If this acts up or takes too long, try reloading the extension, re-installing the extension, or restarting Firefox.
We have also mentioned that the extension is partially-centralized. Current it uses only one P2P node run by the project.
Now below are some example sites to try out:
* `mempooler` This is a normal server on Handshake
* `bafybeiguremy5hkphmhzqibnj4ftbursom5lhc52fxn3qaycj3kecy4ifi.ipfs.lume` This is a means of directly accessing an IPFS website
* `ens.eth` This one is highly likely to fail or just hang. Complex websites are not well-supported yet.
Note that due to ENS users mostly relying on IPNS, many ETH sites will not work well or at all right now.

View File

@ -6,8 +6,4 @@ title: Welcome
This project was created so that we can have a *true* open web in which we can start back from web 1.0 and build what should have been, but never happened. While this idea as a whole takes on many names, we can all agree that it should be about openness and freedom.
The project's current only product is a *very* early MVP demo browser extension.
We are also doing `progressive decentralization`. This means that at this time, while the tech itself uses P2P technology and is decentralized, the products we create are semi-centralized.
You may use the navigation on the left to get started.
We are doing `progressive decentralization`. This means that at this time, while the tech itself uses P2P technology and is decentralized, the products we create are semi-centralized.

70
docs/lume.md Normal file
View File

@ -0,0 +1,70 @@
---
title: Lume
---
Since we defined the limitations of Web2 and building blocks of Web3, let's take a look at what Lume is and where it fits in the grander scale.
### How did it start
Lume started (before we even decided it was a project or the name) while we were trying to create a web3 cloud drive on Nextcloud based on Skynet. We realized that we were going down the wrong path and needed to solve accessing content before doing anything with the content itself.
Skynet in the process had a very rough year, as since 2020, Skynet tried to solve distribution with network of Skynet Portals, but experienced number of obstacles from all levels of internet infrastructure (see [Limitations of Web2](web2-limits.md)) and eventually was shut down.
Sia in the background was trying to support both innovating and Skynets efforts, and things came to a head with Skynet going bankrupt.
In that journey, Lume has pivoted at-least 1 time to meet its goals, and has ended up having to build many building blocks out of necessity, and a few that may go unused 🙃.
Sia has since started rebuilding with new software, and Lume has been building on top.
Sia is the network of the worlds data, and Handshake replaces ICANN while collaborating with the web3 ecosystem. We have discussed Sia a lot so far, but let it also be known the Handshake tribe has had its own share of drama too, and Lume is actively involved in both.
So the rabbit hole of Web3 DNS is where we started as the origin of Lume, which means the `world` or `light` in Romanian. It was our intention from the beginning to contribute to the solution of the web's censorship issues and becoming a bridge (or gateway) to the Web3.
### What is Lume? Simple version, please!
`What is Lume?` This is something we have often asked ourselves to explain it 😅.
Lume can be broken down into a few major focuses:
- Lume is a **P2P network** that uses public keys instead of torrent hashes to access peers and content.
- Like a BitTorrent, but ready for Web3. You can also see it to be a bit like IPFS which uses Libp2p, but more light weight.
- The goal here is to create a bridge P2P network `to service all of Web3`.
- `It's NOT a blockchain`. You don't need one since anyone can provide services with RPC or their own custom protocol, and anyone can query them.
- Lume is a **storage portal** (think `L2` in blockchain terms).
- It builds on Sia and stores your private data, and eventually public. In other words think of it like a paid IPFS service, but its not IPFS.
- Lume is the **end user gateway**.
- It is how you will interface with all content networks, blockchains, or other nets in the future. This could be a browser extension, web browser itself or anything in-between.
### Ok, I get it. Now how it works under the hood?
#### It's a bridge, it's a gateway
Lume can be seen as a middleware system where you can plug anything in and access it over the relay network. This is done with a help of Hypercore/Dat (see https://docs.holepunch.to which is born from https://dat-ecosystem.org) that allows it to proxy (relay) access to other networks anonymously, and to provide some DNS services. It is also end-to-end encrypted (based on https://noiseprotocol.org).
In the future, Lume will also support WebRTC to act as a signal network and connect browser to browser.
#### It's a storage network and access portal
Lume's portal is powered by Sia (https://sia.tech), and is where all your private data gets stored. It is encrypted before uploading, and it is a paid storage you are accessing through a portal and your web account. The portal can also store public data, for example social app, by just not encrypting. If you paid attention, you remember that Sia is private storage, so how is this possible? It's about the renter (in this case Lume), since you can decide to upload data that do not use encryption and then use them as privately owned (and paid) public data.
The portal is also responsible for hosting all browser code for the end user.
#### Kernel
Next is the frontend of everything. The browser tech of Lume can be referred to as as the kernel and kernel modules, like with Linux. The frontend will load an iframe which loads a bootloader from a .js file which then will trigger a login state if a key is set. It will download the kernel from a community list of portals and once setup, the client app can then run anything they like. All modules operate as web workers inside the iframe.
#### Supported Content Networks
This is the basis of how you can run light clients, SPV nodes, DNS resolvers, content networks and much, much more. It is all based on CID's (Content Identifiers) which use the blake3 hash algo and come from `S5 Network` (https://docs.sfive.net/concepts/content-addressed-data.html).
With blake3 we can also support real time verified streaming, which means files get verified based on their hash as you download so everything is fully trustless. See https://github.com/n0-computer/abao.
#### Path forward
This browser tech can take many forms and Lume will continue evolving to be more advanced over time with its browsing abilities and more importantly, become easy and comfortable to use. That's its biggest problem today and also a reason we already started planning an extension for the most popular browser, Chrome. The end goal is a browser fork, but right now we need to get the foundations right.
So Lume is where all roads meet. It is the bridge, hub, gateway, end user access. It is what allows you to discover Web3 services in the same way you discover seeders with BitTorrent. It is what gives you private storage paired with other Sia ecosystem applications, like from S5.
Lume wants to solve the biggest issues we have left, data ownership, actual decentralization and accessibility.

25
docs/web2-limits.md Normal file
View File

@ -0,0 +1,25 @@
---
title: Limitations of Web2
---
Currently, Web2 is a combination of multiple open protocols.
- `HTTP (HyperText Transfer Protocol)` - used for transmission of information across the internet
- `FTP (File Transfer Protocol)` - used to transfer files from a server to client
- `SMTP (Simple Mail Transfer Protocol)` - used to send mail messages
- `IMAP (Internet Message Access Protocol)` and `POP (Post Office Protocol)` - used by email clients to retrieve messages
- `DNS (Domain Name System)` - used to turn domains names into IP addresses which allow browsers to access websites and other resources
Their limitations are often `single points of failure with servers and IP addresses`, where you need to load balance in order to scale and it is also very easy to identify who is hosting what, for better or worse.
You can also find a lot more limitations when you zoom out a bit and focus on network effects. You will notice that many of these protocols have been captured and modified to benefit the `Big Technology` companies. You either do it their way or you can forget about getting it done.
But most important of all is `Censorship`. With web content, nearly every single layer of the system has been captured and has the power to shut you down if scaring you with warnings is not enough.
Let's look at those:
- `ICANN` - A giant phone book hierarchy you can see as a group of database records knowns as `Domains`. This exists because people remember words better than numbers or codes and it is what makes market with domains so valuable. And while ICANN was originally founded by the government to be later made independent, it still can be corrupted and a subject to political pressure which makes it centralized and makes the criteria for getting new TLD's very difficult.
- `DNS` - Your DNS providers can easily censor you or refuse to provide service. And even if they are a good one, they can be pressured or enforced todo the same. So what can you do if this happens to you? Not much - your one and only option is to move to other provider. And if they are your domain registrar at the same time, well...
- `Hosting` - Your servers can be shut down any moment. There is a hierarchy and `ISP (Internet Service Provider)` has this right as a business partner too. If any of them or the government doesn't like what's going on, the pressure is applied and can go all the way up, shutting you down quickly or facing the consequences.
- `Web Browser` - It's been many years since browsers like Chrome added "safety" blockers to scare you off accessing any sites they wish. While in general this exists for a good reason, it can be easily abused.
- `Anti-Virus` - Your AV software, even thought it's supposed to protect you, can do the same with any form of real-time protection.
- `Computer / Operating System` - With the direction things are going it is completely rational to think that Microsoft could put this in the OS level too. Let's hope we don't get to this point.

View File

@ -0,0 +1,32 @@
---
title: Building Blocks of Web3
---
If you hear someone talk about Web3 today, all they are talking about are just random NFT's, Casinos or future possibilities of internet.
But that's not what Web3 really is. `The new ingredience separating Web3 from Web2 is censorship-resistance`.
You can actually translate a lot of the Web2 technologies and components to their Web3 versions, and many can be reused even as they are right now.
When you look at the marketing for the hundreds of Web3/DeFi projects, it's all full of strong claims and promises, every single project sounds like re-definition of the internet, while it actually is just begging for attention and your money.
So instead of trying to explain what Web3 involves, lets explain what we have in Web2, and what its counterparts can look like in web3.
- `Money Ledgers -> Blockchain` - Essential component of Web3. Instead of easily editable SQL database with bank account credits you have a blockchain ensured security and order of records where changes can happen only through consensus mechanism maintained and protected by all servers participating on the network. It's open-source and permission-less, you're your own bank.
- Also since blockchain is the most mis-understood by people not deep in the `crypto`/`defi`/`web3` industry, here is a very short primer on what a blockchain is compared to a MySQL database.
- You have a single MySQL db, this is one Bitcoin node.
- You scale that to two nodes, and setup active-active replication (both nodes can write and read to the database, and can be seen as a `master`).
- Now you decide the two servers cannot trust each other, so you need a consensus system. There are blockchains/p2p nets that do forms of consensus that don't directly require money too 🙃.
- Lastly you decide that for security, some sort of economy needs to exist, per human nature/incentives, so that making changes has a cost to it.
- You now have transformed a traditional web2 database into a blockchain.
- `Stored Procedures and Macros -> Smart Contracts` - There are many different forms of functions people use with MS Excel, MS Access or SQL. These can interact with and modify the records you have, similarly as Smart Contracts.
- `MySQL/NoSQL -> Distributed/Hybrid Databases` - There have been several different types of databases that have evolved in web3. Some are pure P2P, some use on-chain data or otherwise settle consensus or other data on-chain.
- `REST API -> RPC` - Most of the web runs on different forms of APIs today, the most common approach being REST. With blockchain databases, access to these uses different forms of RPC systems.
- `Virtual Private Server (VPS) -> Compute Networks` - A few of these exist, but there are blockchain networks that specialize in the brokering of compute services like you may expect from AWS, which can run pretty much anything else in Web3 if needed. Both Web2 and Web3 have P2P networks, and the best known are probably BitTorrent and IPFS. These can be viewed as the content networks (not blockchains) and are extremely important for Web3.
- `Serverless Functions and CDNs -> Edge Networks` - These are a specialization of compute networks that were born from AWS with lambada (and cloudfront) but has since rapidly evolved. There are projects that are experimenting with blockchain based edge compute and CDNs.
- `NAS Backups, Archiving, Object Storage -> Storage Neworks` - If the currency of the world is currently oil, the currency of the web is data. No matter what you do, you eventually need secure, private, encrypted data storage, and a lot of it. This comes in many forms, but broadly these are where all of Web3's (and Web2) data will end up in sooner or later.
Web3 is also fundamentally built on P2P networks in many forms and designs. Every blockchain alone is a P2P network, tracking its databases changes. That's very different from Web2, that is mostly using `server -> client` model.
We will always have servers, but they need to become more resilient by becoming anonymous and serving over P2P rather than in means that are easy to identify and censor. And while history shows us how much effort is always being put into centralization and limitation of human rights, it's the laws that will eventually have to adapt to the new technologies.

View File

@ -56,14 +56,6 @@ const config = {
src: "img/logo.svg",
srcDark: "img/logo_dark.svg",
},
items: [
{
type: "docSidebar",
sidebarId: "main",
position: "left",
label: "Start",
},
],
},
footer: {
style: "dark",

6317
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -2,6 +2,10 @@
"name": "@lumeweb/docs.lumeweb.com",
"version": "0.0.0",
"private": true,
"repository": {
"type": "git",
"url": "gitea@git.lumeweb.com:LumeWeb/docs.lumeweb.com.git"
},
"scripts": {
"docusaurus": "docusaurus",
"start": "docusaurus start",
@ -26,7 +30,12 @@
"devDependencies": {
"@docusaurus/module-type-aliases": "2.4.1",
"@tsconfig/docusaurus": "^1.0.5",
"typescript": "^4.7.4"
"typescript": "^4.7.4",
"@semantic-release/changelog": "^6.0.3",
"@semantic-release/git": "^10.0.1",
"@semantic-release/npm": "^10.0.4",
"@semantic-release/release-notes-generator": "^11.0.4",
"semantic-release": "^21.0.7"
},
"browserslist": {
"production": [

View File

@ -13,20 +13,7 @@
/** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */
const sidebars = {
main: [
"index",
{
type: "category",
label: "Extension",
items: [
"extension/start",
"extension/account",
"extension/bootup",
"extension/sync",
"extension/websites",
],
},
],
main: ["index", "better-web", "web2-limits", "web3-building-blocks", "lume"],
};
module.exports = sidebars;

Binary file not shown.

Before

Width:  |  Height:  |  Size: 545 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 237 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 545 KiB

BIN
static/read_write_own.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB