← Back to team overview

ubuntu-appstore-developers team mailing list archive

Re: Minimizing icon and screenshot transfer size

 

On Tue, Apr 22, 2014 at 9:47 AM, Martin Albisetti
<martin.albisetti@xxxxxxxxxxxxx> wrote:
> On Mon, Apr 21, 2014 at 8:09 PM, Alejandro J. Cura
> <alejandro.cura@xxxxxxxxxxxxx> wrote:
>> So, there seems to be room for improvement if the scope would pass the
>> desired size in pixels of Icons and Screenshots when making webcalls,
>> and if the server would take that as a hint to return urls to resized
>> images.
>
> I understand the problem.
> The reason we don't already do this, is because programatically
> resizing images without making beautifully crafted images ugly is hard
> and rarely works. In fact, I've had to fight off the increase of the
> default size from 256 to 512   :)
> We already allow users to upload smaller sizes, you could be getting
> those instead when available. In order to increase the chances they'll
> be available, we could add a "generate all sizes" button in the UI for
> developers and let them decide if they're happy with the automatic
> result.
> That way we don't force developers to provide every single possible
> size, but still increase the chance there will be smaller sizes.
>
> If we feel this is a big problem, I'd probably suggest we make smaller
> sizes mandatory (and with file size limits) so they're available when
> and how we need them.

I agree that automatically resized images do not look great, but yes,
allowing to "generate all sizes" sounds like a good option to lower
the barrier for solo developers, so +1 to that.
And setting maximum file sizes for each icon resolution sounds like a
good plan too: quite a few of the icons in the store would benefit
from being jpeg instead of png, for instance. Do we support this?

Now, what would be the best place in our software stack to choose
among the available icon sizes?
We do not want the webservice to be sending the list of all available
icon urls with each result, and we don't want the scope or dash to
have hardcoded icon sizes to choose from, so my suggestion is:

- the dash tells the scope the requested width when doing a search
- the scope passes that to the webservice
- the webservice uses that as a hint to select the next-biggest size
and return the appropriate url.

> I would also suggest following a bit of what's done in websites, where
> you do lazy loading of images[1], prioritise what's visible on the
> screen and start loading the next ones once that completes, in
> batches. The infrastructure may not be available in scopes, but I
> would certainly suggest it gets added to a ToDo somewhere  :)

Afaict, that's already done by the dash: only the visible icons are
loaded, and more are loaded when swiping the results.

cheers,
-- 
alecu


Follow ups

References