statically icon indicating copy to clipboard operation
statically copied to clipboard

Statically roadmap, feature requests, technologies, & resources

Open fransallen opened this issue 4 years ago • 14 comments

This will be used as a roadmap, feature requests, and resources for Statically.

Help us make a nice service for fast & better static files!

Do you need a new feature on Statically? Let us know here!

Roadmap

  • [x] Support GitHub via our raw CDN
  • [x] Support GitLab via our raw CDN
  • [x] Support Bitbucket via our raw CDN
  • [x] Imgpx, image CDN via custom endpoints
  • [x] Use Cloudflare, CDN77, BunnyCDN, & Fastly as main CDNs
  • [x] Support WordPress SVN via our raw CDN
  • [x] Screenshot, capture web-pages from URL and then turn it into a PNG or JPG image
  • [x] Favicons, get favicon from a domain
  • [x] Libs, CDN for any web frameworks
  • [x] Flags, CDN for country flags
  • [x] Images from git repos via our Imgpx's image processing to support resizing, optimization, & enhance security from non-image files
  • [x] WordPress Plugins
  • [x] Open Graph Image as a Service
  • [x] Support ?env=dev to our raw CDN for 5 minutes Cache-Control
  • [x] Simple statistics page in main website, expect more detailed stats soon
  • [ ] Use dedicated origin for Imgpx with dedicated IP subnet
  • [x] Use our own internal DNS to monitor queries and avoid abuse on the custom endpoint side
  • [x] New website, see https://github.com/marsble/statically-web
  • [x] Use NS1 as primary DNS

Accepted feature requests

  • [x] Support IPv6 for all resources
  • [x] Imgpx: enable auto_format=false to force original mime types delivery (by @curbengh)
  • [ ] Imgpx: user agent detection for webp delivery (by @curbengh)
  • [ ] Imgpx: more image transformations (by @curbengh)
  • [ ] npm CDN (by @curbengh)
  • [x] Imgpx: enable format=webp to force webp format delivery
  • [ ] Imgpx: automatically convert gif to (animated) webp

Technologies

  • Cloudflare as main CDN
  • CDN77 as main CDN
  • BunnyCDN as main CDN
  • Fastly as main CDN
  • NS1 as primary DNS
  • Uptime Robot as monitoring platform
  • Netlify as main website hosting & CDN
  • RunCloud to manage and deploy APIs & internal apps

Resources

The following are some good sources for knowing more about Statically:

fransallen avatar Aug 13 '19 09:08 fransallen

I have a feature request on Imgpx.

Currently it automatically converts image to webp, provided "Accept: image/webp" header is sent.

However, if the original image is a webp and the header is missing, Imgpx would convert it to jpg instead.

Perhaps Imgpx can provide an option/url parameter (e.g. ?auto_format=false) to opt-out of conversion? That option can also apply to opt-out jpg/png -> webp conversion.


There is a use case for that option. For example, I embed an image with regular resolution, user can open the link to get the full resolution,

<a href="full-res.webp"><img src="low-res.webp"></a>

When accessing a link through <a>, browser does not send Accept: image/webp header, hence the browser wouldn't get the webp and receive jpg instead.

My suggestion is to give an option to override that behavior, so webp is always served (when accessing .webp) regardless whether the header is sent.

curbengh avatar Aug 27 '19 03:08 curbengh

Previously, we thought that auto-jpeg-ing webp image bases would be a solution for website owners providing .webp content to users who might be using browsers that don't support webp, but there doesn't seem to be a reason to do it again today, because we are most want auto-webp.

?auto_format=false would be a good option. But let me see what can be done from the backend, and will back to you soon.

fransallen avatar Aug 28 '19 12:08 fransallen

Unfortunately, auto-jpeg is still required, notably webp currently is not supported by Safari.

Alternatively, Statically could rely on user agent instead of image/webp header, so auto-jpeg if Safari or unsupported browser or old browser is detected. auto-webp could also use that logic.

Another feature request is image transformations (or even video!) (resize, crop, rotate, etc). Useful for responsive image (e.g. <img srcset>). This is a huge one, so feel free to ignore it. I would love to see Statically disrupts image management industry (Cloudinary, Imgix, Kraken...).

curbengh avatar Aug 29 '19 02:08 curbengh

As for Libs, I think it's better to mirror npmjs than cdnjs. cdnjs has strict inclusion criteria, there are currently >150 open PRs. By mirroring npmjs, the libraries in those open PRs would also be included, along with thousands of libraries not found in cdnjs.

I'm aware that user can use github mirror instead, because npm libraries mostly originate from github repos. But doing version update around git commit id is rather un-intuitive in a production environment.

To illustrate, currently I'm using loading-attribute-polyfill library which is published in npm. As it's not included in cdnjs yet, I have to use github mirror instead. Looking through commit history, I know that 6e12e0c corresponds to v1.1.0. When v2 is released, I would have to find out the commit id that correspond to that version.

curbengh avatar Aug 29 '19 12:08 curbengh

notably webp currently is not supported by Safari.

Just forget about it for a moment :)

Let's keep auto-format enabled by default. And yeah, I just enabled auto_format for .webp, can be used like auto_format=0 or auto_format=false :heavy_check_mark:.

Example: https://cdn.statically.io/img/www.gstatic.com/webp/gallery/1.sm.webp?auto_format=false

Alternatively, Statically could rely on user agent instead of image/webp header

This one is that I personally wanted, but listing what browser, what version might be a routine work in the end. Let's put this on top first and see what we can do next.

Another feature request is image transformations (or even video!)

Yup, this is a big one! Probably we can do some simple image transformations on Statically, let's put this on top. Feel free to check out Imgpx Docs if you haven't yet, it contains about image modification; resize, crop, filter, remove background, and more.


As for Libs, I think it's better to mirror npmjs than cdnjs.

We did look at npmjs, this is something we might do in the future, let's put this on top!

fransallen avatar Aug 29 '19 23:08 fransallen

Let's keep auto-format enabled by default. And yeah, I just enabled auto_format for .webp, can be used like auto_format=0 or auto_format=false ✔️.

Example: https://cdn.statically.io/img/www.gstatic.com/webp/gallery/1.sm.webp?auto_format=false

AWESOME

This one is that I personally wanted, but listing what browser, what version might be a routine work in the end. Let's put this on top first and see what we can do next.

yeah, keeping track of browser UA—especially those exotic ones—is indeed a grunt. But since auto_format is here, I think Statically can still stick with header method.

Yup, this is a big one! Probably we can do some simple image transformations on Statically, let's put this on top. Feel free to check out Imgpx Docs if you haven't yet, it contains about image modification; resize, crop, filter, remove background, and more.

AWESOME

curbengh avatar Aug 30 '19 02:08 curbengh

Also added support for format=webp parameter, this will forced Statically converting image to webp format. Expecting more parameter options soon.

fransallen avatar Sep 02 '19 20:09 fransallen

On the url parameter, can I suggest to use 0 | 1 instead of false | true for boolean?

Google currently uses 0 | 1.

I know the suggestion is a breaking change, but once more and more parameters are introduced, 0 | 1 at least can help shorten a bit.

curbengh avatar Sep 03 '19 02:09 curbengh

@fransallen,

first things first: thank you ever so much for statically!

I was wondering if uploading is supported, specifically with a bundler and their plugins. e.g: https://github.com/toxic-johann/webpack-cdn-upload-plugin

Integrating the bundler/plugin within a project would be so convenient and much more efficient.

please and thank you

gacallea avatar Nov 25 '19 13:11 gacallea

Hello, maybe you/i could add a section on how to self host this, what do you think about this?

DevFelixDorn avatar Dec 05 '19 08:12 DevFelixDorn

I would like to suggest a feature request for the screenshot feature. It works well but not for those pages which has CSS animations on the content/section. That ends up with incorrect screenshots. How about adding a delay timer parameter to take the screenshot? Or wait for the page to load fully before taking a screenshot?

munirkamal avatar Dec 09 '19 05:12 munirkamal

@fransallen you should mark wordpress as done.

Great work 👍

curbengh avatar Mar 23 '20 07:03 curbengh

Hi @curbengh, thanks for reminding me. Checked.

Also thinking maybe I would move this to a more dedicated place like on the website, and bring it closer to Docs for better discovery. Will provide all updates ASAP.

fransallen avatar Mar 26 '20 10:03 fransallen

Network expansion (increase of nodes) There are content distribution networks that help make the service more accessible. 1- 5centscdn.com with more than 1100 pop sites (akamai) 2- arvancloud.com suitable for distribution in Iran and India (many pop sites in Iran and India) Using the multicdn ns1 method, you can have a network with more distribution.

javadalmasi avatar Feb 16 '21 21:02 javadalmasi