After basically brain-dumping my Devconnect experience in the last article, I want to take another view of what I learned there. And the most straightforward view on that topic for me is probably the Web2 view.
I talked to different people, from IPFS, Radicle, Ceramic, Polygon, Polkadot, Ethereum, etc. pp. This article are the conclusions I got from these talks in regard to Web2.
Why Web3 if Web2 is Good Enough?
As someone coming from Web2, like probably most people who come to Web3, you might be asking yourself: Why?
Why should you use decentralized and permissionless tech that makes up the core of Web3? And how is it different from the Web2 tech you already know?
After all, you heard the lamentations about how Ethereum is a worse AWS in all but a few exceptional cases.
From my conversations at Devconnect with all these brilliant devs who build web3 infrastructure, one thing sounded especially interesting: Public-Key Cryptography by default.
The idea is that all things you put on a decentralized network, be it a blockchain network or something different, are either immutable or signed with your private key.
This is the crucial difference here from Web2. You own the key; it's not some password that a company can reset. The downside here is obvious, if you lose your key, you're done for, but the upside is tremendous; nobody can do anything in your name.
This has two important implications for the consumer: either they know it won't change behind their backs (i.e., NPM drama), or they can be sure the data comes from someone they trust.
In times of "fake news" all around the world, it's essential to know the source of your data, and if everything is signed by default, that makes it much more manageable.
This doesn't even touch the censorship issue. A centralized company can be forced to take down data; a decentralized hosting service is immune to such a threat.
Some companies want to be more family-friendly and use that as an excuse to kick out creators on a whim. I heard of so many creators on IG who build their whole life on top of it to get their account deleted for whatever reason.
Example 1: Radicle
Radicle is a Web3 alternative to GitHub that doesn't use a blockchain, just a peer-to-peer protocol.
People worldwide run nodes, and you push your repository to these nodes to let them host it for you.
The trick here is that you sign the repository. This way, the nodes know that if someone wants to change the repo they host, it has to be the person who signed. No one else has permission to do so.
This way, you don't have to care about the actual location of your repo; if the nodes shut down, you can even host your own one, all you need is your private key, and you're good to go.
Example 2: IPFS
IPFS is a static file hosting service that works similarly to Radicle. People run nodes, and you upload your content to those nodes. It's a bit like S3 but without a central instance.
The idea is that IPFS addresses your content by its hash; you can be sure it's always the same.
It's not like Facebook; that can look different every time you visit it.
This allows for straightforward deduplication algorithms because, if the file is already in the network, you don't have to upload it again. The only duplication that might happen is for caching.
If no one uses your files, they will get removed from the network. To make sure they are available, you have three options.
- You run your own IPFS node and pin the files there (Brave comes with an integrated node)
- You pay a (centralized) company to pin your file on their nodes.
- You use their Filecoin protocol to pay someone (decentralized) to pin your data.
This way, you can use Web3 features without even thinking about blockchains. But if you don't trust those pinning companies, you might be inclined to use Filecoin, for example, when you have censorship concerns.
Do You Have to become a Smart Contract Dev?
So, these are excellent points, but what does it mean for Web2 devs?
While it helps to learn smart contract development, especially to understand the concepts you will be interacting with, it's not required to implement your own smart contract to work in Web3.
Also, if you ever feared deploying before a weekend, being a smart contract dev is this, but dialed up to eleven. If you're just starting, you don't want to be the person who lost millions because of a typo! :D
Web2 Frontend Devs
Well, if you're a frontend dev, good news! You can use all of your skills in Web3, not much change. Things have different names, but you're connecting to an HTTP API and loading data just as you did in Web2. And if you ever used some API written by ten junior developers of whom no one works at the company anymore, you probably won't have any issues with Web3 APIs.
You can put your code on Radicle, deploy your frontend to IPFS and do things just as you're used to.
Web2 Backend Devs
For backend devs, the things look a bit different but not too dire!
The whole Web3 infrastructure is much different from what you know. But you don't have to dive in 100%, and to speak frankly; you can't!
There isn't the technology to build a 100% decentralized version of every Web2 app. For example, there is no equivalent to EC2 or Lambda. You can execute logic in a smart contract, but that's very expensive and unbearably slow with the most prominent blockchain networks.
Hybrid Web3
Your Web2 skills are still desperately needed!
Running a Node.js app in Docker or deploying some API logic inside a Lambda that caches data in a centralized way is the only way to build a fully-fledged Web3 app today.
Generally speaking, it might not be obvious what data you can and should put in Web3 storage and what parts of the calculations you can and should perform in a smart contract. Still, when you have a use case, you will see what you can move to traditional services without much of an issue.
Improve User Experience
NFT data belongs on-chain, and the payment should also be made on-chain, but everything else? Cache it wherever you like! Pull the data into a Redis instance and maybe keep a listener that updates that copy but delivers it from your cache with two-digit latency.
If your app is gone, the NFTs are still there, so people might lose the value your app added, but they still got the NFT, which was the reason why they used your app in the first place.
Gradually Transition People from Web2 to Web3
Also, many people don't have an IPFS client or a crypto-wallet yet. If you want to build products for the masses, you need to meet people where they are.
So, it's crucial to keep doing things with Web2 tech along the customer journey until you know they can even interact with Web3 tech in a meaningful way.
Conclusion
Web3 is so much more than just blockchains! But blockchain networks can help to decentralize even further by making payments permissionless and countering problems like "fake news" and censorship.
Public-key cryptography is at the core of this movement, and this alone will be a killer feature in the next decade. Owning your identity allows the infrastructure to be abstracted even more. You don't need an AWS account; you just need a network that ensures only the signer of data can change it.
And the best of it all, we, the Web2 developers from the traditional centralized IT space, can move gradually into this new world. Sure, frontend developers might have it easier than backend developers, but for the following years, we still need them so users don't have to pay absurd amounts of money for storage or wait for painfully slow requests.