21. Mar 2016 05:35 by l...@gnu.org:


> Hello!
>
> <> vinc...@cloutier.co> > skribis:
>
>> The admission for Google's Summer of Code have started and I want to spend
>> the summer working on Guix. I have a proposition I hope you will find
>> interesting! I have joined the draft to this e-mail.
> Preliminary question: could you resend it as plain text or Org-mode to
> simply the life of people on this list?
>
>

Of course! I added a plain text version to this email.





Vincent Cloutier

Guix – Adding peer-to-peer sharing
Vincent Cloutier
vinc...@cloutier.co

Abstract

Large performance gains and servers savings could be made by fetching data from 
peers instead of a central set of servers. Since Guix users know in advance the 
hash of the data they want, downloading from peers has no security implications 
(and privacy can be done trough proxies).  

What I want to build

I have a fascination for peer-to-peer tech and I am constantly looking for the 
innovative new tech in this area (Bitcoin, Ethereum, etc). Less than a year ago 
I discovered IPFS, a project that takes the best ideas from BitTorrent and Git 
to create a simple and elegant protocol. 

IPFS allows one to find who has a piece of content and is ready to share it, 
when knowing only the content’s hash. Content is added in a reproducible manner 
and deduplication can be added via Merkle trees. IPFS is also content-agnostic, 
one could serve Guix’s programs without even running Guix. It would also be 
possible to share text or video documentation using IPFS. 

This could allow the community to chip in to Guix success more easily. 
Publishing the content of one’s store for anyone to download will be possible. 
Looking at GNU/Linux distributions’ torrents, everyone seeds to help the 
community. It is very likely people will want to do the same for Guix. 

This adds no restriction on how a chain of trusts of key contributor to the 
project can be built. When a way of building consensus on a package’s hash 
(maybe via an Ethereum smart contract) will be build, everything will be in 
place for a serverless and fully auditable OS. 

What I will do before the summer

There is currently a free implementation of the IPFS protocol written in go and 
another one in Javascript underway. I will package them for Guix and add them 
to the repository. This will be a great way to familiarize myself with the 
codebase. 

Lisp looks interesting having done some Haskell. I will make sure I am 
comfortable with it.

What I will do during the first half of the summer

I will add the option to fetch content via IPFS instead of via HTTP. Guix will 
spawn an IPFS daemon and run it in a container. I will build it in a way that 
it will not be a hard dependency, as it is preferable in some cases to use a 
client-server architecture, and the code I will write will handle without 
problems the absence of an IPFS client. I will also make sure this can run with 
any of IPFS free implementation.

What I will do during the second half of the summer 

I will made the publish command also spawn an IPFS daemon and publish 
everything available in the store. I will also be there if the Hydra build farm 
runs into any problem with this new code. There will be a option to turn it off 
at any time, and statitstics will be made available, ex: how much bandwidth has 
been used, what are the most requested packages, etc. 

I will look into making the data storage efficient by making the IPFS daemon 
not copy everything in its own data store. 

Stretch goals

If everything goes better than expected and everything works beautifully before 
the end of the summer, I have the following stretch goals in mind: 

A GPL’ed IPFS implementation in Lisp
Packaging more free software for Guix

Who I am 

My name is Vincent Cloutier and I am a french speaking developper in Québec. I 
am currently in cégep (https://en.wikipedia.org/wiki/CEGEP). 

I started programming when I was very young. My father started showing me some 
python when I was 8, and I have not stopped programming since. I worked in 
python for a few years - I was fascinated by infinite loops until I was 9 - 
then I switched to Perl for a while (where I tried to make chatbots), and then 
to PHP that I continue to use to this day. I also do haskell competitions for 
fun here 
(https://www.codingame.com/profile/8ee4bb16e866d398775fa5bc545e426e2789121), 
though I am not good at it yet.

I already contribute to free software. I made ipfs.pics with a friend. It is a 
picture sharing website that uses the P2P IPFS technology. I did a junior job 
on Owncloud two years ago (https://github.com/owncloud/core/pull/11029) to see 
what a big open source project looked like. I used Sagemath cloud on my 
chromebook for school and made two pull requests 
(https://github.com/sagemathinc/smc/pull/52 and 
https://github.com/sagemathinc/smc/pull/53) to improve the UI on small screens.

A couple of years ago I realized that every tool I had learn and everything 
that I tinkered with was free and open source software. Almost everything I 
achieved with computers was because of people who shared their knowledge and 
technologies and I want to contribute back. 

Attachment: GSoC guix.odt
Description: application/vnd.oasis.opendocument.text

Reply via email to