* Hi! Interested in GSoC. Feedback on these ideas? @ 2011-04-07 0:40 Paul Raccuglia 2011-04-07 3:36 ` nalaginrut ` (3 more replies) 0 siblings, 4 replies; 15+ messages in thread From: Paul Raccuglia @ 2011-04-07 0:40 UTC (permalink / raw) To: guile-devel Hi! I'm interested in working on guile as part of the Google Summer of Code. I'm Paul Raccuglia, a Math/CS student at Haverford College (and general freelance hacker). I'm pretty excited by Guile, I think it's a cool project. I do a lot of Python coding, and I love interpreted languages; Guile seems like a great way to combine the comfort of interpreted languages with the general badassery of C. I've been talking with a friend who contributes to this project, and we came up with some exciting ideas for working on Guile over the summer. Currently I am thinking about: - A package manager (in the vein of apt-get) I know this is one that's come up a bit. I was thinking of writing a small web interface to browse packages, an aptitude style command-line method for downloading, verifying the hashes, checking dependencies, and then install the package(s) and an uninstall function as well. I saw the proposal of working with dorodango; I might look at it, but from what I saw of the code base, I thought it would make sense to try to write a GUILE specific package-manager. - AOT Compiler: write an interface to GCC I think this would be really cool. A good plan would be to use GCC, because it's already pretty sophisticated and handles lots of architectures. I would start by writing a scheme interface to GCC, and then writing the compiler in scheme. I noticed a relevant (but now dead) project to write a GCC scheme compiler : http://gna.org/projects/gsc ; they started in '05 and died by '06, but I think it would help me think through the process to look at what other people did. - JIT compiler I talked with Noah Lavine about this (he's the person who directed me to Guile in the first place), and I think this is a really exciting project. My first step would be to clean up the code that he has written, and then build on that to make it fully functional. Big issues raised are smoothly integrating this with Guile, and implementing all of the VM instructions without duplicating ridiculous quantities of code. A suggestion (of Noah's) was to work on integrating the JIT with Guile and then adding the VM instructions to the JIT. Could y'all give me some guidance on this? I'd really appreciate it. -- Paul Raccuglia praccugl@haverford.edu ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: Hi! Interested in GSoC. Feedback on these ideas? 2011-04-07 0:40 Hi! Interested in GSoC. Feedback on these ideas? Paul Raccuglia @ 2011-04-07 3:36 ` nalaginrut 2011-04-07 8:31 ` Mark H Weaver ` (2 subsequent siblings) 3 siblings, 0 replies; 15+ messages in thread From: nalaginrut @ 2011-04-07 3:36 UTC (permalink / raw) To: Paul Raccuglia; +Cc: guile-devel > Hi! I'm interested in working on guile as part of the Google Summer of Code. > > I'm Paul Raccuglia, a Math/CS student at Haverford College (and > general freelance hacker). I'm pretty excited by Guile, I think it's a > cool project. I do a lot of Python coding, and I love interpreted > languages; Guile seems like a great way to combine the comfort of > interpreted languages with the general badassery of C. > > I've been talking with a friend who contributes to this project, and > we came up with some exciting ideas for working on Guile over the > summer. > > Currently I am thinking about: > > - A package manager (in the vein of apt-get) > I know this is one that's come up a bit. I was thinking of writing a > small web interface to browse packages, an aptitude style command-line > method for downloading, verifying the hashes, checking dependencies, > and then install the package(s) and an uninstall function as well. I > saw the proposal of working with dorodango; I might look at it, but > from what I saw of the code base, I thought it would make sense to try > to write a GUILE specific package-manager. > I like this. And I like the idea about GUILE specific package-manager. Maybe you can learn something interesting from Nix, here is an introduction from Nix website: "Nix is a purely functional package manager. This means that it treats packages like values in purely functional programming languages such as Haskell — they are built by functions that don’t have side-effects, and they never change after they have been built." http://nixos.org/nix/ > > - AOT Compiler: write an interface to GCC > I think this would be really cool. A good plan would be to use GCC, > because it's already pretty sophisticated and handles lots of > architectures. I would start by writing a scheme interface to GCC, and > then writing the compiler in scheme. > > I noticed a relevant (but now dead) project to write a GCC scheme > compiler : http://gna.org/projects/gsc ; they started in '05 and died > by '06, but I think it would help me think through the process to look > at what other people did. > Well~I like this too~Actually I'm interested in GUILE in the embedded device.So I'm looking for a good solution which could support nice efficient for GUILE to run on embedded device. The VM&bytecode maybe a good solution. But I'd like to see a GUILE compiler which compile some code to binary directly(if it's possible). I've tried Gambit-C, it's great. Can we do something alike for GUILE? -- GNU Powered it GPL Protected it GOD Blessed it HFG - NalaGinrut --hacker key-- v4sw7CUSMhw6ln6pr8OSFck4ma9u8MLSOFw3WDXGm7g/l8Li6e7t4TNGSb8AGORTDLMen6g6RASZOGCHPa28s1MIr4p-x hackerkey.com ---end key--- ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: Hi! Interested in GSoC. Feedback on these ideas? 2011-04-07 0:40 Hi! Interested in GSoC. Feedback on these ideas? Paul Raccuglia 2011-04-07 3:36 ` nalaginrut @ 2011-04-07 8:31 ` Mark H Weaver 2011-04-07 13:10 ` Noah Lavine 2011-04-07 10:43 ` Hi! Interested in GSoC. Feedback on these ideas? Andreas Rottmann 2011-04-08 4:36 ` Paul Raccuglia 3 siblings, 1 reply; 15+ messages in thread From: Mark H Weaver @ 2011-04-07 8:31 UTC (permalink / raw) To: Paul Raccuglia; +Cc: guile-devel Paul Raccuglia <praccugl@haverford.edu> writes: > - AOT Compiler: write an interface to GCC > I think this would be really cool. A good plan would be to use GCC, > because it's already pretty sophisticated and handles lots of > architectures. I would start by writing a scheme interface to GCC, and > then writing the compiler in scheme. There is one _very_ serious problem with using GCC to compile Scheme, or at least there was the last time I researched this issue: tail calls. Although GCC has long been able to do tail call optimization in some limited situations, standard C calling conventions prevent tail calls from being done consistently in the general case. The fundamental problem is that in C, the caller of a function is responsible for popping the arguments off the stack after the call returns. This is required to support normal C varargs behavior, where the callee does not necessarily know how many parameters were passed to it, and therefore does not know how many parameters to pop. In Scheme, which requires tail calls, it is the caller that does not know how many parameters to pop, because the function which returns will not necessarily be the same one originally called. For example: (define (main) (foo 5)) (define (foo a) (bar a a)) (define (bar x y) y) If this is implemented with standard C calling conventions, main pushes one argument (et al) on the stack before calling (foo 5), and then pops one argument (et al) after it returns. But it is (bar 5 5) that returns to main, and so actually two parameters must be popped. Many people have worked on this issue over the years, but in GCC (and probably other C compilers) the assumptions about calling conventions are very deeply ingrained, and last I checked, no one has found any feasible solutions, short of making procedure calls through a trampoline, or doing the "Cheney on the MTA" trick that Chicken does. See http://users.cecs.anu.edu.au/~baueran/thesis/ for a detailed analysis of possible strategies to properly support tail calls in GCC circa 2003. (If anyone has more recent information, please do share!) > I noticed a relevant (but now dead) project to write a GCC scheme > compiler : http://gna.org/projects/gsc ; they started in '05 and died > by '06, but I think it would help me think through the process to look > at what other people did. The first thing I would check is how they deal with tail calls. Some so-called Scheme implementations do not implement tail calls consistently (though they may do this "optimization" in some limited cases). I strongly believe that this is not good enough for Guile, nor any other implementation that rightly calls itself Scheme. Anyway, thanks for looking into this! Best, Mark ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: Hi! Interested in GSoC. Feedback on these ideas? 2011-04-07 8:31 ` Mark H Weaver @ 2011-04-07 13:10 ` Noah Lavine 2011-04-07 14:12 ` nalaginrut 2011-04-07 14:25 ` Problem with GCC as a Scheme compiler: tail calls Mark H Weaver 0 siblings, 2 replies; 15+ messages in thread From: Noah Lavine @ 2011-04-07 13:10 UTC (permalink / raw) To: Mark H Weaver; +Cc: guile-devel Hello, > There is one _very_ serious problem with using GCC to compile Scheme, or > at least there was the last time I researched this issue: tail calls. I might be wrong about this, but I thought that GCC supported multiple calling conventions, with the user telling GCC which one to use (cdecl, fastcall, possibly others). If so, it must have some way to represent that in its intermediate representations. We might be able to add our own calling convention. I also know that GCC has an --optimize-sibling-calls argument, which will make it do something similar to at least some regular C calls. I'm not sure if it's possible, but maybe we could arrange for whatever code transformation implements this to be run on every Scheme call. Noah ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: Hi! Interested in GSoC. Feedback on these ideas? 2011-04-07 13:10 ` Noah Lavine @ 2011-04-07 14:12 ` nalaginrut 2011-04-07 14:25 ` Problem with GCC as a Scheme compiler: tail calls Mark H Weaver 1 sibling, 0 replies; 15+ messages in thread From: nalaginrut @ 2011-04-07 14:12 UTC (permalink / raw) To: Noah Lavine; +Cc: Mark H Weaver, guile-devel > Hello, > > > There is one _very_ serious problem with using GCC to compile Scheme, or > > at least there was the last time I researched this issue: tail calls. > > I might be wrong about this, but I thought that GCC supported multiple > calling conventions, with the user telling GCC which one to use > (cdecl, fastcall, possibly others). If so, it must have some way to > represent that in its intermediate representations. We might be able > to add our own calling convention. > > I also know that GCC has an --optimize-sibling-calls argument, which > will make it do something similar to at least some regular C calls. > I'm not sure if it's possible, but maybe we could arrange for whatever > code transformation implements this to be run on every Scheme call. > > Noah > I'm reading the paper given by Mark. Though I confused with this "call convention" problem, I thought the point maybe that we can hardly get a optimized result all by GCC. But if we arrange it manually or restrict it to certain call convention except cdecl, it's not perfect for GCC?(But I don't think we need perfect) According to the paper, some scheme compiler provided "tail call" based on a modified standard C compiler. I think it's similar to arrange/restrict solution. I'm not sure if my understanding is correct. Anyway, I'll finish reading this paper. -- GNU Powered it GPL Protected it GOD Blessed it HFG - NalaGinrut --hacker key-- v4sw7CUSMhw6ln6pr8OSFck4ma9u8MLSOFw3WDXGm7g/l8Li6e7t4TNGSb8AGORTDLMen6g6RASZOGCHPa28s1MIr4p-x hackerkey.com ---end key--- ^ permalink raw reply [flat|nested] 15+ messages in thread
* Problem with GCC as a Scheme compiler: tail calls 2011-04-07 13:10 ` Noah Lavine 2011-04-07 14:12 ` nalaginrut @ 2011-04-07 14:25 ` Mark H Weaver 2011-04-07 14:37 ` Noah Lavine 1 sibling, 1 reply; 15+ messages in thread From: Mark H Weaver @ 2011-04-07 14:25 UTC (permalink / raw) To: Noah Lavine; +Cc: guile-devel Noah Lavine <noah.b.lavine@gmail.com> writes: >> There is one _very_ serious problem with using GCC to compile Scheme, or >> at least there was the last time I researched this issue: tail calls. > > I might be wrong about this, but I thought that GCC supported multiple > calling conventions, with the user telling GCC which one to use > (cdecl, fastcall, possibly others). If so, it must have some way to > represent that in its intermediate representations. We might be able > to add our own calling convention. > > I also know that GCC has an --optimize-sibling-calls argument, which > will make it do something similar to at least some regular C calls. > I'm not sure if it's possible, but maybe we could arrange for whatever > code transformation implements this to be run on every Scheme call. Please read section 3.3 of the thesis I referenced: http://users.cecs.anu.edu.au/~baueran/thesis/ There you will find the list of conditions required for tail calls to be optimized by GCC circa 2003. Among other things, it includes: * The caller's stack frame must be empty (i.e. no stack-allocated local variables or temporaries). * No overlapping arguments (i.e. if it's too difficult to rearrange the input arguments on the stack to match what the next function expects, gcc will bail on the tail call) * No position-independent code on several platforms, including x86 (i.e. no tail calls in shared libraries) * No indirect calls (i.e. no tail calls to function pointers) * No setjmp or longjmp * Sibling call epilogue must be defined (i.e. many targets aren't supported) * Additional machine-independent constraints (i.e. many targets impose additional restrictions) The end result of all of these restrictions is that tail calls can only be optimized by GCC in extremely simple cases like fibonacci. Some of these restrictions may have been lifted since 2003, but I'm reasonably sure the problem has not been solved satisfactorily. If it had been, it would've been very big news in the functional programming language implementors community, since this has been a long-standing problem. However, what I find more persuasive than any paper is that fact that I've never found an implementation of a high-level programming language based on GCC that manages to support tail calls without doing some nasty hacks. Lots of smart people have worked on this, but to my knowledge, no one has found a good solution. The solutions I'm aware of are: * Cheney on the MTA, as is done by Chicken * Trampoline: instead of calling functions directly, return the address of the next function back to the trampoline loop. * Don't do function calls at all. Instead use inline asm to jump to the inside of the next function, passing arguments via register globals. GHC did this at one point. GCC's problems in this area are almost certainly the main reason so many functional programming language implementors have resorted to writing their own native code generators from scratch. If anyone knows of a recent breakthrough in this area, please speak up. Best, Mark ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: Problem with GCC as a Scheme compiler: tail calls 2011-04-07 14:25 ` Problem with GCC as a Scheme compiler: tail calls Mark H Weaver @ 2011-04-07 14:37 ` Noah Lavine 2011-04-11 22:31 ` Andy Wingo 0 siblings, 1 reply; 15+ messages in thread From: Noah Lavine @ 2011-04-07 14:37 UTC (permalink / raw) To: Mark H Weaver; +Cc: guile-devel Ah, I see. The problem is quite significant. I found this page in the GCC internals documentation: http://gcc.gnu.org/onlinedocs/gccint/Tail-Calls.html. It seems to suggest that we would need to make our own calling convention. So I guess the question is, is it worthwhile for us to fix GCC so it can handle tail calls, or should we use another code generation library that already deals with them? I must admit I still really like the idea of using GCC, because it has a lot of good optimizations, and I also like the idea of working with other groups rather than making yet another compiler. However, I guess the next thing to do is to ask on the GCC mailing list if they're interested in tail call patches, and how hard those would be to make. I realize however that the GSoC deadline is tomorrow, and that Paul is probably wondering whether he should submit a proposal for an AOT compiler or not. So I suggest that an AOT compiler is a good project, and the first step should be to figure out if it's possible for us to use GCC. What do people think of this? (Also note: I know Paul outside of this mailing list, so my opinion is not objective.) Noah On Thu, Apr 7, 2011 at 10:25 AM, Mark H Weaver <mhw@netris.org> wrote: > Noah Lavine <noah.b.lavine@gmail.com> writes: >>> There is one _very_ serious problem with using GCC to compile Scheme, or >>> at least there was the last time I researched this issue: tail calls. >> >> I might be wrong about this, but I thought that GCC supported multiple >> calling conventions, with the user telling GCC which one to use >> (cdecl, fastcall, possibly others). If so, it must have some way to >> represent that in its intermediate representations. We might be able >> to add our own calling convention. >> >> I also know that GCC has an --optimize-sibling-calls argument, which >> will make it do something similar to at least some regular C calls. >> I'm not sure if it's possible, but maybe we could arrange for whatever >> code transformation implements this to be run on every Scheme call. > > Please read section 3.3 of the thesis I referenced: > > http://users.cecs.anu.edu.au/~baueran/thesis/ > > There you will find the list of conditions required for tail calls to be > optimized by GCC circa 2003. Among other things, it includes: > > * The caller's stack frame must be empty (i.e. no stack-allocated local > variables or temporaries). > > * No overlapping arguments (i.e. if it's too difficult to rearrange the > input arguments on the stack to match what the next function expects, > gcc will bail on the tail call) > > * No position-independent code on several platforms, including x86 > (i.e. no tail calls in shared libraries) > > * No indirect calls (i.e. no tail calls to function pointers) > > * No setjmp or longjmp > > * Sibling call epilogue must be defined (i.e. many targets aren't > supported) > > * Additional machine-independent constraints (i.e. many targets impose > additional restrictions) > > The end result of all of these restrictions is that tail calls can only > be optimized by GCC in extremely simple cases like fibonacci. Some of > these restrictions may have been lifted since 2003, but I'm reasonably > sure the problem has not been solved satisfactorily. If it had been, it > would've been very big news in the functional programming language > implementors community, since this has been a long-standing problem. > > However, what I find more persuasive than any paper is that fact that > I've never found an implementation of a high-level programming language > based on GCC that manages to support tail calls without doing some nasty > hacks. Lots of smart people have worked on this, but to my knowledge, > no one has found a good solution. The solutions I'm aware of are: > > * Cheney on the MTA, as is done by Chicken > > * Trampoline: instead of calling functions directly, return the address > of the next function back to the trampoline loop. > > * Don't do function calls at all. Instead use inline asm to jump to the > inside of the next function, passing arguments via register globals. > GHC did this at one point. > > GCC's problems in this area are almost certainly the main reason so many > functional programming language implementors have resorted to writing > their own native code generators from scratch. > > If anyone knows of a recent breakthrough in this area, please speak up. > > Best, > Mark > ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: Problem with GCC as a Scheme compiler: tail calls 2011-04-07 14:37 ` Noah Lavine @ 2011-04-11 22:31 ` Andy Wingo 2011-04-11 23:12 ` Noah Lavine 0 siblings, 1 reply; 15+ messages in thread From: Andy Wingo @ 2011-04-11 22:31 UTC (permalink / raw) To: Noah Lavine; +Cc: Mark H Weaver, guile-devel On Thu 07 Apr 2011 16:37, Noah Lavine <noah.b.lavine@gmail.com> writes: > So I guess the question is, is it worthwhile for us to fix GCC so it > can handle tail calls, or should we use another code generation > library that already deals with them? I must admit I still really like > the idea of using GCC, because it has a lot of good optimizations, and > I also like the idea of working with other groups rather than making > yet another compiler. However, I guess the next thing to do is to ask > on the GCC mailing list if they're interested in tail call patches, > and how hard those would be to make. Regarding GCC, I have spoken to GCC folk, and they are not averse to making GCC into a more modular thing. There are obvious licensing concerns, but these are surmountable: Guile and GCC could work together somehow. The problem, as I understood it last year, was that GCC doesn't know exactly what abstractions are necessary. For that we need to get our own house in order, write an AOT compiler for one architecture, then go to GCC and say "it would be nice if we had these features", or something like that. People's experiences with LLVM are probably helping here, to define the problem space, but we need something simple to push to GCC folk, like a simple less-than-Scheme implementation with only fixnum arithmetic or something, both AOT and with a REPL. Dunno. Thoughts in the ether! Andy -- http://wingolog.org/ ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: Problem with GCC as a Scheme compiler: tail calls 2011-04-11 22:31 ` Andy Wingo @ 2011-04-11 23:12 ` Noah Lavine 0 siblings, 0 replies; 15+ messages in thread From: Noah Lavine @ 2011-04-11 23:12 UTC (permalink / raw) To: Andy Wingo; +Cc: Mark H Weaver, guile-devel Hello, > Regarding GCC, I have spoken to GCC folk, and they are not averse to > making GCC into a more modular thing. There are obvious licensing > concerns, but these are surmountable: Guile and GCC could work together > somehow. The problem, as I understood it last year, was that GCC > doesn't know exactly what abstractions are necessary. For that we need > to get our own house in order, write an AOT compiler for one > architecture, then go to GCC and say "it would be nice if we had these > features", or something like that. > > People's experiences with LLVM are probably helping here, to define the > problem space, but we need something simple to push to GCC folk, like a > simple less-than-Scheme implementation with only fixnum arithmetic or > something, both AOT and with a REPL. Neat! I had an idea of how this transition could go that is different, but I think might turn out to involve a lot of the same steps as yours. I was imagining that we would start with a compiler that was almost all custom code, except that the backend is GCC. In the most extreme case, maybe GCC would act as a big assembler, but I think we should be able to use a few more of its features than that. Once we have that, I imagine that we could integrate our code into GCC over time, either merging our stuff with existing similar code already in GCC or adding new things. If I understand correctly, you were thinking that we would write our compiler with some other backend, figure out what changes we want GCC to make, then switch to using GCC once they're ready. Right? I was also imagining that we could start with a batch-compiling AOT compiler like current GCC, and then make it more dynamic as GCC became more modular. It seems like you want to start out with something that could be called in the background by the runtime. Is that right? I was thinking that if we could teach GCC to compile tail calls, then we could use quite a bit of its infrastructure without any further changes, because we could make a Scheme procedure compile to a GCC procedure, and in fact implement all Scheme control flow stuff as a bunch of GCC procedures. We would still have to implement Scheme datatypes ourselves, but that would still give us a decent amount of integration to begin with. What do you think? Noah ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: Hi! Interested in GSoC. Feedback on these ideas? 2011-04-07 0:40 Hi! Interested in GSoC. Feedback on these ideas? Paul Raccuglia 2011-04-07 3:36 ` nalaginrut 2011-04-07 8:31 ` Mark H Weaver @ 2011-04-07 10:43 ` Andreas Rottmann 2011-04-07 13:21 ` Paul Raccuglia 2011-04-08 4:36 ` Paul Raccuglia 3 siblings, 1 reply; 15+ messages in thread From: Andreas Rottmann @ 2011-04-07 10:43 UTC (permalink / raw) To: Paul Raccuglia; +Cc: guile-devel Paul Raccuglia <praccugl@haverford.edu> writes: > Hi! I'm interested in working on guile as part of the Google Summer of Code. > [...] > Currently I am thinking about: > > - A package manager (in the vein of apt-get) > I know this is one that's come up a bit. I was thinking of writing a > small web interface to browse packages, an aptitude style command-line > method for downloading, verifying the hashes, checking dependencies, > and then install the package(s) and an uninstall function as well. I > saw the proposal of working with dorodango; I might look at it, but > from what I saw of the code base, I thought it would make sense to try > to write a GUILE specific package-manager. > Could you be more specific? What exactly in the code base did make you think so? Thanks, Rotty -- Andreas Rottmann -- <http://rotty.yi.org/> ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: Hi! Interested in GSoC. Feedback on these ideas? 2011-04-07 10:43 ` Hi! Interested in GSoC. Feedback on these ideas? Andreas Rottmann @ 2011-04-07 13:21 ` Paul Raccuglia 2011-04-07 21:45 ` Paul Raccuglia 0 siblings, 1 reply; 15+ messages in thread From: Paul Raccuglia @ 2011-04-07 13:21 UTC (permalink / raw) To: Andreas Rottmann; +Cc: guile-devel > Could you be more specific? What exactly in the code base did make you > think so? > > Thanks, Rotty Hey. Sorry, to be a little clearer: It looks like Dorodango could provide a great resource to pull from. From my (very uninformed) cursory glance,I thought it would need some reworking to get it to work from Guile. Looking at it a bit more, I realize I probably don't know what I'm talking about. I'll try to look through the mailing list some more to get a better sense of the issue. Thanks for the other feedback. Looking into it. --Paul On Thu, Apr 7, 2011 at 6:43 AM, Andreas Rottmann <a.rottmann@gmx.at> wrote: > Paul Raccuglia <praccugl@haverford.edu> writes: > >> Hi! I'm interested in working on guile as part of the Google Summer of Code. >> > [...] >> Currently I am thinking about: >> >> - A package manager (in the vein of apt-get) >> I know this is one that's come up a bit. I was thinking of writing a >> small web interface to browse packages, an aptitude style command-line >> method for downloading, verifying the hashes, checking dependencies, >> and then install the package(s) and an uninstall function as well. I >> saw the proposal of working with dorodango; I might look at it, but >> from what I saw of the code base, I thought it would make sense to try >> to write a GUILE specific package-manager. >> > Could you be more specific? What exactly in the code base did make you > think so? > > Thanks, Rotty > -- > Andreas Rottmann -- <http://rotty.yi.org/> > ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: Hi! Interested in GSoC. Feedback on these ideas? 2011-04-07 13:21 ` Paul Raccuglia @ 2011-04-07 21:45 ` Paul Raccuglia 2011-04-08 0:01 ` Paul Raccuglia 2011-04-08 1:00 ` dsmich 0 siblings, 2 replies; 15+ messages in thread From: Paul Raccuglia @ 2011-04-07 21:45 UTC (permalink / raw) To: Andreas Rottmann; +Cc: guile-devel Okay. So I'm settling on the idea of the package manager (not sure what to call it. A CPAN style thingy.) I'm thinking of looking primarily at dorodango or maybe Nix as resources,depending on what makes sense in the context of Guile. In (http://lists.gnu.org/archive/html/guile-devel/2011-03/msg00297.html) this I saw a bunch of really useful points you made, Rotty. It seems like Dorodango would be a great thing to work into this. Because this is a project that has a lot of social implications for Guile, I think that getting an idea of how the system would work (in terms of syntax, specific function, etc.) would need a good deal of input from the community. My thought is to do the basic functionality needed (install, uninstall, dependencies,getting the package, etc.), how to connect it to Guile, and how the package server would work. Once those are established, other functionality should be reasonably easy to add in a modular fashion, if the project is designed well. I'd really appreciate comments. Paul ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: Hi! Interested in GSoC. Feedback on these ideas? 2011-04-07 21:45 ` Paul Raccuglia @ 2011-04-08 0:01 ` Paul Raccuglia 2011-04-08 1:00 ` dsmich 1 sibling, 0 replies; 15+ messages in thread From: Paul Raccuglia @ 2011-04-08 0:01 UTC (permalink / raw) To: Andreas Rottmann; +Cc: guile-devel Sorry. I should clarify. When I said "add in a modular fashion", I meant that once that initial core was set up, it should be (primitively) functional, and adding functionality to the package manager would be something anyone could do. ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: Hi! Interested in GSoC. Feedback on these ideas? 2011-04-07 21:45 ` Paul Raccuglia 2011-04-08 0:01 ` Paul Raccuglia @ 2011-04-08 1:00 ` dsmich 1 sibling, 0 replies; 15+ messages in thread From: dsmich @ 2011-04-08 1:00 UTC (permalink / raw) To: Paul Raccuglia, Andreas Rottmann; +Cc: guile-devel ---- Paul Raccuglia <praccugl@haverford.edu> wrote: > Okay. So I'm settling on the idea of the package manager (not sure > what to call it. A CPAN style thingy.) Oh, that's the easy part. ;^) How about "gear". Could be something like Guile Extension Archive Repository. Gears are finely machined components that mesh well together. Also is the stuff you need to do something. Like camping gear. Just a thought anyway. -Dale ^ permalink raw reply [flat|nested] 15+ messages in thread
* Re: Hi! Interested in GSoC. Feedback on these ideas? 2011-04-07 0:40 Hi! Interested in GSoC. Feedback on these ideas? Paul Raccuglia ` (2 preceding siblings ...) 2011-04-07 10:43 ` Hi! Interested in GSoC. Feedback on these ideas? Andreas Rottmann @ 2011-04-08 4:36 ` Paul Raccuglia 3 siblings, 0 replies; 15+ messages in thread From: Paul Raccuglia @ 2011-04-08 4:36 UTC (permalink / raw) To: guile-devel Here's the raw text of my application. The deadline is in about 11 hours, but I'll try to take into account any feedback. Thanks, -Paul Your name Paul Raccuglia Your email address praccugl@haverford.edu praccu@gmail.com The name of the project Guile – Implementing a user-friendly package manager and repository Summary Guile lacks a centralized, easy-to-use system for installing packages. In the vein of apt-get and CPAN, this project will simplify the process of distributing and acquiring packages in Guile. There exist a number of code bases that could be very useful for this implementation (notably including http://nixos.org/nix/ and http://home.gna.org/dorodango/ ). I will implement an online repository and a local client to acquire, install, update and manage packages and their dependencies. Benefits This project will benefit users of Guile by making it easy for them to incorporate packages into their software. This is a vital feature of a number of widely adopted projects, notably PERL, PHP and Python (http://en.wikipedia.org/wiki/List_of_software_package_management_systems#Application-level_package_managers). A robust, easy-to-use package manager and repository would help Guile achieve wider adoption: ideally, easy-to-install packages would attract a wider audience, and a good distribution mechanism will help developer’s packages gain wider adoption. Deliverables There will be some alterations to existing Guile code, but most of this project’s code will be new features. The project will rely on a set of fundamental sections of code: client code that acquires and verifies the package and any dependencies (or updates to installed packages); code that manages the packages locally (installing and uninstalling, storing, unpacking); and code that merges upgrades into installed packages intelligently. The client code will likely draw from other projects. In addition to the fundamental parts of the project, a web based repository browser will be needed. The project will establish a set of conventions for how this repository functions, and provide an implementation of a repository browser. Once the core functionality of this project is in place, it should be structured so that adding features is relatively painless. My goal is for the code to be easy to improve and maintain in a way that does not depend on my involvement. Additionally, this project will need to establish an easy-to-use but robust set of conventions for packages, which will require clear documentation. Packages should be acquirable from an official repository, but unofficial sources should be allowable if the user so chooses. Plan Proposal Timeline: Before April 25: -Begin to work with the guile-devel mailing-list and irc to establish the project's design and conventions -Do self coding with Guile to explore it more fully -Discuss the project with friends and professors in addition to the feedback I get from the guile community April 25 - May 23: (before coding begins) -Work to finalize the working design and conventions of the project with my mentor, based on my conversations with the Guile community -Continuing to work with the mailing list and irc throughout this period -Review other projects that have tackled similar problems, make decisions with the help of my mentor and the Guile community on what to incorporate into the project -Revise this plan as needed based on feedback, have a finalized timeline prepared by May 23 May 24 - June 7: (Step 1: basic functionality) -Write a client interface to Dorodango that handles acquiring packages -Work on the basic manager to install / uninstall acquired packages -Finalize preliminary design documents related to the structure of a repository -Send a progress report / summary to the guile-devel mailing list once this stage is finalized -Acquire feedback from the community June 8 - 22: (Step 2: distribution) -Begin work on implementation of a repository *Implement a website that handles a browsable list of available packages and provides details, dependencies, links, etc. *Write rudimentary administrator interface to add/edit packages *Handle communication of the client with the repository to identify the appropriate package's location -Continue work on client to interface with the repository to find packages -Send a progress report / summary to the guile-devel mailing list once this stage is finalized -Acquire feedback from the community June 23 - July 3: (Step 3: flesh out functionality) -Flesh out the functionality of the client and the package manager to include dependencies, handle updating, and sketch other essential features. Have a list of essential features to be implemented after the midterm evaluation -Handle issues that have cropped up in the interim -Code should be functional by the end of this period July 4 - July 14: (Step 4: Clean-up for review) -Clean up code, write documentation, fix any outstanding issues, and complete evaluation -Send a progress report to the guile-devel mailing list July 15 - 17: -Take a break, compile a list of issues, and write a revised plan for the rest of the summer July 18 - August 1: (Step 5: Finish functionality) -Work on the client and manager, have all essential features working -Work on the web client for the repository August 2 - 8: (Step 6: Make sure it is accessible to other developers) -Modify the client and manager code to facilitate adding nonessential features easily Aug 9 - 16: (Step 7: Finish up) -Resolve outstanding flaws August 16 - 22: (Step 8: Clean up) -Test things, write documentation, clean up the code September onwards: -Continue to help maintain and support the results of the project Communication Communication depends on the time zone of my mentor. Email, IRC, and phone conversations would be the main channels of communication. Additionally, I will use git to upload my progress to a personal (publicly-viewable) repository preferably on a daily basis and at minimum a weekly basis. I will upload progress to github.com or gitorious.org to facilitate inline conversations about the code. I would like to note that I know Noah Lavine, a contributor to Guile. If I ended up working with him in some fashion, I would be able to communicate easily with him because he is in the same time zone, and I am comfortable working with him. Qualification I am a CS/Math student at Haverford College, in Pennsylvania. I have been coding on my own for about 10 years now. My older brother is an experienced developer who gave me a lot of guidance as I was learning to code. This project appeals to me because it is a vital feature that Guile lacks, a feature which will be important in Guile’s wider adoption. I think Guile is very exciting, and hope that easing the barrier to installing packages will help it grow. This project also appealed to me compared to other projects I looked at because it is made up of a set of relatively distinct, quantifiable parts, which gives me confidence that it was a problem I could tackle. I am suited to this in part because I have a pretty good understanding of the general issues at hand, am a quick learner, because I am comfortable working in C or Scheme, and because I have been coding and learning and reading for long enough (approximately 10 years) in enough languages (Python, PHP, C, C#, plus some work with Scheme and Perl) to be acquainted with principals and processes of software design. Plus, my older brother is an experienced developer who continues to give me a lot of guidance in both general best practices and giving me specific feedback on my code. I already have a lot of the fundamental programming skills. The most important things for me to improve will be to thoroughly familiarize myself with the problem (over the course of the summer) and to develop a strong relationship with the Guile community. Once the project is “finished”, I hope to be able to steward and help others to expand it. Ideally, the project will be easy to help maintain and expand, so that I can focus my efforts on a different issue (I am interested in working on a JIT compiler for Guile). I have not worked on any serious Free Software projects before, only used them; I am excited to start giving back to a project. ^ permalink raw reply [flat|nested] 15+ messages in thread
end of thread, other threads:[~2011-04-11 23:12 UTC | newest] Thread overview: 15+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2011-04-07 0:40 Hi! Interested in GSoC. Feedback on these ideas? Paul Raccuglia 2011-04-07 3:36 ` nalaginrut 2011-04-07 8:31 ` Mark H Weaver 2011-04-07 13:10 ` Noah Lavine 2011-04-07 14:12 ` nalaginrut 2011-04-07 14:25 ` Problem with GCC as a Scheme compiler: tail calls Mark H Weaver 2011-04-07 14:37 ` Noah Lavine 2011-04-11 22:31 ` Andy Wingo 2011-04-11 23:12 ` Noah Lavine 2011-04-07 10:43 ` Hi! Interested in GSoC. Feedback on these ideas? Andreas Rottmann 2011-04-07 13:21 ` Paul Raccuglia 2011-04-07 21:45 ` Paul Raccuglia 2011-04-08 0:01 ` Paul Raccuglia 2011-04-08 1:00 ` dsmich 2011-04-08 4:36 ` Paul Raccuglia
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).