From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Adam Porter Newsgroups: gmane.emacs.devel Subject: Names are not descriptions; descriptions are not names Date: Thu, 11 May 2023 23:01:24 -0500 Message-ID: <3b4a24a3-2d12-16d3-d905-7794ed4269b1@alphapapa.net> 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="1227"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.10.0 To: emacs-devel Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Fri May 12 06:02:32 2023 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 1pxJzD-000AeL-UK for ged-emacs-devel@m.gmane-mx.org; Fri, 12 May 2023 06:02:32 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pxJyH-0006uv-Tj; Fri, 12 May 2023 00:01:33 -0400 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 1pxJyE-0006pm-Tz for emacs-devel@gnu.org; Fri, 12 May 2023 00:01:31 -0400 Original-Received: from aye.elm.relay.mailchannels.net ([23.83.212.6]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pxJyC-0003FN-FQ for emacs-devel@gnu.org; Fri, 12 May 2023 00:01:30 -0400 X-Sender-Id: dreamhost|x-authsender|adam@alphapapa.net Original-Received: from relay.mailchannels.net (localhost [127.0.0.1]) by relay.mailchannels.net (Postfix) with ESMTP id 841DC101B12 for ; Fri, 12 May 2023 04:01:23 +0000 (UTC) Original-Received: from pdx1-sub0-mail-a225.dreamhost.com (unknown [127.0.0.6]) (Authenticated sender: dreamhost) by relay.mailchannels.net (Postfix) with ESMTPA id 12FA71013FC for ; Fri, 12 May 2023 04:01:23 +0000 (UTC) ARC-Seal: i=1; s=arc-2022; d=mailchannels.net; t=1683864083; a=rsa-sha256; cv=none; b=2FISW3KmfXjDtV4qQ5bPzVsVsscS2vZQTKzHKE7zRfAiV2lV63L0/JsNtcGjl5PeOELnqJ 5nhz2V+0Ao5tmmwT/tFJImkFD7RzA6aXiqPY7cHtDXH7KDnz7YNb4sL0frra86G4h76tE7 6mhgXNOUcIAOO1Cg3IpOrsCNCu9UF3ESoOsz9SIxFFwRFGju/+mFy+Jvrnc0MRw6Q9PK1D urOca2cVFMPmJ94tjeUGTIgTeUIWxw4jnlAd2oZ02+8M68Fl5it/TvfF9U5UE0P5HJJp0V wGgq+30rUQZo53n+Uvlq0IuqtTddOoL1BCtZWyUlWIhyiviWJlIe3n3MbooE4g== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=mailchannels.net; s=arc-2022; t=1683864083; h=from:from: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:dkim-signature; bh=+IqPoKMRcLLoIqzhpdnLyqJmaung8D6YP240QjnnoZ4=; b=CwFFNAGbivGt0QV7EIGBFAiF6GAt1dQoO0X3vUiBgNKHTNFSXw1/iB070UK0Qks0ouTiZp HDgRpT1Vl6k2KYm+mufOrsdO/zQf0WzBUcXnPzzchGmyje4kmAdmwKaO2He6q+i5EtI5db 79ZiTdfq5gZHhMg5Euaj18CY9GWSFE7AVmoCOdpRoK70Ua1PmBbFm5mHyt4Mq5Zjymh4t5 J+Aok8O4U1YKq2DwiquHGLpuVf1BHmEjthI/mv2u/tUD/wKa8OeU6K835LUEWsTPuu2yUW yCytTWcSsyWYNfNxy5D9bvtXrtywKmgtjH6vdntFcOryZ+1xtgW+H7ZnCB0Gqw== ARC-Authentication-Results: i=1; rspamd-5cdf8fd7d9-wp6hn; auth=pass smtp.auth=dreamhost smtp.mailfrom=adam@alphapapa.net X-Sender-Id: dreamhost|x-authsender|adam@alphapapa.net X-MC-Relay: Neutral X-MailChannels-SenderId: dreamhost|x-authsender|adam@alphapapa.net X-MailChannels-Auth-Id: dreamhost X-Obese-Trail: 6d1887c47405249a_1683864083310_1913824815 X-MC-Loop-Signature: 1683864083310:1566207704 X-MC-Ingress-Time: 1683864083310 Original-Received: from pdx1-sub0-mail-a225.dreamhost.com (pop.dreamhost.com [64.90.62.162]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384) by 100.103.24.126 (trex/6.8.1); Fri, 12 May 2023 04:01:23 +0000 Original-Received: from [10.66.1.202] (unknown [91.193.232.98]) (using TLSv1.3 with cipher TLS_AES_128_GCM_SHA256 (128/128 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) (Authenticated sender: adam@alphapapa.net) by pdx1-sub0-mail-a225.dreamhost.com (Postfix) with ESMTPSA id 4QHZnZ4m3Hz5B for ; Thu, 11 May 2023 21:01:22 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=alphapapa.net; s=dreamhost; t=1683864082; bh=+IqPoKMRcLLoIqzhpdnLyqJmaung8D6YP240QjnnoZ4=; h=Date:From:Subject:To:Content-Type:Content-Transfer-Encoding; b=sJjXMtO0gyXAguJqy9A44gxLOnge/zJn54vS720tQQx6toiXyCFzOfE2QJtAjdnlX GyB4+bMCR9fad3g8m6+WXNk+85hLu3AGLF9H4yGZ5TVrXm1wiFpOIX1a1dVmk8oQAm yGg6da7riwMq1fvz+GMi6k8+bNq0L4hRaOoYsdEjYRsprO8Ctcf2QDnbwEjij09Isv ArDcFHPI5rIaWDb/dGSWd8LpJE6vBLOhSZTkRUIEfMnRuGLvbhpo7LJa7TJe9+8IiK rfe4PSd5VH5wBTE0Ym5Sc1ZZsIQwwQ5PD3ThjxmTVeg6dBm95jHsqS+vGLdYt6BAjs oXQVXulJoVtZQ== Content-Language: en-US Received-SPF: neutral client-ip=23.83.212.6; envelope-from=adam@alphapapa.net; helo=aye.elm.relay.mailchannels.net X-Spam_score_int: -12 X-Spam_score: -1.3 X-Spam_bar: - X-Spam_report: (-1.3 / 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_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_NEUTRAL=0.779, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=no 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:306069 Archived-At: There is no better way to doom software to obscurity than to give it a description as its name. Names are not descriptions; descriptions are not names. Rarely, for a simple enough package, a short description may be a reasonable choice for a name. For example, "org-sticky-header" conveys that it's for Org mode and that it provides a sticky header. Assuming, that is, that the user knows what a "sticky header" is--otherwise, what should it be called? "org-header-line-that-shows-the-outline-path-at-the-top-of-the-window"? Now imagine one user trying to share that package with another user: Alice: "Hey, I found a package that I think you'll find useful: org-header-line-that-shows-the-outline-path-at-the-top-of-the-window." Bob: "Oh, that does sound useful. What's it called?" Alice: "I just told you." Bob: "Yes, but what's the name of the package?" Alice: "That's it." Bob: "No, I need the name so I can install it and try it." Alice: "I just told you the name." Bob: "No, you told me what it does." Alice: "Yes, but that's the name." (With apologies to Abbott and Costello.) I'm not merely joking, I'm also serious. This is a real problem. It's doubly a problem for a package that has similar functionality to existing packages. For example, with regard to "devil", the package recently proposed by Susam Pal, various alternative, ostensibly descriptive names have been proposed, like "key-transl", "no-modifier-mode", "prefixless-mode", "implicit-ctrl-mode", and "comma->control-mode". If one of those names were used, how would a user distinguish such a package from other packages that do similar things, such as viper, evil, god-mode, meow, boon, and the numerous other similar ones that are out there? (Note that, although I use none of those packages, I remember them because of their distinctive names; had they descriptions as names, I would not remember them, nor would I be able to easily find them again.) We're faced with the same problem: "Hey, I found a useful key-translate package. You should try it." "Oh, I already use evil-mode." "No, not that one. This one." "Well, which one is it? There are a bunch of those, like viper, evil, god-mode, meow, boon..." "key-translate." "Yes, I understand that it does that, but what is it called?" "The name itself is key-translate." And that brings us back to the heart of the issue: "Oh, ok. So how is it different than viper, evil, god-mode, meow, or boon?" That is, the user must read the description (or even the whole readme) to understand what the package does. The name is not enough; the name is never enough. And by burdening the name with a responsibility it cannot bear, the name suffers, the package suffers, and ultimately, the user suffers. The "descriptive" name is not memorable; the user likely forgets what it's called a few weeks after installing and configuring it (who hasn't experienced this already: installing a package, configuring it, and then forgetting about it, finally being unable to remember the name of the package that does the thing that one suddenly needs the functionality of again, having to search ELPA or MELPA for such a tool, and then discovering that one already has it--well, maybe it's just me). Of course, it's a laudable goal to reduce confusion for users. Yet, although Ed is the standard editor, do we not use Emacs? What do potential users say about that? "Didn't Apple stop making those a long time ago?" Are they not confused? Should we rename Emacs to gnu-lisp-machine-with-built-in-editor? Would we not shorten such a name to GLiMBiE? And would such a name be descriptive? I'd like to share a link to a short essay published earlier this year that reminded me of these threads on emacs-devel: https://ntietz.com/blog/name-your-projects-cutesy-things/ Although it's mainly about service names rather than software packages, its points are relevant here: And then the cherry on top, the final nail in the coffin of descriptive names: They're just too hard to say and remember, and they're no fun. I don't want my services or projects to sound like a law firm ("Ingest, Processing, & Storage LLP"). A descriptive name will be wordy, or boring, or both. It won't be memorable, and it won't be fun. On the other hand, something that's cute will be far more memorable and much easier to say. The world is boring enough as is. Let's add more whimsy and cuteness through our service and project names. As an Elisp package author, I can vouch that part of the joy of programming is creation, and part of the joy of creation is in naming one's creations. Let us not steal this joy from the authors who generously contribute their time and work to the public good that is Emacs and ELPA. I'll close with these words from Alan J. Perlis, quoted in Abelson's and Sussmans' classic, /Structure and Interpretation of Computer Programs/: I think that it's extraordinarily important that we in computer science keep fun in computing. When it started out, it was an awful lot of fun. Of course, the paying customers got shafted every now and then, and after a while we began to take their complaints seriously. We began to feel as if we really were responsible for the successful, error-free perfect use of these machines. I don't think we are. I think we're responsible for stretching them, setting them off in new directions, and keeping fun in the house. I hope the field of computer science never loses its sense of fun. Above all, I hope we don't become missionaries. Don't feel as if you're Bible salesmen. The world has too many of those already. What you know about computing other people will learn. Don't feel as if the key to successful computing is only in your hands. What's in your hands, I think and hope, is intelligence: the ability to see the machine as more than when you were first led up to it, that you can make it more.