Hi David and all, "Thompson, David" <dthomps...@worcester.edu> writes:
> As a rule, I think Guile should *not* add any additional names to the > default environment without an extremely good reason. Because (guile) > is imported implicitly, new names can cause clashes with existing code > that require #:replace to suppress the warning about shadowing core > bindings. For example, the newish 'spawn' procedure collides with > 'spawn' in (goblins core) in the Goblins project. I think Guile needs > a (multi-year, multi-major version) plan to deprecate cruft and move > the good stuff into different modules. Give a hoot, don't pollute (the > default environment)! > > Second, please please please, no more C! Guile's substantial amount of > C code is a legacy of its origins decades ago, and we need to make it > clear to new users and contributors that new code should be written in > Scheme! I see my little patch has ignited a comparatively oversized firestorm. Oops. ;) The current discussion is above my paygrade so I'll largely stay out of it. (Although it's quite fascinating!) In the specific context of this patch I feel like the risks of namespace pollution and C maintenance burden are low since both are near identical to what already exists. But of course, someone else may argue that this is a death by a thousand cuts situation. I will suggest that if a consensus is reached on what new code must adhere to (e.g. no (guile) namespace pollution, no new procedures written in C), it should be documented in the reference manual. There are traces of this but nothing concrete [1]. What little documentation exists is secreted away into the darkest corners of Texinfo. I believe a top-level "Contributing" section in a similar vein to GNU Guix would be a valuable addition. It's quite possible as a first-time contributor I am missing something that already exists. If so, oops again! [1]: (guile) Status -- Take it easy, Richard Sent Making my computer weirder one commit at a time.