From mboxrd@z Thu Jan  1 00:00:00 1970
Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail
From: Nikolay Kudryavtsev <nikolay.kudryavtsev@gmail.com>
Newsgroups: gmane.emacs.help
Subject: Re: Strategies for Composable Modular Configuration?
Date: Wed, 22 Nov 2023 15:58:55 +0300
Message-ID: <60ada9d4-8036-41d8-bdbf-012b8f5b2747@gmail.com>
References: <CADQMGARAW=DKqgLpgKsRkpj+irzCbwwsnFTQGYKC4g6NrMCPqA@mail.gmail.com>
Mime-Version: 1.0
Content-Type: text/plain; charset=UTF-8; format=flowed
Content-Transfer-Encoding: 7bit
Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214";
	logging-data="38096"; mail-complaints-to="usenet@ciao.gmane.io"
User-Agent: Mozilla Thunderbird
To: Psionic K <psionik@positron.solutions>, help-gnu-emacs@gnu.org
Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Wed Nov 22 14:00:17 2023
Return-path: <help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org>
Envelope-to: geh-help-gnu-emacs@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 <help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org>)
	id 1r5mq0-0009kD-Jw
	for geh-help-gnu-emacs@m.gmane-mx.org; Wed, 22 Nov 2023 14:00:16 +0100
Original-Received: from localhost ([::1] helo=lists1p.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.90_1)
	(envelope-from <help-gnu-emacs-bounces@gnu.org>)
	id 1r5mor-000527-N6; Wed, 22 Nov 2023 07:59:05 -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 <nikolay.kudryavtsev@gmail.com>)
 id 1r5moq-00051r-IU
 for help-gnu-emacs@gnu.org; Wed, 22 Nov 2023 07:59:04 -0500
Original-Received: from mail-lf1-x12a.google.com ([2a00:1450:4864:20::12a])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128)
 (Exim 4.90_1) (envelope-from <nikolay.kudryavtsev@gmail.com>)
 id 1r5mom-0006wC-Kb
 for help-gnu-emacs@gnu.org; Wed, 22 Nov 2023 07:59:04 -0500
Original-Received: by mail-lf1-x12a.google.com with SMTP id
 2adb3069b0e04-50aab0ca90aso5120186e87.0
 for <help-gnu-emacs@gnu.org>; Wed, 22 Nov 2023 04:58:59 -0800 (PST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=gmail.com; s=20230601; t=1700657939; x=1701262739; darn=gnu.org;
 h=content-transfer-encoding:in-reply-to:content-language:references
 :to:subject:user-agent:mime-version:date:message-id:from:from:to:cc
 :subject:date:message-id:reply-to;
 bh=xEj4Uteih5CCZkNRgCISEALniTU8xwn/EFzcmpnhkUA=;
 b=jKbGJJOENF65jLKLZWcbEb+zasdxdB1ppIeRNIBcEVu33v8FlZ4oW9MHT4eHVrdKdS
 qqzWh/KotIItcbN3UFP2Ib9h+RQyc+rD+jtXeCRI3QGaILFud2/Z+0tCBNePxZXYIrpv
 UJEmsw1nqXapLifb7sVPruakW8u0RMMnaHEU3PtT6JPH5gjBy8gNLYoJxZztwk9aGxeS
 JjRIePUcPmf19qOWdrSis1eV7ljiFX+NIIY/93Eww3GMJaqz5vaYUXNsIYdHtJzLd4yu
 Ftfn90gDHGJC6neiyi+7oeRgU1zHBFiSq2syRfrgt9X+umSeyKpre5c3r8uKsfelKYLc
 am2w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20230601; t=1700657939; x=1701262739;
 h=content-transfer-encoding:in-reply-to:content-language:references
 :to:subject:user-agent:mime-version:date:message-id:from
 :x-gm-message-state:from:to:cc:subject:date:message-id:reply-to;
 bh=xEj4Uteih5CCZkNRgCISEALniTU8xwn/EFzcmpnhkUA=;
 b=Ufeu1agKDsf2Q0ZS9Rm3DuT+0T56RzI0KRwnxOhlgtWgUbrYh8+NngK5aF5ut+5ySu
 3pS0Q7iMSTtU7jv0to18WshF+D0nBctEXYCBUnTXpybCaGgtbMcHyQaYYMvG1KKmSup9
 ZbrEijY9+hvuoq3deoKtG/GalLzqTEVwxwDQDTqztHbJ4U+Px8HwjvU0H8Wfoorp6lmI
 lH22iBxNNeEktvazO5O3ijCMNhFrpHfY83frwaW5knAg6B2Wtylr9SgU0QotZGQDppT3
 /W6tNb6zxY/SQlaJMPpUuU5xZDvgLJFaI72YWAArZhwSg7B1RzAl/8ydplDTA2AfZaAW
 ZZrw==
X-Gm-Message-State: AOJu0YzJrA5gkls8JOunUV5UMeWxFYbiCkF6ViWRKCBwcEMHbzZJQZqx
 0aJhltpxd8xeP3jVCdVi+p/nCDheeNNvTv8m
X-Google-Smtp-Source: AGHT+IHE2brlJ+Qy2ZQ/QaGB7H3PNDoAAa6IswPvqYcMKJN/5pyAowfd3gWF140Z5QPsUuiQ5LYkFg==
X-Received: by 2002:a05:6512:244:b0:506:87a3:c27c with SMTP id
 b4-20020a056512024400b0050687a3c27cmr1270574lfo.53.1700657938447; 
 Wed, 22 Nov 2023 04:58:58 -0800 (PST)
Original-Received: from [192.168.199.2] (broadband-90-154-73-8.ip.moscow.rt.ru.
 [90.154.73.8]) by smtp.gmail.com with ESMTPSA id
 m1-20020ac24ac1000000b0050a71ac3f45sm1828127lfp.203.2023.11.22.04.58.57
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Wed, 22 Nov 2023 04:58:58 -0800 (PST)
X-Google-Original-From: Nikolay Kudryavtsev <Nikolay.Kudryavtsev@gmail.com>
Content-Language: ru, en-US
In-Reply-To: <CADQMGARAW=DKqgLpgKsRkpj+irzCbwwsnFTQGYKC4g6NrMCPqA@mail.gmail.com>
Received-SPF: pass client-ip=2a00:1450:4864:20::12a;
 envelope-from=nikolay.kudryavtsev@gmail.com; helo=mail-lf1-x12a.google.com
X-Spam_score_int: -20
X-Spam_score: -2.1
X-Spam_bar: --
X-Spam_report: (-2.1 / 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, FREEMAIL_FROM=0.001,
 RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=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: help-gnu-emacs@gnu.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: Users list for the GNU Emacs text editor <help-gnu-emacs.gnu.org>
List-Unsubscribe: <https://lists.gnu.org/mailman/options/help-gnu-emacs>,
 <mailto:help-gnu-emacs-request@gnu.org?subject=unsubscribe>
List-Archive: <https://lists.gnu.org/archive/html/help-gnu-emacs>
List-Post: <mailto:help-gnu-emacs@gnu.org>
List-Help: <mailto:help-gnu-emacs-request@gnu.org?subject=help>
List-Subscribe: <https://lists.gnu.org/mailman/listinfo/help-gnu-emacs>,
 <mailto:help-gnu-emacs-request@gnu.org?subject=subscribe>
Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org
Original-Sender: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org
Xref: news.gmane.io gmane.emacs.help:145559
Archived-At: <http://permalink.gmane.org/gmane.emacs.help/145559>

This topic gets discussed here and there sometimes.

I think the first issue is configuration discoverability. You can run 
someone's init for org and see that you're having a much better 
experience, because of settings A,B,C. But there may also be setting D 
that you don't need. Setting E that actually makes it worse for you. 
Then for you there's actually an even better value for setting B.

Then there's the learning curve problem. Emacs already has quite a 
curve, but any third party configurations almost double it, because you 
now have multiple behavior providers - a thing may be a part of core 
Emacs functionality and the default. While some other thing is provided 
by a third party package X, bundled in your starter kit. Then there's 
the starter kit configuration layers on top of it.

Now onto your questions:

2. Considering your minibuffer package zoo example, I've been thinking 
that something akin to protocols from Clojure would work for this case 
as that extra layer of indirection that can solve those kinds of 
problems. Clojure protocols are its basic are a set of function hooks 
unified under one name. So, for example I decide to use the flight sim 
rudder pedals in my Emacs configuration. Obviously I want them to 
iterate over items. So lets say Emacs had 
item-iteration-binding-protocol. Which has next-item and previous-item 
hooks. Then every minibuffer completion package can implement that and I 
just need to bind my pedals to that next and previous item bindings for 
it to work everywhere. Very obviously this is the best case scenario and 
there would be numerous practical problems when it comes to implementation.

3. I have never played with Doom, but from my limited experience with 
it, Spacemacs seems to be doing as good of a job as possible with its 
layers system, considering the complexity of the problem.