From mboxrd@z Thu Jan 1 00:00:00 1970 From: ludo@gnu.org (Ludovic =?utf-8?Q?Court=C3=A8s?=) Subject: Re: GSoC proposal last-minute double-check Date: Mon, 03 Apr 2017 12:05:48 +0200 Message-ID: <871st9rekj.fsf@gnu.org> References: Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:42848) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cuyrz-0007w6-OW for guix-devel@gnu.org; Mon, 03 Apr 2017 06:05:57 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cuyrw-00037k-F3 for guix-devel@gnu.org; Mon, 03 Apr 2017 06:05:55 -0400 In-Reply-To: (Caleb Ristvedt's message of "Mon, 3 Apr 2017 02:25:02 -0500") List-Id: "Development of GNU Guix and the GNU System distribution." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-devel-bounces+gcggd-guix-devel=m.gmane.org@gnu.org Sender: "Guix-devel" To: Caleb Ristvedt Cc: guix-devel@gnu.org Hi Caleb, Thank you for your proposal. Caleb Ristvedt skribis: > * Plan > (I can't find any mention of mid-term evaluations in the 2017 GSoC timeli= ne, > so I'm guessing that https://www.gnu.org/software/soc-projects/guidelines= .html > is outdated?) > > The missing pieces according to the suggestion description include the ga= rbage > collector, scanner, and scheduler. Presumably those are either the only > missing pieces or the only non-trivial missing pieces.=20 > > I will read through the current C++ code implementing garbage collection = and > scanning during the "Community Bonding Period" to learn how it works.=20 > > The first step should be to implement the missing pieces. I will be on > schedule if I have the garbage collector and scanner working ("working" h= ere > means that given sufficient time, all packages lacking references will be > deleted or otherwise noticed by a program I wrote in Guile Scheme) by the= end > of the first work period, and if the scheduler is working by the end of t= he > second work period ("working" here means that a program I wrote in Guile > Scheme can order derivations topologically and schedule their building wi= th > the same characteristics as the current guix-daemon can). By the end of t= he > third work period I will be on schedule if a complete executable, > functioning in the same way as the current guix-daemon and written by me = in > Guile Scheme, exists. > > The results from the first two work periods should be usable by themselve= s in > the event that I am unable to complete the entire project. Cool! I think you should first start playing with Guix and get a good understanding of what derivations are, what happens when a client asks the daemon to build them, and what happens when one runs =E2=80=98guix gc= =E2=80=99; as a first approach you don=E2=80=99t need into the details of how garbage-colle= ction works. Only once you have experience with this and a good understanding does it make sense to go look at the C++ code IMO. Of course people on the mailing lists and on IRC will be happy to help you find your way in the code. The manual also contains introductory material about these concepts (see =E2=80=9CThe Store=E2=80=9D, =E2=80=9CDerivations=E2=80=9D, = =E2=80=9CSetting Up the Daemon=E2=80=9D, and =E2=80=9CInvoking guix gc=E2=80=9D.) You can also take a look at , which gives an overview. > ** Other commitments > During the summer I will be unable to work from 1300 to 1800 UTC on Sunda= ys > and 0030 to 0400 UTC on Mondays (Sunday morning and evening for me), and = from > 0030 to 0400 UTC on Fridays (Thursday evening for me). I currently don't > anticipate any extended time of unavailability, but should it arise it wi= ll > either be an emergency or communicated several weeks in advance. As long as you don=E2=80=99t have other commitments (studies, etc.), that s= hould be fine! > * Communication > I will communicate using email (individually and/or via the guix-devel ma= iling > list, as seems appropriate) and irc in #guix on freenode. My progress can= be > monitored via a public github repository to be set up at a later date. I = will > seek my mentor's input regarding the quality and content of my code at le= ast > once a week. Awesome. Communication is really important for a project like this, so we=E2=80=99d expect you to make sure we hear from you, both about the good things and things that don=E2=80=99t work well. Sometimes just coming on I= RC and saying =E2=80=9Chow does this work?=E2=80=9D can save you a lot of time. > * Qualification > This project appealed to me for a number of reasons: > - It is a GNU project > - It uses a Lisp, a family of languages I appreciate > - It is clearly-defined (you can't get much clearer than "there is already > working code that does what you are trying to do") > - I have some experience with Guix and GuixSD before, from the user side = (the > only one silly enough to accidentally cause a kernel panic in Shepherd by > using incorrect command-line syntax!). The idea of a .emacs-style > configuration file for the entire operating system especially appeals to = me > a lot. If everything goes well you=E2=80=99d be fluent in Scheme by the end of the GSoC. :-) I=E2=80=99d expect you to try out the Guix both from the command line and v= ia its Scheme interface so you get a feel of how it works. The (guix store) module in particular contains the client remote procedure call (RPC) stubs that talk to the daemon; the corresponding side is implemented in nix-daemon.cc. Make sure to take advantage of the =E2=80=9CCommunity Bonding Period=E2=80= =9D to try things out and to ask any questions you may have! Thanks, Ludo=E2=80=99.