unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Artur Malabarba <bruce.connor.am@gmail.com>
To: Dmitry Gutov <dgutov@yandex.ru>
Cc: emacs-devel <emacs-devel@gnu.org>
Subject: Re: Async package.el
Date: Wed, 8 Apr 2015 10:43:53 +0100	[thread overview]
Message-ID: <CAAdUY-Jm9CkqKLJVnEWymT8Q7oQQ4QSe_Tu-KYkGou+0Ewnw0g@mail.gmail.com> (raw)
In-Reply-To: <55249033.6050301@yandex.ru>

[-- Attachment #1: Type: text/plain, Size: 3142 bytes --]

> The first example runs a server that will serve the current directory:
http://www.linuxjournal.com/content/tech-tip-really-simple-http-server-python
>
> We don't need much more than that, right?

I think that should be enough, thanks.

>> I agree this needs addressing, but it will take a lot more than that for
>> me to backpedal on the archive refreshing part. I'm actually very happy
>> with the resulting UX. (Unlike the package-installation part, which I'm
>> still not thrilled about).
>
>
> Personally, I'm a little annoyed with the blinking. And the small
stuttering when the table is being regenerated.

Next in my list of TODOs is to change the behaviour when package-menu-async
is nil. Right now, it just reverts to the old behaviour (sequential
downloads + hang interface), but I plan to make it do "parallel downloads +
hang the interface", which might be more to your liking.

> And the fact that I can miss the message when the archives get refreshed
just by interacting with Emacs (maybe flooring C-n right after the buffer
is displayed), and then remain vaguely unsure the refresh has happened.

Also next on the list is a visual cue to indicate there's an ongoing
operation. Something like this:



So there should be no doubt about when has the update finished (this
spinner will be local to the packages buffer, so it won't distract you if
you're trying to work). I'm not sure how many will find this "useful
information" and how many will think it "annoying distraction from hell".

> Here's a more subtle scenario, by the way (but easier to fix): M-x
list-packages, then PageDown. Wait for the refresh -> see the current line
get scrolled to the middle of the window.

>
>
>> One way to address this is to simply not regenerate the buffer if
>> anything has been marked. In this situation, the "refresh finished"
>> message can be accompanied by a "hit g to revert buffer" message.
>> This would be easily scalable. Whenever a new feature is added which
>> involves some semi persistent information, we'd just extend the
>> definition of "anything has been marked".
>
>
> I guess that would work.
>
>
>> A second, more sophisticated way would be to not revert the buffer at
>> all. Instead, we carefully update the information currently displayed in
>> the buffer. Though this is more troublesome, of course.
>
>
> And more dangerous, at least theoretically. Here's a made up scenario: I
select a package, the archive updates, it contains a new version of the
same package, which has unresolved dependencies (a situation which we mark
as "incompatible"). Whether we transfer the installation mark or not, the
user could install the package they wanted (at least if the archive server
still contains the file); now they can't. It might have even jumped away to
the bottom.

If I understand the way archive servers work, they all just offer the
latest package version. So, in this scenario, trying to install the old
(compatible) version would lead to 404 error anyway. If that's the case,
then, arguably, removing the user's install mark would be the correct
choice (although an explanatory message might be in order).

[-- Attachment #2: Type: text/html, Size: 3946 bytes --]

  reply	other threads:[~2015-04-08  9:43 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
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 [this message]
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=CAAdUY-Jm9CkqKLJVnEWymT8Q7oQQ4QSe_Tu-KYkGou+0Ewnw0g@mail.gmail.com \
    --to=bruce.connor.am@gmail.com \
    --cc=dgutov@yandex.ru \
    --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).