Pinned post

Is it weird that for a while now I've wanted to build a new social network that is basically what Facebook was in the early days?

In a nutshell, just talk to your friends. And that's it. Especially old friends you've fallen out of touch with in recent times.

Oh, and it should be as privacy-preserving as possible. Encrypted, decentralized, yadda yadda.

I've thought about it a bit more recently, and it's all technically possible, except for the networking part.

Wow, I am not alone in this desire to have better social networking.

This feel like a cry for help.

Show thread

Github is cool n all i guess but im worried how *everything* is there

@ayushsharma22 "fediverse" and "linkedin" feel like two mutually incompatible environments.

I'm having a hard time imagining a company, startup or enterprise furthering the fediverse.

The other cool thing about sponsoring a public node in a virtual network, is if you have extra resources you're not using, you could share your node with friends and family for free.

Your friends and family wouldn't need their own second-level ISP, they could just use yours, if you're feeling generous.

Show thread

Oh wow, I just realized something.

The Yggdrasil node(s) you end up peering with ends up being a kind of second-layer ISP.

Maybe you economically support the public nodes (ie a second ISP) the same way you support the first ISP. By end-users directly paying recurring fees.

I imagine the fee could be something as low as a couple $/mo (rather than $X0/mo), since the Yggdrasil network is all virtual.

Show thread

Here's the current list of public nodes on the Yggrasil network:

publicpeers.neilalexander.dev/

Do you think they would be happy if you started running traffic for millions of users through their nodes? I suspect not.

Show thread

For the social network to scale to possibly millions of users, the public peers need to be able to handle all the traffic, meaning, it might actually be pretty costly to run a public node.

How do you incentivize someone to run a public node? How do they pay for the rack space and a datacenter ISP? What's in it for the public node hosts?

How can this work out economically? Users need to pay the public node hosts somehow...

Show thread

I'm a little worried about how well the public peer system can scale though. To beat ISP-level NAT, you need to peer with a public node.

That is, a node with a static IP address that is routable from the public internet. Basically, someone needs to pay for rack space in a data center to forward traffic to/from all the nodes on residential ISPs.

Show thread

The decentralization bit falls completely flat when you can't really host content at home, because residential ISPs don't generally give out static IPs. At least, not in the US.

yggdrasil-network.github.io/

But this new Yggdrasil virtual public network could potentially change all that. It has me thinking about social network tech again...

Show thread

Is it weird that for a while now I've wanted to build a new social network that is basically what Facebook was in the early days?

In a nutshell, just talk to your friends. And that's it. Especially old friends you've fallen out of touch with in recent times.

Oh, and it should be as privacy-preserving as possible. Encrypted, decentralized, yadda yadda.

I've thought about it a bit more recently, and it's all technically possible, except for the networking part.

Thankfully, the newest Kotlin/JS gradle plugin uses yarn,
which will ossify dependency versions into a yarn.lock file.
Use the `backupYarnLock` gradle task to export the dependency versions into source control."

4/4 fin!

Show thread

Even worse, the version you didn't know you were depending on gets overwritten by the rebuild
so you can't go look it up after you suddenly realize you need it.
The only way to restore working order to your project is to guess what version you depended on
for each end every dependency that's now broken by an unexpected (and unwanted) update.

3/n

Show thread

Tragically, the default behavior for npm is to automatically download newest
versions of libraries even when rebuilding an existing project!!
Naturally, this creates unexpected bugs when OF COURSE your code isn't
automatically compatible with newer versions of your dependencies.

2/n

Show thread

In fact, here's an angry rant comment I left in a JS-based build system about a year ago:

"Always explicitly pick versions for all JS dependencies!!

The Kotlin front-end plugin will warn us if we try to add a dependency without a version.
Don't ignore those warnings, you'll regret it later if you do.

1/n

Show thread

I've been reading about the latest NPM madness with a gigantic bowl of popcorn in hand. 🍿 Who thought it would be a good idea for NPM to automatically "upgrade" dependencies to newer versions? Version pinning should be the default behavior, like other sane environments do (eg Java, Rust).

research.swtch.com/npm-colors

Oh right, the network is called Yggdrassil.

Such a cool name! :blobaww:

Show thread

And yes, the public nodes are distributed, the code is open source, connections are encrypted by default, yadda yadda. All that good stuff. =P

Show thread

As long as you can peer with a public node that’s routable on the internet, that node will relay data to you over that peer connection.

It’s sort of like instant messaging, but the chat app is a network itself that could transport data for other apps.

Show thread

This is so cool. Its a virtual public internet that runs on top of the existing internet.

changelog.complete.org/archive

In a nutshell, it could make a device on the LAN behind your router addressable on the public internet, even if your ISP won’t give you a static IP.

Show older
Mastodon for Tech Folks

This Mastodon instance is for people interested in technology. Discussions aren't limited to technology, because tech folks shouldn't be limited to technology either!