google / WebFundamentals

Former git repo for WebFundamentals on developers.google.com
Apache License 2.0
13.86k stars 2.57k forks source link

Create guidance for Progressive Web Apps #2320

Open PaulKinlan opened 8 years ago

PaulKinlan commented 8 years ago

Goals

The developers will learn:

This is bit below is being worked on.

kenchris commented 8 years ago

I think that developers would love to experiment with these things themselves, so maybe some info on how to get it working on appengine etc would be useful.

I recently ported my Web NFC demo to appengine and added http2 support, auto-selection of images based on DPR and an app shell: https://weneed-1147.appspot.com/

Talking to people working as front end developers, their hard problem is being able to convince their clients that there is a value in all this, because their clients just want something which works 100% the same way across common browsers (incl IE9 etc) and they want it fast. We need to explain how to make progressive web apps, which even progresses from old browsers into newers ones, then onto the launchers etc. and we need to have simple clear presentations that these developers can reuse themselves to convince their clients of the value in doing all these things.

This here is a very good presto explaining some of the issues from the frontend developers side: http://www.slideshare.net/cheilmann/the-state-of-the-web-helsinki-meetup

The above should also discuss responsive design, as it is important that the app shell is also responsive if the main content is. Also you may want to mention screen orientation lock which can be very useful for games

Btw, I wish we could stop calling what Reach does for server rendering - it is not really rendering anything on the server but doing DOM diffing, at least AFAIK

jpmedley commented 8 years ago

"Questions a developer will ask: What is the set of technologies involved? How can I get some background in each of these?"

Should it say, "what set of technologies and techniques?" Responsiveness, app-shell construction, and linkability are more about how than what.

PaulKinlan commented 8 years ago

@jpmedley good point, this was originally copied from the internal doc and I have been re-jigging it as I go, I think they are mostly captured in the following bullet points.

deanhume commented 8 years ago

Hey @PaulKinlan - this looks great!

I'm sure this will get covered in the starter pack, but it would be good to see a walkthrough for debugging Progressive Web Apps added to the guide.

PaulKinlan commented 8 years ago

@kenchris - great feedback, will add some of these in. One quick question, in terms of convincing clients, what presentation and data do you think is needed? Is it data about why mobile and web is important or is it why this architecture is useful?

PaulKinlan commented 8 years ago

@deanhume great feedback. Silly question, is debugging a prog-web-app any different from debugging a normal web? Or is it now we have SW we have to manage that as well? Or is it more?

Regardless, I think we are missing a huge swath of testing guidance in our work.

kenchris commented 8 years ago

@PaulKinlan From what I've heard, companies often order a website as one thing, and demands the required features and where it should be supported. This often leads to developers having to choose the lowest denominator and/or add extra code (performance penalty) to make it seem to work the same way across browsers.

I think it would be useful with a presto explaining why you don't need to offer exactly the same experience across all browsers (new and old) - what the penalty is when you try doing so, and what you gain if you instead progressively enhancing the experience.

Many companies believe that they must offer the same experience everywhere and that they need to support all browsers out there in order to reach as many people as possible, but often they do not understand the cost of attempting to do so.

Last I interviewed a new GDE, we were talking about Service Worker, and he mentioned that they tried pitching that to their clients, but there first questions were always "does it work everywhere?" and when the answer is "no, currently in Chrome", they don't care, because they don't really understand how catering for specific platforms/browsers helps them. Maybe it is also because they see it as "one browser" thing, instead of a feature that with time will just work everywhere and benefit their other platforms as well.

hemanth commented 8 years ago

"does it work everywhere?" and when the answer is "no, currently in Chrome", they don't care, because they don't really understand how catering for specific platforms/browsers helps them.

I second that strongly!

People will give a positive response once they see a sample PWA but after they hear about the partial support they backup...hoping that the situation will change soon.

paullewis commented 8 years ago

Note from an offline convo with @PaulKinlan, we should aim to include 60fps UI patterns, e.g. pinch-zoom, fling, pull-to-refresh(?).

jaisanth commented 8 years ago

+1 to @paullewis

Talking about RAIL, FLIP, etc. would really help people realize how slick your PWA can get.

PaulKinlan commented 8 years ago

@paullewis will add this in. @jaisanth agreed. will add it into task list and assign to @paullewis to work out what to do. :)

PaulKinlan commented 8 years ago

@paullewis @jaisanth I have created a section of tasks for this - super highlevel, but we can start to work from there.

PaulKinlan commented 8 years ago

@kenchris I am putting the lowest common denominator piece in now as a task.

LayZeeDK commented 7 years ago

So... What's happening with these tasks?