meetuparchive / meetup-web-platform

A collection of Node web application utilities developed for the Meetup web platform
MIT License
27 stars 9 forks source link

Meetup 2020 Responsive Web App - outline and discussion #274

Closed mmcgahan closed 4 years ago

mmcgahan commented 7 years ago

This issue is a long-term discussion reference. We will create tickets and organize the priority of work in relation to other ongoing product/feature/platform requirements, but this issue should remain open as we move toward a cutting edge web application

Functionality

progressive enhancement

offline-first

HTTP/2

Optimistic UI updates

Advanced: true native-app replacement

Questions

  1. What is the role of the MWP library in this effort?
  2. What is the role of SDS?
  3. What is the role of the starter kit? (going away)
  4. What is the role of the systems team/EE (esp. WRT HTTP/2)?
  5. How do we create development patterns that make these approaches easy/automatic?
  6. What are the objective/quantifiable success metrics? (these will appear alongside tickets, but it's important to keep the question in mind)
  7. How do we simplify maintenance of RWA features/capabilities?
  8. What is the role of product teams in building platform tech?

References

eilinora commented 7 years ago

One more question for the list maybe

mattkime commented 7 years ago

We could also have a section detailing how we relate to the consuming repos, what functionality we provide, and how its exposed.

mmcgahan commented 7 years ago

@mattkime that's definitely worth a discussion - what were you thinking?

mattkime commented 7 years ago

@mmcgahan Actually, I think I'm happy with how our conversation about the upstream repo went and your ideas on meetup-web-platform modularity. But it would probably be a good idea to make those ideas an explicit part of the 2020 vision, although they'd be be a supporting detail.

mattkime commented 7 years ago

Oh - here's a big one thats been pushed to the side - live page / content updates.

Previous conversations about 'pushing' data to the browser or using some sort of pub/sub system seem too burdensome. Alternatively we could have components that query data on a specified interval.

mattkime commented 7 years ago

Where does accessibility fit in?

mmcgahan commented 7 years ago

Yeah, live UI updates is definitely a big feature, and is one of the things that HTTP/2 is designed to deal with in modern web apps through Server Side Events (SSE) - it's one of the bullet points under the HTTP/2 heading in the issue description

'live' data - when DB changes, client UI changes

We shouldn't need to do any sort of long polling or interval-based querying. Even websockets aren't a great fit for most of what we would want, but here are a couple of good resources that cover the topic in more depth:

https://www.infoq.com/articles/websocket-and-http2-coexist https://stackoverflow.com/a/5326159

A full implementation will require some investigation (and a clear product spec), but there are Hapi plugins that can help, e.g. https://github.com/mtharrison/susie

mattkime commented 7 years ago

Speed-as-feature - monitoring & dev tools, set baseline goals

mmcgahan commented 7 years ago

A topic that feeds into a lot of this discussion end to end caching, which @willh-meetup has mentioned will be a big part of every replatforming team's H2 goals - we can help identify where data is cached and how caching rules get communicated downstream, and then designing the platform to interpret and consume those caching rules while applying internal caching where desired.

That sort of project should probably start with a diagram to identify all the pieces and their relationships - most of it will just be services and the HTTP headers they use to set time-to-live for the data they supply, but there might be some other elements that need to be accounted for.

I'm eager to get into that effort because I think it will be able to provide a lot of big real-user metric performance gains.

stale[bot] commented 4 years ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.