From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.ciao.gmane.io!not-for-mail From: Sacha Chua Newsgroups: gmane.emacs.devel Subject: Re: GNU ELPA package discoverability Date: Thu, 28 May 2020 00:53:08 -0400 Message-ID: References: <35DBF02E-44D7-41E5-A217-7D6EC84ED221@icloud.com> <4e937898-ae46-710a-cbca-e452a1156fa1@yandex.ru> <2e630dc7-ba1d-e4c9-74b3-4da976db1e82@yandex.ru> <87imglg51l.fsf@gnu.org> <83d06txuv4.fsf@gnu.org> <871rn9l35o.fsf@gnu.org> <83tv05waob.fsf@gnu.org> <874ks5gtca.fsf@gnu.org> <87h7w4oh5x.fsf@sachachua.com> Mime-Version: 1.0 Content-Type: multipart/alternative; boundary="000000000000876eae05a6ae1bca" Injection-Info: ciao.gmane.io; posting-host="ciao.gmane.io:159.69.161.202"; logging-data="95287"; mail-complaints-to="usenet@ciao.gmane.io" Cc: Bastien Guerry , Eli Zaretskii , Emacs-devel@gnu.org To: Richard Stallman , Steve Purcell Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Thu May 28 06:53:58 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 1jeAYH-000ObQ-6M for ged-emacs-devel@m.gmane-mx.org; Thu, 28 May 2020 06:53:57 +0200 Original-Received: from localhost ([::1]:36986 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1jeAYF-0004ow-8F for ged-emacs-devel@m.gmane-mx.org; Thu, 28 May 2020 00:53:55 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:32912) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1jeAXk-0004PZ-PN for Emacs-devel@gnu.org; Thu, 28 May 2020 00:53:24 -0400 Original-Received: from mail-yb1-xb2a.google.com ([2607:f8b0:4864:20::b2a]:41044) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1jeAXh-0008LQ-PX for Emacs-devel@gnu.org; Thu, 28 May 2020 00:53:24 -0400 Original-Received: by mail-yb1-xb2a.google.com with SMTP id b62so3060944ybh.8 for ; Wed, 27 May 2020 21:53:20 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sachachua-com.20150623.gappssmtp.com; s=20150623; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=PtWQtiV0ENiBW7lk0IYjGdoNujgp3asBqDLCzB9EwiY=; b=GegAVD/PKYxR2iEgV7SUTB7Xqyk2CEF079Hwy34YL5AMXL4LFL0TwB4z//kujGDVEP Qrth1o8Mv1qPBvcbepQo4kzmE5QPMItjB371kAXhYrq19Gsk6873y9q1Lqg1vbeo5wld wKCvNVn3GAuqEr8bUBVjVMCVOsp8ATVP1B5UeKwUVnG6e0iDUC4Jo24BgacfyqHQVqSs i81kN8jMFkPS/42/zCcoAQzPdWte46tZM35Ng9shi5+X0GeyhdFJy4ygoa4BrPquNKhM dcFM4fi6M/FqLoFYnIMZpZoLdIULnt9g3hv38s4iZLbUIkhty9XQIygOsgYo6b/xRq2D ORdQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=PtWQtiV0ENiBW7lk0IYjGdoNujgp3asBqDLCzB9EwiY=; b=GD5HdTkuEJXVlwBVthDedknMrK+hKqC0O2aMadNBR+BYzfSD9ouoUKBpotTtmbvilp 91bQLEUw+O4AX/CwZtzGWj17rgXzxcDhUl9Hf9873hkD8qqjwn3AOzjn0ZgyI9SUPsCn jhdShx+G2TzYg688Sv0zcocNCed1YuB5CDewjFprDP2XDddWavxKqzwIHu8mW/qDku60 Fs9zAAVdjvIh45lZLygbVOgeh1A4pafBr+iB1wPW5dpXZo+LOnHa+Oj35jUW/EvxDh0c BT2YIWSwYJeHgABs3x8gi9EJw+Wl6nJrv+n5d85JFTKLmF5dsSTLDlnnfC7qZG8jVIOg m6GQ== X-Gm-Message-State: AOAM530Imkb1sjcFVyPeyRVcNHwkpL6raG6j1Za1LoBgPNUxXlJIJ540 jyqa+19/r/IRZ3g55c95z4CyeCHaMC0c2jrLBDJZXeAbkOgDl6z6 X-Google-Smtp-Source: ABdhPJwymyNZCzjs8DwvLthrnhy27SeQAcaORseekfuTTwF7Qp07bXUSnwWq0srhcAuHY89TbwjSmtKPZCkJCA3d36Y= X-Received: by 2002:a25:cc87:: with SMTP id l129mr2432969ybf.18.1590641599922; Wed, 27 May 2020 21:53:19 -0700 (PDT) In-Reply-To: Received-SPF: pass client-ip=2607:f8b0:4864:20::b2a; envelope-from=sacha@sachachua.com; helo=mail-yb1-xb2a.google.com X-detected-operating-system: by eggs.gnu.org: No matching host in p0f cache. That's all we know. X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_PASS=-0.001, URIBL_BLOCKED=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:251533 Archived-At: --000000000000876eae05a6ae1bca Content-Type: text/plain; charset="UTF-8" Steve: Adding you because it's about MELPA and package archive discoverability, which you've probably thought about waaaay more about than I have. =) I think the newbie flow is that people usually go from MELPA -> figure out package-archives rather than starting with package-archives and finding MELPA. The code from MELPA's Getting Started guide might be one of the first things a newbie wants to add to init.el. Would you consider adding or linking to some kind of tutorial on editing init.el? Other parts of the discussion follow: > There are very few package archives that meet our moral criteria > for suggesting their use. In fact, currently only one: GNU ELPA. > We are thinking of making another, which we can informally call NonGNU > ELPA. Some of the packages now in other archives could be included > there. The details remain to be worked out. > For moral reasons, we will not suggest an archive that contains > packages that steer or lead users towards installing or running > nonfree software. That is a brief summary of the rule in node > References in https://www.gnu.org/prep/standards/. > That's cool, GNU Emacs is a GNU flagship project after all, and lots of people learn about and become committed to free software philosophy because of it. That's good. So if MELPA doesn't make the cut, maybe the NonGNU ELPA could have enough popular packages so that people can install them easily and get the hang of things. Let's see what the top MELPA packages are based on downloads... Would things like Magit, Helm, and Flycheck be eligible for inclusion in the new package archive? Let's think through a bunch of scenarios where package management hiccups might come up. How do people come to Emacs? From reading the newbie threads in reddit.com/r/emacs, I get the sense that lots of people come in because they've seen a cool video or blog post about programming, Spacemacs, or Org Mode, or because they're Vim/VSCode users who are curious about the other side. Org Mode newbies tend to spend some time familiarizing themselves with basic Org before digging into additional modules. The thing that usually trips people up is probably upgrading Org from an Emacs that hasn't opened an .org file before, but people seem to figure that out with some help. There used to be some confusion due to major differences between versions, but that seemed to have settled down after people got used to Emacs 26.1. If newbies are coming in because of a Spacemacs programming video or because they're coming from Vim, they'll probably go straight to Spacemacs, which will solve the package management issue for them for a while. In fact, Spacemacs wants people to set the dotspacemacs-additional-packages variable and removes packages installed with package-install, so package management improvements in vanilla Emacs are irrelevant. Some people eventually leave Spacemacs for vanilla Emacs or something like Doom Emacs because they want something lighter-weight, but they'll probably be a bit more comfortable with Emacs by then. So let's say they're starting with vanilla Emacs instead of Spacemacs. Most people's questions tend to show that they already know about MELPA and are running into problems setting it up, although there are a couple of questions from people who want to install a package that isn't on ELPA and they don't know about MELPA yet. I wonder what kind of hiccups people usually run into... Here are snippets from an IRC conversation in Feb 2020: "I want to install julia mode (for programming in julia) on my ubuntu 16.04 box. Apparently I should use the MELPA repository but looking at https://melpa.org/#/getting-started is very intimidating" . The person turned out to have a problem with having both .emacs and .emacs.d/init.el and also having Emacs 24, and eventually got it working after upgrading. Another conversation from 2019-07-10 turned out to be a problem with editing .init.el instead of init.el (note initial .). Some people got tripped up by using add-to-list 'package-archives before package.el is loaded. The MELPA instructions for getting started have (require 'package) at the beginning, but the one for melpa-stable might confuse some people because it doesn't include that, and sometimes newbies don't notice the (require 'package) when copying parts of other people's configs. Most people seem to be okay with copying the right code, they just get tripped up by where to put it. Other questions about package archives tend to be related to servers being down, HTTP vs HTTPS, and so on. Then of course there's figuring out which packages to install and how they work together, how to configure them, how to load them... People often ask for package/config recommendations on reddit.com/r/emacs and community members share lots of resources, so I think that's something we can handle on the community side. We probably lose a bunch of potential users in that gap between "Okay, I've installed Emacs" to "I've installed the packages I'm curious about" - something along the lines of "Why is it so hard to install ____? Are things going to be as frustrating as this?" Starter kits like Spacemacs do an interesting job of bridging that, although I think adoption is still a bit low. (Maybe 5-10%, as a totally wild guess?) Anyway, once they get past that gap and start having their first wins, they have a bit more incentive to stick around, as Emacs becomes more useful, more personalized, and more fun. I don't think MELPA would change the getting started instructions to use Customize, so maybe tweaking the customization flow for package-archives is actually less relevant. If more packages (especially the more popular ones) could be installed without mucking around with package-archives or ~/.config/emacs/init.el (I need to get used to the new location!), that's probably a bigger win than nudging people to customize package-archives would be. Hmm... Actually, come to think of it, where *do* we help people figure out how to tweak their init.el? Emacs tends to recommend Customize because it offers more guidance (and blindly copying Emacs Lisp into your config can lead to Big Problems), but people who write about Emacs or share their configs tend to post (setq ...)-type stuff (or use-package, which is becoming quite popular), so newbies want to edit their init.el and then run into all these problems finding the right file and figuring out what to do. There's (emacs) Init File, which is under Advanced Features > Customization. Should we think about init.el as something beginners might want to know about early? Maybe a mention or info link in the tutorial? Maybe a splash screen or Options menu shortcut to edit the init file so that at least they're editing the right place, and maybe even some code to check if the init file is getting shadowed? Maybe a M-x find-user-init-file or edit-user-init-file? It seems a little dangerous to nudge people towards init.el early, but newbies are already jumping into it and getting lost, so maybe we can make it easier for them and frame it as a natural part of working with Emacs. Come to think of it, tutorial writers are going to have to figure out how to talk about editing either ~/.config/emacs/init.el or ~/.emacs.d/init.el . If there's going to be a transition period for that anyway, it might make sense to promote something like M-x find-user-init-file as well. Along those lines, maybe there could be a hello-world sort of package that people can install as part of the tutorial (or a tutorial part 2) that just helps them confirm that they can do that, although we might need a link to more troubleshooting info if they run into problems with proxies or other stuff. Something for the info manual, maybe? Sacha --000000000000876eae05a6ae1bca Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Steve: Adding you because = it's about MELPA and package archive discoverability, which you've = probably thought about waaaay more about than I have. =3D) I think the newb= ie flow is that people usually go from MELPA -> figure out package-archi= ves rather than starting with package-archives and finding MELPA.=C2=A0The = code from MELPA's Getting Started guide might be one of the first thing= s a newbie wants to add to init.el. Would you consider adding or linking to= some kind of tutorial on editing init.el?

Other p= arts of the discussion follow:
=C2=A0
There are very few package archives that meet o= ur moral criteria
for suggesting their use.=C2=A0 In fact, currently only one: GNU ELPA.
We are thinking of making another, which we can informally call NonGNU
ELPA.=C2=A0 Some of the packages now in other archives could be included there.=C2=A0 The details remain to be worked out.
For moral reasons, we = will not suggest an archive that contains
packages that steer or lead users towards installing or running
nonfree software.=C2=A0 That is a brief summary of the rule in node
References in https://www.gnu.org/prep/standards/.

That's cool, GNU Emacs is a GNU flagship proj= ect after all, and lots of people learn about and become committed to free = software philosophy because of it. That's good. So if MELPA doesn't= make the cut, maybe the NonGNU ELPA could have enough popular packages so = that people can install them easily and get the hang of things. Let's s= ee what the top MELPA packages are based on downloads... Would things like = Magit, Helm, and Flycheck be eligible for inclusion in the new package arch= ive?

Let's think through a bunch of scenarios = where package management hiccups might come up. How do people come to Emacs= ? From reading the newbie threads in = reddit.com/r/emacs, I get the sense that lots of people come in because= they've seen a cool video or blog post about programming, Spacemacs, o= r Org Mode, or because they're Vim/VSCode users who are curious about t= he other side.=C2=A0

Org Mode newbies tend to spen= d some time familiarizing themselves with basic Org before digging into add= itional modules. The thing that usually trips people up is probably upgradi= ng Org from an Emacs that hasn't opened an .org file before, but people= seem to figure that out with some help. There used to be some confusion du= e to major differences between versions, but that seemed to have settled do= wn after people got used to Emacs 26.1.

If newbies= are coming in because of a Spacemacs programming video or because they'= ;re coming from Vim, they'll probably go straight to Spacemacs, which w= ill solve the package management issue for them for a while. In fact, Space= macs wants people to set the dotspacemacs-additional-packages variable and = removes packages installed with package-install, so package management impr= ovements in vanilla Emacs are irrelevant. Some people eventually leave Spac= emacs for vanilla Emacs or something like Doom Emacs because they want some= thing lighter-weight, but they'll probably be a bit more comfortable wi= th Emacs by then.

So let's say they're sta= rting with vanilla Emacs instead of Spacemacs. Most people's questions = tend to show that they already know about MELPA and are running into proble= ms setting it up, although there are a couple of questions from people who = want to install a package that isn't on ELPA and=C2=A0they don't kn= ow about MELPA yet. I wonder what kind of hiccups people usually run into..= . Here are snippets from an IRC conversation in Feb 2020: "I want to i= nstall julia mode (for programming in julia) on my ubuntu 16.04 box. Appare= ntly I should use the MELPA repository but looking at https://melpa.org/#/getting-started is very = intimidating" . The person turned out to have a problem with having bo= th .emacs and .emacs.d/init.el and also having Emacs 24, and eventually got= it working after upgrading. Another conversation from 2019-07-10 turned ou= t to be a problem with editing .init.el instead of init.el (note initial .)= . Some people got tripped up by using add-to-list 'package-archives bef= ore package.el is loaded. The MELPA instructions for getting started have (= require 'package) at the beginning, but the one for melpa-stable might = confuse some people because it doesn't include that, and sometimes newb= ies don't notice the (require 'package) when copying parts of other= people's configs. Most people seem to be okay with copying the right c= ode, they just get tripped up by where to put it. Other questions about pac= kage archives tend to be related to servers being down, HTTP vs HTTPS, and = so on.

Then of course there's figuring out whi= ch packages to install and how they work together, how to configure them, h= ow to load them... People often ask for package/config recommendations on <= a href=3D"http://reddit.com/r/emacs">reddit.com/r/emacs and community m= embers share lots of resources, so I think that's something we can hand= le on the community side.=C2=A0

We probably lose a= bunch of potential users in that gap between "Okay, I've installe= d Emacs" to "I've installed the packages I'm curious abou= t" - something along the lines of "Why is it so hard to install _= ___? Are things going to be as frustrating as this?" Starter kits like= Spacemacs do an interesting job of bridging that, although I think adoptio= n is still a bit low. (Maybe 5-10%, as a totally=C2=A0wild guess?) Anyway, = once they get past that gap and start having their first wins, they have a = bit more incentive to stick around, as Emacs becomes more useful, more pers= onalized, and more fun.=C2=A0

I don't think ME= LPA would change the getting started instructions to use Customize, so mayb= e tweaking the customization flow for package-archives is actually less rel= evant.=C2=A0If more packages (especially the more popular ones) could be in= stalled without mucking around with package-archives or ~/.config/emacs/ini= t.el (I need to get used to the new location!), that's probably a bigge= r win than nudging people to customize package-archives would be.=C2=A0

Hmm... Actually, come to think of it, where *do* we h= elp people figure out how to tweak their init.el? Emacs tends to recommend = Customize because it offers more guidance (and blindly copying Emacs Lisp i= nto your config can lead to Big Problems), but people who write about Emacs= or share their configs tend to post (setq ...)-type stuff (or use-package,= which is becoming quite popular), so newbies want to edit their init.el an= d then run into all these problems finding the right file and figuring out = what to do. There's (emacs) Init File, which is under Advanced Features= > Customization. Should we think about init.el as something beginners m= ight want to know about early? Maybe a mention or info link in the tutorial= ? Maybe a splash screen or Options menu shortcut to edit the init file so t= hat at least they're editing the right place, and maybe even some code = to check if the init file is getting shadowed? Maybe a M-x find-user-init-f= ile or edit-user-init-file? It seems a little dangerous to nudge people tow= ards init.el early, but newbies are already jumping into it and getting los= t, so maybe we can make it easier for them and frame it as a natural part o= f working with Emacs. Come to think of it, tutorial writers are going to ha= ve to figure out how to talk about editing either ~/.config/emacs/init.el o= r ~/.emacs.d/init.el . If there's going to be a transition period for t= hat anyway, it might make sense to promote something like M-x find-user-ini= t-file as well.

Along those lines, maybe there cou= ld be a hello-world sort of package that people can install as part of the = tutorial (or a tutorial part 2) that just helps them confirm that they can = do that, although we might need a link to more troubleshooting info if they= run into problems with proxies or other stuff. Something for the info manu= al, maybe?

Sacha
=
--000000000000876eae05a6ae1bca--