From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.ciao.gmane.io!not-for-mail From: =?ISO-8859-1?Q?S=E9bastien?= Gendre Newsgroups: gmane.emacs.devel Subject: Re: PL support Date: Tue, 12 May 2020 18:06:06 +0200 Message-ID: <66042e2090742ef8413f153a2517f03ad7b533f8.camel@k-7.ch> References: <9mmFgzvrBwjt_n_VJyaJdXINraNi5HsGpwq-0MLeKiJA7kG2BQA4uywrzjyz7lpRS0OZDpjEi8lspOKYUA7P_QsODsDew_8nbH960G55fmY=@protonmail.com> <87d07xamrg.fsf@ericabrahamsen.net> <878silajdl.fsf@ericabrahamsen.net> <87tv18pyh4.fsf@russet.org.uk> <83zhaih0oz.fsf@gnu.org> <83pnbegsvm.fsf@gnu.org> <83imh5hby1.fsf@gnu.org> <2e4e8ce9-d857-f3e3-31cf-a40dee67bd25@yandex.ru> <83y2q1dsvh.fsf@gnu.org> <2468efa6-7dbd-8634-44cc-586bb6985f49@yandex.ru> <83pnbddrfd.fsf@gnu.org> <83k11ldpxs.fsf@gnu.org> <83imh5dnun.fsf@gnu.org> <2c09354e7994f0e61271ab0078256a9dc4202171.camel@k-7.ch> Mime-Version: 1.0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8bit Injection-Info: ciao.gmane.io; posting-host="ciao.gmane.io:159.69.161.202"; logging-data="52981"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Evolution 3.36.2 (3.36.2-1.fc32) To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Tue May 12 18:07:21 2020 Return-path: Envelope-to: ged-emacs-devel@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 1jYXRA-000DcH-U0 for ged-emacs-devel@m.gmane-mx.org; Tue, 12 May 2020 18:07:20 +0200 Original-Received: from localhost ([::1]:43854 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jYXR9-0000a3-S7 for ged-emacs-devel@m.gmane-mx.org; Tue, 12 May 2020 12:07:19 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:44424) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jYXQ7-0007En-Cc for emacs-devel@gnu.org; Tue, 12 May 2020 12:06:15 -0400 Original-Received: from 50-102-31-185.ftth.cust.kwaoo.net ([185.31.102.50]:48414 helo=gandalf.k-7.ch) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jYXQ5-0004cl-Vn for emacs-devel@gnu.org; Tue, 12 May 2020 12:06:14 -0400 Original-Received: from escaflown.lan (Alfred.lan [192.168.1.1]) (Authenticated sender: seb) by gandalf.k-7.ch (Postfix) with ESMTPSA id 5E0D7E94F7 for ; Tue, 12 May 2020 18:06:07 +0200 (CEST) In-Reply-To: <2c09354e7994f0e61271ab0078256a9dc4202171.camel@k-7.ch> Received-SPF: none client-ip=185.31.102.50; envelope-from=seb@k-7.ch; helo=gandalf.k-7.ch X-detected-operating-system: by eggs.gnu.org: First seen = 2020/05/12 12:06:07 X-ACL-Warn: Detected OS = Linux 2.2.x-3.x [generic] [fuzzy] X-Spam_score_int: -8 X-Spam_score: -0.9 X-Spam_bar: / X-Spam_report: (-0.9 / 5.0 requ) BAYES_00=-1.9, RDNS_DYNAMIC=0.982, TVD_RCVD_IP=0.001 autolearn=_AUTOLEARN X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.io gmane.emacs.devel:249987 Archived-At: The initial problematic that the suggestion of `external-tools.el` wanted to solve is how to install external tools, used by some Elisp code (whether this code is included in Emacs or as an package), while being easy to use to user and developer. Today, this problem can be fixed in 2 possible way: - List all external tools needed on a README/INSTALL file and let the user install them - Automatically download and install the external tools with some Elisp code that call `wget` or a packages manager For the second way, it is already used by some third party Emacs packages like `anaconda-mode` (download and install Jedi) or `flycheck-grammalecte` (not fully automatic, need to call one Elisp function to download grammalecte). If we look at the ethic problematic of the situation, today we cannot prevent third party Emacs packages to automatically download external tools. But by providing something like `external-tools.el` we can provide an easy and unified way to install external tools, a way that: - Will always ask confirmation of the user before download and install anything - Could list all tools that would be installed (maybe with the licence name) before download them - Could explain to the user the risk when using proprietary software This way will not prevent third party packages to use `external-tools.el` to declare and download proprietary software, but the actual situation can't either when Elisp code call the `wget` command to download proprietary software. We can still prohibit Emacs built-in and ELPA packages to declare and download proprietary software. The question is: Can we provide something with the goal to simplify the download and the installation of Free Softwares as external tools when this can be also used by third party dev to download and install proprietary software? But this question can also arise for the package manager of Emacs that can be used with a third party repository that would providing proprietary software. Le samedi 09 mai 2020 à 21:26 +0200, Sébastien G a écrit : > Le samedi 09 mai 2020 à 18:36 +0100, João Távora a écrit : > > enhance eglot.el to automatically download server programs. > > Maybe downloading and installing server programs can be delegate to a > new "external-tools.el" library. Something that can manage not only > language server, but any extrnal tools requested by a mode. > > This library could provide an API to: > - Declare, in a single elisp function call, an external tool with a > name and how install it (which pkg and pkg manager to use) > - Let modes request the presence of specific external tool with a > single elisp function call > - Modes can, optionnaly, request the latest version of the external > tool to be present > > When an external tools is requested: > - If the tool is not installed: Install it > - If the tool is already installed and latest version is required: > Update it > - If the tool is already installed and latest version is not > required: > Do nothing > - When installing or updating something, ask user confirmation before > do it > - If the tool requested cannot be installed, the mode can know it and > desactivate some of its features. > > > "external-tools" could be useful to many modes and elisp functions.