Re: Fwd: [gnu-soc] GNU Guix Project: Decentralized substitute distribution
Thanks a lot for the resources. I am currently going through them to clear out my basic concepts. Also, it would be great if you could share some more project related resources so I could play around with them a bit and experiment. Shivam On Sun, 5 Mar 2023 at 13:36, pukkamustard wrote: > > Hi Shivam, > > Thanks for your interest! > > Shivam Madlani writes: > > > 1) The project title states "decentralized"... which i don't get. How > > exactly is it decentralized? Similar to a P2P file sharing tech or > > something else (BitTorrent)? > > Actually it is similar to P2P file sharing exactly like BitTorrent :) > > The terms "centralized", "decentralized" and "distributed" are a bit > confusing. I like to think of them as illustrated in a paper by P. Baran > from 1964 [1]: > > - Centralized means that all nodes connect to one single central node. > - Decentralized means that nodes connect to a smaller set of nodes that > may be interconnected. This is similar to what is sometimes called > "federated" networks. > - Distributed means that all nodes are equivalent and connect to many > other nodes (like a grid or mesh). > > [1] > https://www.rand.org/content/dam/rand/pubs/research_memoranda/2006/RM3420.pdf#page=16&zoom=90,-494,792 > > The goal of the project is to make Guix substitute distribution > something more in-between decentralied and distributed. Currently it > resembels something between centralized and decentralized. > > The project will work atop of previous work to make substitute > distribution decentralized: https://issues.guix.gnu.org/52555 > > The idea is to use an encoding of content that allows the content, in > this case substitutes, to be distributed over many different protocols > and transport mediums including IPFS, GNUnet, NDN, CoAP, HTTP. The basic > ideas are very similar to BitTorrent. > > There are a few directions in which a project go (quote from the project > description): > > - Improving the user experience and integration > - Adding more transport protocols (e.g. IPFS, GNUnet, NDN, CoAP,...) > - Conducting performance evaluations > > > 2) As per the project idea I interpreted that the technologies involved > > would be c/c++, shell and a bit of networking. Is this correct or am I > > missing something? > > The main programming language involved is Guile Scheme (as already > mentioned by Csepp). > > There might be some interaction with existing tools and libraries that > would require programming in other languages (e.g. C/C++/Rust/Go) but > that is not the focus or main task of the project. > > > 3) What would be the duration of the project? (175hrs/350hrs). > > I think 175h should be enough to do interesting and meaningfull work. > > Csepp writes: > > > As for other details, I CC'd Pukkamustard, who will be the mentor for > > this project if I'm not mistaken, and should be able to fill in the > > blanks. > > Thanks for the CC, also CCing Attila who might co-mentor (yay!). > > -pukkamustard >
Re: Fwd: [gnu-soc] GNU Guix Project: Decentralized substitute distribution
Hi Shivam, Thanks for your interest! Shivam Madlani writes: > 1) The project title states "decentralized"... which i don't get. How > exactly is it decentralized? Similar to a P2P file sharing tech or > something else (BitTorrent)? Actually it is similar to P2P file sharing exactly like BitTorrent :) The terms "centralized", "decentralized" and "distributed" are a bit confusing. I like to think of them as illustrated in a paper by P. Baran from 1964 [1]: - Centralized means that all nodes connect to one single central node. - Decentralized means that nodes connect to a smaller set of nodes that may be interconnected. This is similar to what is sometimes called "federated" networks. - Distributed means that all nodes are equivalent and connect to many other nodes (like a grid or mesh). [1] https://www.rand.org/content/dam/rand/pubs/research_memoranda/2006/RM3420.pdf#page=16&zoom=90,-494,792 The goal of the project is to make Guix substitute distribution something more in-between decentralied and distributed. Currently it resembels something between centralized and decentralized. The project will work atop of previous work to make substitute distribution decentralized: https://issues.guix.gnu.org/52555 The idea is to use an encoding of content that allows the content, in this case substitutes, to be distributed over many different protocols and transport mediums including IPFS, GNUnet, NDN, CoAP, HTTP. The basic ideas are very similar to BitTorrent. There are a few directions in which a project go (quote from the project description): - Improving the user experience and integration - Adding more transport protocols (e.g. IPFS, GNUnet, NDN, CoAP,...) - Conducting performance evaluations > 2) As per the project idea I interpreted that the technologies involved > would be c/c++, shell and a bit of networking. Is this correct or am I > missing something? The main programming language involved is Guile Scheme (as already mentioned by Csepp). There might be some interaction with existing tools and libraries that would require programming in other languages (e.g. C/C++/Rust/Go) but that is not the focus or main task of the project. > 3) What would be the duration of the project? (175hrs/350hrs). I think 175h should be enough to do interesting and meaningfull work. Csepp writes: > As for other details, I CC'd Pukkamustard, who will be the mentor for > this project if I'm not mistaken, and should be able to fill in the > blanks. Thanks for the CC, also CCing Attila who might co-mentor (yay!). -pukkamustard
Re: Fwd: [gnu-soc] GNU Guix Project: Decentralized substitute distribution
Shivam Madlani writes: > -- Forwarded message - > From: Shivam Madlani > Date: Fri, 3 Mar 2023 at 12:42 > Subject: [gnu-soc] GNU Guix Project: Decentralized substitute distribution > To: > > Hello all, > My name is Shivam Madlani aiming for GSoC'23, and I am particularly > interested in The Guix project. I took a look at the project idea and > installed a fresh version of Guix on a VM and started playing around in it. > I have a few questions regarding the project which I think you guys can > help me with: > > 1) The project title states "decentralized"... which i don't get. How > exactly is it decentralized? Similar to a P2P file sharing tech or > something else (BitTorrent)? > 2) As per the project idea I interpreted that the technologies involved > would be c/c++, shell and a bit of networking. Is this correct or am I > missing something? > 3) What would be the duration of the project? (175hrs/350hrs). > > Thank you all and I hope to hear from you soon. :) > > Regards Moving this to guix-devel, since this is more a development focused question, not a user support one. See this issue for some related code: https://issues.guix.gnu.org/52555 As for languages, you would definitely need to write Guile Scheme on the Guix side, but it would probably make use of libraries written in other languages, which would likely include C and C++, but also quite possibly Rust and Go, since a lot of newer decentralized file distribution protocols have implementations written in them. As for other details, I CC'd Pukkamustard, who will be the mentor for this project if I'm not mistaken, and should be able to fill in the blanks. ps.: Personally I'd really love to see NDN based substitutes, but NDN is not even packaged in Guix yet, so my guess is that at first it's best if you added support for something that already works on Guix System, like IPFS.