From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: adriano Newsgroups: gmane.lisp.guile.user Subject: Re: Newbie thoughts on Guile Hall + Guix Date: Mon, 07 Feb 2022 23:35:09 +0100 Message-ID: <7e3d471a0e5c23f9c8168ddffd91fa4fd808b73b.camel@riseup.net> References: <87iltt846s.fsf@dustycloud.org> <87v8xsq0zl.fsf@dustycloud.org> <87tudc140c.fsf@elephly.net> <87tudc2hny.fsf@vijaymarupudi.com> <86a6f43uuh.fsf@sdf.org> <87pmo02eus.fsf@vijaymarupudi.com> <1889502f-7ae1-206a-b725-34aad7c76709@posteo.de> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="10440"; mail-complaints-to="usenet@ciao.gmane.io" To: Zelphir Kaltstahl , guile-user@gnu.org Original-X-From: guile-user-bounces+guile-user=m.gmane-mx.org@gnu.org Mon Feb 07 23:36:16 2022 Return-path: Envelope-to: guile-user@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nHCcJ-0002SL-8s for guile-user@m.gmane-mx.org; Mon, 07 Feb 2022 23:36:15 +0100 Original-Received: from localhost ([::1]:57290 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nHCcH-0008LK-Kz for guile-user@m.gmane-mx.org; Mon, 07 Feb 2022 17:36:13 -0500 Original-Received: from eggs.gnu.org ([209.51.188.92]:60226) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nHCbQ-0008Hd-B4 for guile-user@gnu.org; Mon, 07 Feb 2022 17:35:20 -0500 Original-Received: from mx1.riseup.net ([198.252.153.129]:40224) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nHCbN-0004oR-EP for guile-user@gnu.org; Mon, 07 Feb 2022 17:35:19 -0500 Original-Received: from fews2.riseup.net (fews2-pn.riseup.net [10.0.1.84]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256 client-signature RSA-PSS (2048 bits) client-digest SHA256) (Client CN "mail.riseup.net", Issuer "R3" (not verified)) by mx1.riseup.net (Postfix) with ESMTPS id 4Jt1Df1tx9zDxnN; Mon, 7 Feb 2022 14:35:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=riseup.net; s=squak; t=1644273314; bh=06FucnhGKk1AIbpDHkaPT3nDBdikSb/QkZN83Lf9pLs=; h=Subject:From:To:Date:In-Reply-To:References:From; b=d5Fbpy07leHawbLdl+Z1TzzjEZGLdKYnn7JbMKz3jostXvdwOMKyAJqczOaw1I5if YdIWxDZPC2DJZJkn9O5OAfDjo2E83f1CavbLg7lYu1R/i0RqWUkK/XgrIgkDJCLmc4 NXBugLbKwEOysi/wmoSgy2Vf34JTcWYjRDewTCRo= X-Riseup-User-ID: 314E32F5CAB4AF7FE2F745A1985055741AC73BB17426037186BCF3FC6A2C8542 Original-Received: from [127.0.0.1] (localhost [127.0.0.1]) by fews2.riseup.net (Postfix) with ESMTPSA id 4Jt1Dd2BdBz20ZM; Mon, 7 Feb 2022 14:35:13 -0800 (PST) In-Reply-To: <1889502f-7ae1-206a-b725-34aad7c76709@posteo.de> Received-SPF: pass client-ip=198.252.153.129; envelope-from=randomlooser@riseup.net; helo=mx1.riseup.net X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: guile-user@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: General Guile related discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guile-user-bounces+guile-user=m.gmane-mx.org@gnu.org Original-Sender: "guile-user" Xref: news.gmane.io gmane.lisp.guile.user:18028 Archived-At: Il giorno dom, 06/02/2022 alle 21.34 +0000, Zelphir Kaltstahl ha scritto: > On 2/6/22 16:29, Vijay Marupudi wrote: > > Ognen Duzlevski writes: > > > > > Have you tried Racket? If you haven't - try that and you will > > > find > > > recommending Guile to beginners to be much easier ;). On a > > > serious note, > > > there are other schemes that have their own package managers > > > (e.g. > > > Racket). > > I have, but I like Guile better, and want everyone to use it :) I > > think > > being an extension language is a very useful and important part of > > what > > makes Guile great. > > > > > IMHO, this learning curve is a part of learning any language. The > > > reason > > > why every language comes with a language "specific" manager is > > > because a > > > lot of people have tried to solve this problem and failed to find > > > the > > > magic bullet. At some level you are relying on the language's > > > portability itself, then on the same level you are wanting to > > > exploit > > > some of the language's specifics, then on the same level someone > > > comes > > > along and says for some packages this approach doesn't work... ;) > > I don't think it's fair to say that using packages in Guile just as > > easy/hard as other languages. Python / Javascript make this > > incredibly > > easy, and their ecosystem is evidence for that success. Their > > package > > managers have flaws, but they have benefits too, and those benefits > > would be great for Guile. > > > > Note that I'm not saying that this package manager has to do > > everything > > expected of a battle-tested production package manager. Just make > > it > > easier for beginners to use and make packages (which will be Guix > > compatible by default). And we should not underestimate what > > beginners > > can do for a language. They might be new to Guile, but possess a > > lot of > > other traits that would be great, like domain expertise in science, > > writing skills, etc. which would be great for the ecosystem. > > > > Advanced users can use Guix or do the ./configure && make && make > > install dance. > > I find using Guix to be much better than the ./configure && make && > make stuff. > The reason is, that I always think: "What, if it doesn't work and I > want to > clean up my system afterwards?". I can't stand it, if any remains of > non-working > stuff is left on the system. > > I am fine with using Guix. I like Guix. It is just that making a > package is way > to hard for newcomers. I needed weeks to make one simple pure Guile > package, > because I burned out trying to do it and had to have pauses in > between, before I > could muster new energy to try again. That still haunts me, so that I > still have > not updated my package, even though I have a newer release for months > by now. > Especially the whole (in the end unnecessary) autotools stuff was > exhausting. > Trying to understand what all those files do in my package. It is > sort of my own > problem, because I cannot leave it alone and just be done with it. I > want to > understand it.  Just don't That stuff is too low level for human beings The only autotools files you should care about are the ones meant to be written by a human being (the package author) The ones it produces in its own are not meant to be "understood" With Guile-Hall you don't even need to understand the autotools files meant to be edited by human beings Becaue Hall will edit those for you BUT The essential part is short and it's as follows There are 2 people in ths scenario: you (the package author) and someone who downloads your package and runs configure; make The autoconf file you (the package author) edit is meant to produce a bash script  Such bash file is called "configure" (it will be called by the user of your package) and it does 2 things: 1) checks features available on the system of the user running configure; make 2) based on the results of the checks (and also based on another file), writes a makefile that will pilot the building So now you can call make and make will execute the makefile written previously That's all Now: Guix leverages this machinery to manage your package Because of that, defining an autotools based package for Guix is easier than it is to configure a package that has no build system because if your package has no build system, the building process will have to be expressed in Guix code If, instead, it has a build system (the autotools or any other) Guix will charge the build system with the building process, maybe calling its APIs, so the definition can be more streamlined Anyway, I feel your frustration, I've been there myself Actually I've been there with Guile more than with Guix But still I feel you I hope this message of mine can sooth your frustration, to some extent