From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Stefan Monnier Newsgroups: gmane.emacs.devel Subject: Re: Subprojects in project.el Date: Fri, 02 Dec 2022 10:44:06 -0500 Message-ID: References: <87zgcq68zp.fsf@ericabrahamsen.net> <87wn7oa0aw.fsf@gmail.com> <7a5b76fd-fb15-8c1e-ea29-bf11f7e0d2ae@yandex.ru> <87bkoya815.fsf@gmail.com> <0024a67d-b8e5-b35c-1b22-82541a170eb3@yandex.ru> <871qptai4d.fsf_-_@gmail.com> <83o7swyipe.fsf@gnu.org> <83sfi7v6dj.fsf@gnu.org> <45549e6b-942f-ee99-9123-8176545a159e@yandex.ru> <83zgceu8ch.fsf@gnu.org> <7c34024e-c2b6-033f-ff37-a0fdfc9f0cdb@yandex.ru> <83v8n2tbur.fsf@gnu.org> <83cz91gaaw.fsf@gnu.org> <0094a6f2-796e-bc8d-bee0-13ecb069d7e6@yandex.ru> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="1102"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Cc: Eli Zaretskii , danny@dfreeman.email, eric@ericabrahamsen.net, emacs-devel@gnu.org To: Dmitry Gutov Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Fri Dec 02 16:45:08 2022 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 1p18Dr-000AaT-T2 for ged-emacs-devel@m.gmane-mx.org; Fri, 02 Dec 2022 16:45:08 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1p18D2-0002TD-0m; Fri, 02 Dec 2022 10:44:16 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p18Cy-0002T4-A5 for emacs-devel@gnu.org; Fri, 02 Dec 2022 10:44:12 -0500 Original-Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1p18Cw-0005oK-5N; Fri, 02 Dec 2022 10:44:11 -0500 Original-Received: from pmg1.iro.umontreal.ca (localhost.localdomain [127.0.0.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 04D44100129; Fri, 2 Dec 2022 10:44:09 -0500 (EST) Original-Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 7A5AA10011C; Fri, 2 Dec 2022 10:44:07 -0500 (EST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1669995847; bh=VH0PL/F0Ib3GviJp+aRGLe3ZVO5ejD7H8R+36aM0GpM=; h=From:To:Cc:Subject:In-Reply-To:References:Date:From; b=nQOx3jUou0/4+X8HdcS7/ths9xIqeYJbHbT7zGVFJ/IzBud2Y0ksb9fKUBMs5wZaN MOa+N5AcwTjm4B96ZeY33jpJh46Lx1dqxAK7SmDkajftuuk1OXm3/p+4B/3AAQruRy u/nXEp+wJaYZxCMxc8agEgJdArgMCqT+RVYnKnNAK2scM80rSik00dFxg4CZQ+OzWX 4fTszMRbjmbKZQWTBfcF0JyCB1vYKIvdiNmTf69fkXFe9NWpevmUJx6GaAWE+oPMDS xNhhdswNwQkHyHBvFnY+kVYNek8DwwR3yPzzy4cMxKmD9mYAuTHWzyx3KXE6riY8/Y pwoePABar+P2Q== Original-Received: from pastel (unknown [45.72.193.52]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 455AF122B81; Fri, 2 Dec 2022 10:44:07 -0500 (EST) In-Reply-To: <0094a6f2-796e-bc8d-bee0-13ecb069d7e6@yandex.ru> (Dmitry Gutov's message of "Fri, 2 Dec 2022 17:08:47 +0200") Received-SPF: pass client-ip=132.204.25.50; envelope-from=monnier@iro.umontreal.ca; helo=mailscanner.iro.umontreal.ca X-Spam_score_int: -42 X-Spam_score: -4.3 X-Spam_bar: ---- X-Spam_report: (-4.3 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 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-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.devel:300838 Archived-At: >> I'm just surprised that a simple request to be able to create a project >> type >> that is not one of the 2 built-in types is not answered by a simple "use >> this and that APIs". project.el strives very hard to be generic, but what >> is the use in doing that if extending it by 3rd-party code is so >> complicated, and on top of that is not already available? > > But that's what defines a project type: its implementations of the > generic functions. Indeed. AFAIK the general approach for APIs that rely on CLOS-style OO programming is that all the classes are kept "abstract" and what you see is only generic functions. IOW the API is exclusively defined by the generic functions. So you create your own type any which way you want and then provide implementations of the API's methods. Stefan