galaxyproject / galaxyproject/training-material

Develop post-processing step to generate responsive images

Open
#3,095 0 comments 0 reactions 0 assignees View on GitHub
help-wanted
Dominant language
HTML
Stars
367
Forks
1.1k
Avg merge
16h 27m
Merged PRs (30d)
49

Description

Mostly relevant for tutorials, but we have a lot of images, some of them quite large, that can eat up mobile bandwidth. We can significantly optimise this by using [responsive images](https://developer.mozilla.org/en-US/docs/Learn/HTML/Multimedia_and_embedding/Responsive_images) and having multiple versions of images based on the single source image, just re-sized for smaller width devices or so.

Each of those variant images could be generated and uploaded to the s3 bucket where we already are storing content. There are existing plugins for this:
- https://github.com/nhoizey/jekyll-cloudinary/ - requires a paid service
- https://github.com/trishume/enfasten - might work for us
- https://github.com/netlify/jekyll-srcset - requires netlify

maybe we can use or adapt one of those for the GTN's use.

**Goals:**

- don't re-build images if they don't need it.
- Work on output source (or hook into existing jekyll-figure plugin) so zero user-changes are needed
- optimise the images further? maybe webp conversion?

Contributor guide

Open the contributing guide

Research direction

Start by reviewing the existing Jekyll output processing, the jekyll-figure plugin integration, and the S3 content-upload path mentioned in the issue. Compare the listed plugins and define how source images should produce and upload responsive variants without rebuilding unchanged images; done means the generated output uses those variants with no user changes.

Written by the indexing model from the issue text.

Assessment

Tech stack
aws, jekyll
Domain
build-system, documentation
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.