Dear Boruch,

On Mon, Jul 30, 2018 at 01:14:20AM -0400, Boruch Baum wrote:
> 
>   ref: https://github.com/melpa/melpa/pull/5594
> 
> The method I used to re-write 'home-end' for MELPA was to first write a
> small generic el that handles an arbitrary number of responses for an
> arbitrary number of repeated key-presses for an arbitrary key (I'm
> calling it 'keypress-multi-event'), and then have my version of
> 'home-end' use that as its back-end.
>
> For the purpose of debian packaging, should those two files (each very
> small, BTW) be packaged separately? Does debian want each small file to
> be in a separate repository (eg., on github).

They can be in the same repository, if the intent is for home-end.el
and keypress-multi-event.el to always have equal versions and every
update to one file necessitates upgrading both packages, because a tag
stores the state of the branch.  Is that the intent?  Magit did it
this way for a while.

If keypress-multi-event.el is a library that would be useful to most
GNU Emacs users, then—ideally—a patch should be submitted to GNU
Emacs.  I noticed that you're willing to assign © to the FSF, so maybe
this is the plan?  It makes sense to keep them as separate files to
make upstreaming a portion of your work easier rather than
merging keypress-multi-event.el into home-end.el :-)

As a counterpoint, Elpy (many files!) currently bundles
yasnippet-snippets that are useful to Python programmers who don't use
elpy, so I'm in the middle of a PR to merge them into
yasnippet-snippets.  After that they will be unbundled.  Thanks to
Sean Whitton for pointing this out, and for Jorgen Schaefer (upstream
maintainer of Elpy) for ACKing the unbundling.

> Also, does debian have any strong feelings on where such a repository
> should be hosted (eg. microsoft).

From what I've heard from others, Github is fine...I think it's up to
you.  Proportionally few projects migrated from Github to Gitlab
following the Microsoft acquisition, and personally I think that
Github will probably remain the Linkedin of code.

> In the bigger picture, I question the 'efficiency' of administering
> emacs packages this way. Debian is setting itself up for a tremendous
> amount of work involving potentially hundreds of MELPA packages.

One reason emacs-goodies-el is being broken up is to distribute the
burden of maintenance of x packages between y volunteers, where
previously it was 1 mega-package that no one had time to maintain. [3]

> Going
> through the use-cases and scenarios in my head, it doesn't make sense to
> me that on the one hand debian is not restricting individual user
> accounts from using MELPA (eg. by removing / patching-out functions from
> package.el ), but on the other hand is curating a MELPA subset that
> individual user accounts would potentially be duplicating in their local
> user-space, with much potential for version mis-matching.

Dh-elpa protects against this.  eg: A user installs elpa-libfoo=1.0
and elpa-bar-mode=1.0; list-packages will display the status
"external" for both packages, and list-packages will not upgrade these
packages from MELPA to MELPA versions.  A user wants to install, from
MELPA, zebra-1.0, which depends on libfoo-1.5.  After selecting libfoo
from the menu, the *Help* buffer will show zebra-1.0 as "Status:
Incompatible in /path/to/lib-foo-1.0".  Installing an elpafied Debian
package protects the user from upstream changes to elisp libraries
(eg: not rolling).  If a user wants wildebeest-5.0, from MELPA, and
has not installed elpa-wildebeest, and wildebeest-5.0 depends on
<=libfoo-1.0 then a user can install this package from MELPA.

> Two alternatives to consider would be to:
> 1] Package nothing that is available on MELPA; let MELPA handle it, and
> let individual users curate packages for themselves (debian already
> allows them to self-curate using MELPA, anyway);

Installing packages from MELPA via Packages.el is not curation.
Maintaining a separate list of packages or a puppet configuration
might count as a weak form of curation (creating a list assigns
value).

> 2] Package the entirety of MELPA as a single debian package, and remove
> the package.el functionality of external downloading (hear me out, please...)
> 
> 2.1] A user-account could always 'opt-in' to over-ride that policy by
> copying 'package.el' from an external source.

Already implemented on a per-elpa package basis, see above.

> 2.2] This would allow debian to curate all MELPA packages using a blacklist
> method of patching the *single* debian package (ie. to remove a MELPA
> component deemed insecure / unsafe), much simpler than managing n
> < zillion small debian packages.

That's not curation, that's replication with a blacklist.  The
following process is, at best, weak curation: 1) build a whitelist 2)
maintain this whitelist by adding and removing elements.  Finally, no
one is going to do a copyright review for the entirety of MELPA, so
the entirety of MELPA will never be part of Debian...nor should it
be. [3] Unmaintainable mega package that is impossible to QA as a
whole.

We dropped a handful of packages from emacs-goodies-el that were below
the 20th percentile of downloads counts, even though they were on
MELPA.  If a user misses one we'll bring it back of course :-)

> 2.3] On large enterprise debian installations (eg. universities), this
> would save a lot of redundant bandwidth and storage, since all of MELPA
> would already be local.

"Every package" is a massive exploitable attack surface (and source of
bugs) and will slow down package upgrades and Emacs initialisation,
not to mention impossible to QA.  A MELPA mirror or a web cache would
also save bandwidth.

> 2.4] Currently, if a debian administrator does want to locally offer all
> MELPA packages that are currently packaged by debian, is there even a
> way to simply do that? I see no meta-package that brings in all of them,
> and the naming convention is inconsistent.

This should do the trick
  apt install elpa-.*

Package-foo might still exist as a transitional package to
elpa-package-foo.  Please mention a few packages (from MELPA) that
don't have a corresponding elpa-package.  Those are outliers that need
to be elpafied.

> 2.5] Debian could similarly address the policy conflict between MELPA
> and emacswiki users such as Drew, by curating a similar single curated
> package for emacswiki content (maybe in that case a lot of red-ink
> blacklisting to happen for all the very old cruft that might be there,
> but that would be a one-time operation, and could be simplified by using
> a modification date cut-off).

https://github.com/melpa/melpa/issues/2342

To the best of my knowledge, this is not going to happen in Debian
either.

Yes, curating a blacklist is a weak form of curation; however,
curating a blacklist against an unbounded package set is more work
than curating a (bounded) whitelist...and emacs-goodies-el was the
package that held curated emacswiki content.  AFAIK it also curated
lisp files from mailing lists and personal web pages before that.
Transitioning away from years of history and uncountable hours of hard
work maintaining this monolith towards a set of packages is 86%
complete.  Curation is a more involved process than maintaining lists.

P.P.S. You mentioned you're at debconf?  To meet the team,
#debian-emacs on irc.oftc.net

Cheers,
Nicholas

Attachment: signature.asc
Description: PGP signature

Reply via email to