Hi Jonas, I have no problems with teaming up. Like you, this project is my foremost focus for GSoC but I'm also looking at other/related projects. Let's wait for Ludo to confirm/deny that we are allowed to team up. Regards, Rohan On 5 March 2015 at 19:14, Jonas Rebmann wrote: > Hi, > > I contacted Ludo about the DHCP client just before I noticed this > conversation. I'm interested in making it my gsoc project as well. > I'm an undergraduate in computer science in Germany, I'm a bit into free > software and I'm especially interested in making my gsoc for the gnu > project. > Would it be possible to team up on this project? > Other project ideas for guix/dmd are very welcome. > I'll be waiting for Ludovics reply and see what other project ideas might > be interesting for me. > > Kind regards, > Jonas > > 2015-03-05 11:51 GMT+01:00 Ludovic Courtès : > >> Hello! >> >> Rohan Prinja skribis: >> >> > The project I'm interested in working on for GNU GSoC this year is to >> > implement a DHCP client library in Guile. The end result, as I discussed >> > with Ludovic, would be a package installable via Guix. This would make >> > available a command roughly equivalent to ISC's dhclient. The library >> > should also implement a service that dmd can run. >> >> Specifically, the library’s functionality should be available in a way >> that makes it easy to integrate in some event loop. >> >> > Things I've done so far - read the dmd manual, started learning Guile >> (I've >> > programmed in Racket before, but not Guile), reading up on the DHCP >> > protocol, and started looking at ISC's implementation of dhclient (I >> used >> > the one obtained by apt-get source isc-dhcp-client). >> >> (Alternately, you can get it with ‘guix build -S isc-dhclient’. ;-)) >> >> This is a good start. You might want to look at >> more than at the actual >> implementation. >> >> > @Ludovic: continuing our discussion - could you please explain what you >> > mean by the dmd event loop? I searched in the manual as well the dmd-0.2 >> > source but couldn't find any reference to it. Is this something planned >> to >> > be added to dmd? How will it look like? >> >> It’s something planned. Basically dmd has to react to various events; >> currently, the only events that happen in practice are SIGCHLD, >> connections made by the client programs (‘deco’, ‘reboot’, etc.), and >> commands sent on open connections by these clients. >> >> Currently, in lieu of an full-blown even loop, there’s just this naive >> loop in the (dmd) module: >> >> (let next-command () >> (match (accept sock) >> ((command-source . client-address) >> (process-connection command-source)) >> (_ #f)) >> (next-command)) >> >> That doesn’t scale well and isn’t safe though, because a client could >> wait forever and thus lead dmd to wait forever as well (although that’s >> slightly beyond the adversary model we would think of.) >> >> More importantly, we would like dmd to be able to handle other kinds of >> events. For instance, I would like it to run a “REPL server” (info >> "(guile) REPL Servers"); that means it will also have to check for >> events occurring on the REPL server socket. >> >> Other types of events could include network reconfigurations (which >> could be detected via a PF_NETLINK/NETLINK_ROUTE socket), device >> additions/removal, events related to the DHCP client process, etc. >> >> To be able to handle these events, dmd needs a usual event loop. It >> doesn’t have it yet, but that’s something I’m planning to add (I say “I” >> but anyone reading this message is welcome to help ;-)). >> >> Does it clarify things a bit? >> >> Thanks, >> Ludo’. >> >> >