From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp11.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms5.migadu.com with LMTPS id WB+UA0erR2MWawAAbAwnHQ (envelope-from ) for ; Thu, 13 Oct 2022 08:08:07 +0200 Received: from aspmx1.migadu.com ([2001:41d0:2:4a6f::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp11.migadu.com with LMTPS id 4EOmA0erR2PpNwAA9RJhRA (envelope-from ) for ; Thu, 13 Oct 2022 08:08:07 +0200 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id 85B2FB22D for ; Thu, 13 Oct 2022 08:08:06 +0200 (CEST) Received: from localhost ([::1]:56590 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oirNx-000685-C1 for larch@yhetil.org; Thu, 13 Oct 2022 02:08:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:45746) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oirNE-000660-O3 for guix-devel@gnu.org; Thu, 13 Oct 2022 02:07:20 -0400 Received: from mx1.dismail.de ([78.46.223.134]:33052) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oirN8-0000Cn-O6 for guix-devel@gnu.org; Thu, 13 Oct 2022 02:07:16 -0400 Received: from mx1.dismail.de (localhost [127.0.0.1]) by mx1.dismail.de (OpenSMTPD) with ESMTP id 104588c3 for ; Thu, 13 Oct 2022 08:07:06 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=dismail.de; h=date :message-id:from:to:subject:references:mime-version:content-type :content-transfer-encoding; s=20190914; bh=1KOajLGFBbbPQ5LJ3wstY k2N6xPhdxww8b8eYYme3Eg=; b=SSSgDmySoaGFQibEbTImAo6mF+S2fqNQ1FK/I a4T2Ab/vv+5GYxQMCJqg7xyHkppYinu97GcRecZXykub2QThflbweXQSVuMpVTWc syI+Byu3eUyDhj46tUTOMNuvpE6RhI0YCWrJfLI34f+UFLSzYyHrGLRPYNE3OXAA uq9VU+h6I3OetdnwenGJA7+YPn+S8fdI0A4Fc4UybLtU+cU3xMJrc65XFDdND5ek hC1oj2eNe8Hfd7qSc6pKu0iZKyzdoAyxRvZ+fTYhn/MM7WMBhZLP/nmLl3Wb5SGO teFwnJ5eQij9M37DJ/wHBTqtUFpGYaNnoYl311ogASlchchkg== Received: from smtp2.dismail.de ( [10.240.26.12]) by mx1.dismail.de (OpenSMTPD) with ESMTP id cc49a232 for ; Thu, 13 Oct 2022 08:07:06 +0200 (CEST) Received: from smtp2.dismail.de (localhost [127.0.0.1]) by smtp2.dismail.de (OpenSMTPD) with ESMTP id 9af93c54 for ; Thu, 13 Oct 2022 08:07:05 +0200 (CEST) Received: by dismail.de (OpenSMTPD) with ESMTPSA id a38deeb2 (TLSv1.3:TLS_AES_256_GCM_SHA384:256:NO) for ; Thu, 13 Oct 2022 08:07:05 +0200 (CEST) Date: Thu, 13 Oct 2022 01:07:03 -0500 Message-ID: <20221013010703.GB27375@dismail.de> From: jgart To: Guix Devel Subject: Guix Goals: One Hackable Developer Tool To Rule Them All References: MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit Received-SPF: pass client-ip=78.46.223.134; envelope-from=jgart@dismail.de; helo=mx1.dismail.de 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, SPF_PASS=-0.001, T_SPF_HELO_TEMPERROR=0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: guix-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list 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+larch=yhetil.org@gnu.org Sender: "Guix-devel" X-Migadu-Flow: FLOW_IN X-Migadu-Country: US ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1665641286; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding: references:references:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=1KOajLGFBbbPQ5LJ3wstYk2N6xPhdxww8b8eYYme3Eg=; b=bBCxvngDyuqOhYWB37AKFKBhSKrXuNFO5FWvucIYDc8KuyItzHWlx9U117IF4VxmmZAn1E o8FrJm+iCllR8X33+M3l2r+GUBLrM2MMa4PXQxbh3Dibt/AAPdpG4sXzoOPp6cir6kGvr3 0obG75cugAGSDa0ITpwFPHPpcX5ZnY9GBs4jDtQA+XD+39+7pQXEgXfPE6i52Yzsa10PoD 4koSUyCLiBJuiQy/qUg79C84nlDqtenL8HF7NJ8vCjkmptNdgB/Wt8YNFNt0U6/jTrmc7R djS9gYk1K1B9LFwuDpzrYRnwpRRXfS25Gsbwby4M4VNsFar/g8AVUMqCFVqYqA== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1665641286; a=rsa-sha256; cv=none; b=gsUPOEAsm5DdrAVbQVCuxGzkjSe/oJ3vRKkUdOGZFiKyQ5BA16gARqd8yYfadlw7CnCOW6 0R9yyBQUuE+iwKPEjkoq0SYSFWIa8UvU7TVatt9vHChELxQ6zoyNaWxIWGLGUFt6Tw06M9 6LzqRFDLhfs0kifqjXBP90LQ89YhwwJ2njnJOkH2o46qUbet3BewddmjevrwTWQzN7F5Kt ZdJgXfjgpr+spLZBgMQdfUSmlXciiEbEwjLvvJr+qgqTceYwUGMNhVzba9vpkBFnJ9XXHS 3mRLGNztOSqcsuWchvVBicgubXFB4KGuvzWDalVb6eeXtFaJeow5vdOAGZ599A== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=pass header.d=dismail.de header.s=20190914 header.b=SSSgDmyS; dmarc=pass (policy=reject) header.from=dismail.de; spf=pass (aspmx1.migadu.com: domain of "guix-devel-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-devel-bounces+larch=yhetil.org@gnu.org" X-Migadu-Spam-Score: -3.50 Authentication-Results: aspmx1.migadu.com; dkim=pass header.d=dismail.de header.s=20190914 header.b=SSSgDmyS; dmarc=pass (policy=reject) header.from=dismail.de; spf=pass (aspmx1.migadu.com: domain of "guix-devel-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-devel-bounces+larch=yhetil.org@gnu.org" X-Migadu-Queue-Id: 85B2FB22D X-Spam-Score: -3.50 X-Migadu-Scanner: scn1.migadu.com X-TUID: 9+s+cN7ihhkP Hi Guixers, What do you think if we were to implement "Guix Goals"? The various language ecosystems have their own linters, formatters, typecheckers, repls, test runners, etc. What if Guix could manage them all? `guix lint` in a python project would run mypy. `guix lint` in a haskell project would run hlint. `guix lint` in an erlang project would run dialyzer. `guix fmt` in a python project would run black. `guix fmt` in a haskell project would run ormolu. `guix fmt` in a erlang project would run erlfmt. `guix repl` in a python project would run ptpython or some other configured repl. `guix repl` in a haskell project would run ghci. `guix repl` in a erlang project would run erl. `guix test` in a python project would run pytest or unittest. `guix test` in a haskell project would run hunit. `guix test` in a erlang project would run eunit. `guix run` in a python project could start a flask app listening on a particular port. `guix run` in a ruby project could start a puma server. `guix run` in a haskell project could run a pre-configured script or Main.hs `guix run` in a erlang project could start a cowboy server. The idea would be to have Guix provide a configurable CLI wrapper subcommand around all language ecosystem developer tools. In other words it's the same Guixy thesis applied to developer tooling. I think this could take the Guix developer experience to the next level.