GSoC 2019 idea: Plone Service Workers

According to Google, a service worker is a script that your browser runs in the background, separate from a web page, opening the door to features that don't need a web page or user interaction. Today, they already include features like push notifications and background sync.

Benefits of Service Worker

  • Improve load time
  • Offline Web interaction / Offline access
  • Push notification
  • Pre-fetching of resources
  • Additional caching mechanism to improve load time
  • Improve PWA performance and user interaction

See more: https://developers.google.com/web/showcase/2016/service-worker-perf

Service Worker implementation in Plone

  • SImilarily to the notify content rule in Plone, a push notification (service worker) content rule can be used to send notifications to users when new content is created even when they are not on Plone sites. (I already started to work on this feature)
  • Improve load time using pre-fetch and caching features of Plone.
  • Offline access to Plone websites
  • Improve Plone PWA features via service worker

Aims

  • Improve Plone's load time
  • Improve user interaction and accessibility to new content
  • Allow Plone sites to interact with users even when they aren't on the internet nor on the website

Skills required

  • JS
  • Python

One thing we're using service workers for and should be included in any Plone core approach is logouts. When a user logs out in one tab, the logout should propagate to all tabs.

2 Likes

I like ServiceWorkers (SW), but i thing the description needs a bit more details and a more norrowed focus on specific features, related to SW. Notifications are a good example and need to specifiet in greater detail. Most of the other things are more likely to be integrated into client side frontends as Volto or the Angular SDK for Plone.
So I propose to rewrite this to a modern notifications project, which extends the exingting UI with a nofification component. This component could be implemented, so that it's also useable in other UI's like Volto & co. The backend part (Rest-API) will be anyway.

We worked a lot with service workers and it is rather meant as an improvement of an already optimized stack than a solution to solve the problems of the stack itself. Integrating a Service Worker in Volto is a no-brainer but we did not see the necessity yet. You have to be clear what you want to accomplish and how. Just implementing a Service Worker for Plone is not sufficient as a GSoC description IMHO.

The standard Plone frontend has more urgent issues in my opinion. I'd rather focus on @datakurre's Webpack approach first. Not sure if he is available as a mentor though. Once we are in the Webpack land with standard Plone, we can focus on improvements like service workers.

I agree with MrTango that we need more details what we want to accomplish with this.