Radicle-Link: Extending Git with Peer-to-Peer Network Discovery
radicle.xyz
radicle.xyz
Additionally running all of this on top of I2P would counter any embargoes that centralized forges like Github have to abide by. Projects by Iranians wouldn't suddenly disappear from radicle and neither would things like PopcornTime.
I'll be checking this out. I hope they have an executable with a good CLI. The GUI or embedded webserver for the social part of radicle can come later (unless they already have it)
Honestly I don't think I've ever "discovered" a project simply by searching/browsing github itself. Usually it is through places like reddit and HN, and blog posts when searching for how to do something. I've never gone to github and just searched for some random project name...
On the other hand I also don't use github "stars", which I see more and more people talk about, so maybe some people use github differently than I do.
Another great source for discovering FOSS projects is https://opensource.builders
SSB downloads the whole feed so it can guarantee that a peer hasn't maliciously withheld certain previous messages from the feed.
I guess (waves hand vaguely) that constraint probably isn't relevant for version control, because subsequent commits would fail to apply…? Not sure. But if you're only interested in recent history, you could probably do something like a shallow clone.
This way, you would know about all the messages and blobs, but only download those you want, and match their content against the hash. Of course, this comes with less replication, therefore less availability.
> The first time you join the network there will be a lot to download and process. For real, this “inital syncing” process can take up to an hour and use a couple of gigabytes.
Are you saying the ssb project's website is wrong here? (I don't use ssb, so I'm going by what's documented only)
- Your SSB client downloads feeds you follow, plus feeds they follow, and possibly feeds they follow too
- When downloading lots of new feeds at once (for example, the first time you sync) your client makes no attempt to prioritise which feeds it downloads first
- Your client downloads all blobs (attachments) greedily
- Your client indexes downloaded messages (for example, to find the recent messages from all feeds); its implementation of indexing is slow and heavy; until indexing is complete, the app is unresponsive
None of these assumptions is necessarily true of an SSB client, but they're generally true of popular existing clients.
SSB doesn’t have a root node, so if you think of yourself like an island the data transfer required from your first “bridge” is going to depend on what you are bridging to.
In practical terms, if you join one of the SSB pubs published in their documentation, you’ll sync whatever is on that pub.
— https://radicle.xyz/towards-decentralized-code-collaboration...
This is exactly what Arthur and Eric from the MetaCurrency Project aimed to confront. Protocol Cooperativism (not Platform Cooperativism) means direct, fully transparent, distributed, and mutually-sovereign protocol negotiation in all areas of our new digital world/life [1], making invisible the dogmatic legacy 'wealth acknowledgement systems' now in place [2]. Even Banking 'apps' and things like land-registry [3] and more can be re-invented (I'd argue that banks are one of the earliest forms of software).
[1] https://medium.com/holochain/holochain-reinventing-applicati...
[2] http://eric.harris-braun.com/blog/2007/11/05/id-55:
"When I was growing up in Ecuador, I remember in the market place there would always be a couple men sitting by tiny tables with pen and paper and a line of people waiting for them to write letters, for which they would pay a small fee. This is a common sight wherever literacy isn’t universal. This situation is almost exactly the same we are in today with respect to money. We, and by we I mean our communities (not ourselves as individuals) are monetarily illiterate, and therefore we need others to make our wealth acknowledgment statements on our behalf (and we pay a pretty penny for it) when in fact, we could simply learn to write.
Learning to write in the monetary context, is simply issuing a currency. Or, more precisely, creating the symbols and rules that a community will use to make wealth acknowledgment statements. But the problem is that we don’t have an alphabet, a grammar that we can follow with which to make such statements. Our monetary system and the financial world behind it is essentially that 40,000 character dictionary and the scribes who can interpret it. It does work. It creates a system in which we can make wealth acknowledgment statements at a global scale. But it does so at a direct cost like paying the scribe in the marketplace, and also a systemic cost, that of allowing an elite who control that system to grow and take advantage of those who do not."
[3] https://medium.com/@AlastairParvin/a-new-land-contract-684c3...
Bit-who?
Most of the other things radicle aims to provide seem like they are better centralized. There is a reason we all use gitlab/github for collab services. It is that centralization is better for that kind of thing.
No, it is not because centralization is better. It is because centralization is easier.
I've many, many times wished for a way to collaborate on a git-based project without having to centralize the collaboration on a platform that I ultimately fear will censor the project. radicle-link is exactly what I'm looking for, and it's bizarre to me that someone would look at this project and say "hmm, it should just be centralized." Why should it be?
In particular, the essence of the packfile format and protocol --- storing and exchanging patches from one content-addressed atom to another --- would be good for IPFS as a whole, so I think the issue is not some incompatible priorities, but rather just human/org coordination difficulties. (C.F. [eth2-report] for about Ethereum 2 working with libp2p.)
It's always harder to reuse code developed by different teams in the short term, but I firmly believe it's worth it, making both sides better --- better than they would be had they gone their separate ways --- in the long term.
The immediate challenge with Git is that git objects (blobs, trees, and commits) can be arbitrary large, which is bad in general, but especially bad for p2p networks where you don't to waste arbitrary large bandwidth and storage with some untrusted peer before verifying whether the data they've sent you is what you wanted. But I think I and a friend found a solution to this [git-chunk]. With that, it's at least possible to negotiate who has what git object without an awkward trustful identifier translations. That I think is good enough to get the ball rolling, after which the improvements to the protocol taking inspiration from the packfile format/protocol can be pursued.
[old-roadmap]: https://github.com/radicle-dev/radicle/issues/689
[eth2-report]: https://discuss.libp2p.io/t/report-a-study-of-libp2p-and-eth...
[git-chunk]: https://discuss.ipfs.io/t/git-on-ipfs-links-and-references/7...
But centralization is good until someone gonna try to censor and deplatform your project or it's contributors. And this can happen for all kind of reasons starting with non-exiting copyright infringement (like with popcorn-time), bypassing some DRM or creating tools that can be used for malware development or even breaking ToS on some API.
Today people think it's good idea to deplatform people for their political views or ban them based on region where they living, but tomorrow that's can happen with software projects too.
What is "better centralized" and what advantages do you think centralizing it brings? Git itself is literally a reaction against having centralization.