unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Dmitry Gutov <dgutov@yandex.ru>
To: bruce.connor.am@gmail.com
Cc: emacs-devel <emacs-devel@gnu.org>
Subject: Re: Async package.el
Date: Tue, 07 Apr 2015 04:19:30 +0300	[thread overview]
Message-ID: <552330A2.1090406@yandex.ru> (raw)
In-Reply-To: <CAAdUY-LnCy4PdR7GMPkLmN4dF=2Dcjj63iptMrBZgCyYvh+b-A@mail.gmail.com>

On 04/06/2015 05:32 PM, Artur Malabarba wrote:

> Yes. I'm fixing it now.

Thank you.

> I agree.

I'd also prefer to revert to use the sentence case (non-caps).

b6610d55470c7e835472a581977ab6fad537c8b6 did that change, despite having 
the word "refactor" in its message. :P

> Yes. I'm still trying to figure out how to do async tests. Currently all
> package.el tests use a local directory as the repository, but the async
> functions only kick-in for remote repositories.
> Should I use GNU Elpa for the tests? Might that cause hydra to
> unexpectedly complain due to random connection issues?

I think ideally you'd run a small package archive server locally, 
launched with a tiny Python script.

> I agree that's annoying and I have some similar plans. We can change the
> package-installation logic to first download all files simultaneously,
> and then unpack/compile all of them in the proper order. So large
> upgrades would have a significant speed improvement.

Right, that should be optimal, but the requires changes are probably 
non-trivial.

To take this further (and forgive the negativity), maybe we should 
back-pedal on adding the asynchronous interface to downloading package 
archives, too. While doing it in parallel is great, refreshing the table 
of packages right under the user's nose is bound to create problems. 
Here's one:

M-x list-packages, press `i' in the displayed list, wait for the refresh 
to be done, see the `I' disappear.

Can you imagine something like Ubuntu Software Center doing this and 
updating the packages list while the user's interacting with the 
interface? Aside from it being confusing, the more interface elements 
there are, the higher are the odds of this kind of update breaking 
something.

While `list-packages' is far from complexity of analogous tools, maybe 
we should walk in that direction without having to support the 
complexity of asynchronously updating the packages list.

The slowness of `list-packages' launch could be tackled in different 
ways. We want to have up-to-date information, but we don't have to:

- Update it each time `M-x list-packages' is run. Doing it only once a 
day, by default, should be sufficient for most uses. GNU ELPA is updated 
less often than that anyway.

- Wait until the user invokes `M-x list-packages' to update it. We could 
do it while Emacs is idle. Of course, we user might end up not doing 
anything the packages in the current session anyway, so it'll require 
some experimenting. Maybe check that `M-x list-packages' was called at 
least once since the idle update, and, conversely, still perform the 
synchronous update at the beginning of `list-packages' if the archives 
haven't been updated for a while.

Both approaches should also lower the packages archives' server load, at 
the cost of being slightly less up-to-date.



  reply	other threads:[~2015-04-07  1:19 UTC|newest]

Thread overview: 40+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-04-06 10:46 Async package.el Artur Malabarba
2015-04-06 13:53 ` Dmitry Gutov
2015-04-06 14:32   ` Artur Malabarba
2015-04-07  1:19     ` Dmitry Gutov [this message]
2015-04-07 21:46       ` Stefan Monnier
2015-04-08  1:49         ` Dmitry Gutov
2015-04-08 13:32           ` Stefan Monnier
2015-04-09  1:49             ` Dmitry Gutov
2015-04-09 14:06               ` raman
2015-04-09 14:22                 ` Rasmus
2015-04-09 14:50                   ` Artur Malabarba
2015-04-09 14:53                     ` Artur Malabarba
2015-04-09 15:19                   ` async message Ivan Shmakov
2015-04-10 14:58                     ` raman
2015-04-10  1:32                   ` Async package.el raman
2015-04-09 18:18                 ` Stefan Monnier
2015-04-10 15:00                   ` raman
2015-04-12  0:46                   ` Artur Malabarba
2015-04-12  3:53                     ` Stefan Monnier
2015-04-07 23:26       ` Artur Malabarba
2015-04-08  2:19         ` Dmitry Gutov
2015-04-08  9:43           ` Artur Malabarba
2015-04-08 16:02             ` Dmitry Gutov
2015-04-08 18:39               ` Artur Malabarba
2015-04-09  2:10                 ` Dmitry Gutov
2015-04-09 10:14                   ` Artur Malabarba
2015-04-09 12:34                     ` Dmitry Gutov
2015-04-12  1:38                       ` Artur Malabarba
2015-04-07  5:31     ` Daiki Ueno
2015-04-07  9:13       ` Dmitry Gutov
2015-04-07  9:59         ` Artur Malabarba
2015-04-07 11:22           ` Robert Pluim
2015-04-07 12:33             ` Artur Malabarba
2015-04-07 14:29               ` Robert Pluim
2015-04-08  2:21                 ` Artur Malabarba
2015-04-07 21:50           ` Stefan Monnier
2015-04-08  5:27           ` Daiki Ueno
2015-04-09  8:38           ` Achim Gratz
2015-04-09 13:09             ` Stefan Monnier
2015-04-07 18:06 ` Stefan Monnier

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=552330A2.1090406@yandex.ru \
    --to=dgutov@yandex.ru \
    --cc=bruce.connor.am@gmail.com \
    --cc=emacs-devel@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).