5

At an operating system level, mobile operating systems support the notion of push notifications or a socket level 'persistent' communication with an app, whenever it is online.

Why have the major computer operating systems (OSX, Linux, Windows) embraced this idea at an OS level as a higher level abstraction. This can still be done in an app for sure.

Is there a difference in how we perceive something thats 'pushed' on to our mobile devices (with or without our knowledge) vs something that maybe 'pushed' onto our laptop or home pc?

Is it more to do with how the 'privacy' and permissions structure for an app is defined in a mobile OS as compared to how for a desktop app, its not that well-defined and its not that granular?

FrailWords
  • 161
  • 3
  • 1
    MacOS X does support push notification service (APNS) since Lion. The *reasoning* behind push to an OS service instead of poll through background application is, however, rather more battery life than anything else. – tofro Sep 17 '16 at 18:37
  • 1
    Windows supports notifications now too. They're available via Universal Windows Platform. – RubberDuck Sep 18 '16 at 00:39
  • Email isnt push? – Ewan Sep 18 '16 at 21:37
  • @Ewan Well most email clients just poll the server, so... no? – fabienbk Sep 18 '16 at 22:52
  • clients might poll, but email is pushed to your server. which originally would have been the same box you ran your client on – Ewan Sep 19 '16 at 08:09
  • 1
    Probably because those notifications are fucking annoying and most of the systems we use on the desktop were invented before the corporate stranglehold on the Internet. – Miles Rout Sep 20 '16 at 21:35

1 Answers1

3

The term "push notifications" is only on mobile platforms. We had the concept long before smart phones, before even cell phones.

When you push you have data and you want that data to go somewhere else.

When you pull you don't have data and you want to get it from somewhere else.

Problem is: who is "you"? There is no push without a pull. No pull without a push. So why call it a push? It's about who's the active participant. We describe the transfer from that perspective.

When I load a web page I'm pulling down data. The web page is pushing to me. But since I decided when this was happening we describe my role in this. The pull role.

When I sit on a web page and watch comments pop up I didn't decide when they'd come to me. I was just sitting here. I didn't actively pull them. They were pushed.

Ajax is one way that sort of thing is accomplished. There are other ways but it predominates the web.

In the object world this trick is called events. The observer pattern lets you tell an object, hey, let me know when you change. I don't want to keep asking you. That is, actively pulling from you. I'd rather passively sit here waiting to hear from you.

Repeatedly asking/pulling, is called polling. If done poorly it has serious performance consequences. Polling the database, rather the using a messaging or queueing system is a good way to piss off your dba.

Long before any of that we had IRC. We pushed "notifications" to each other with every stroke of the enter key. Before that we had email. Again pushing "notifications" to each other.

The key element in all of this is, if you want to actively push something at me I have to have something ready to passively pull it. Or it goes nowhere.

My question was also more from a 'personalization' point of view and also 'privacy' point of view in the sense of why not as many Mac or Windows apps take this route of using notifications in a highly social and personalized world and how maybe there's still a mindset gap between a desktop OS vs a mobile OS. – FrailWords

Well there definitely is a mindset gap. Mostly because the expectations on a PC were set long ago and expectations change slowly after much kicking and screaming.

The fundamental difference is on a mobile platform each app has a mailbox that works whether the app is running or not. On PC's the app can receive notifications. I get plenty telling me it's time to update. Those "notifications" simply don't show up unless the app is at least running in the background. A big reason this hasn't changed is because it would piss me off. If I'm not using adobe reader right now I don't want to hear from it. So the reader can wait till i'm using it to annoy me.

Of course the flip side is that if notifications HAVE to go through a review process then there is an added check on how annoying they can be. I do like being able to turn notifications off regardless of how the app feels about it. That's only possible to enforce when the app can't simply do it's own notification system. On the PC I'm just used to needing to stop the app from running in the background to shut it up.

candied_orange
  • 102,279
  • 24
  • 197
  • 315
  • 2
    The concept of push notifications is different in the mobile world in that it is a **OS** service that receives the pushes, not some arbitrary application or service that needs to be running in the background. This keeps the number of applications that need to be running low, and such the battery life up. – tofro Sep 17 '16 at 18:52
  • 2
    We had those same needs long ago – candied_orange Sep 17 '16 at 18:56
  • You might want to mention that there is no real "push" in the sense that a server cannot initiate a connection to a client behind a firewall. The connection must always be established by the client. – Frank Hileman Sep 18 '16 at 00:17
  • 2
    @FrankHileman yes and no. Establishing the connection is what makes you a client. Listening for the connection is what makes you the server. I've written executables that are both client and server. We called it peer to peer networking but all it meant was you can do both. Pushing and pulling isn't about who set up the connection. It's about who decided it was time to move the data. – candied_orange Sep 18 '16 at 00:57
  • "When I load a web page I'm pulling down data. The web page is pushing to me. But since I decided when this was happening we describe my role in this. The pull role." I don't think this really describes the difference between "push" and "pull" designs, and confuses the issue. – whatsisname Sep 18 '16 at 05:40
  • To elaborate, "push" and "pull" don't necessarily always go together. A cron job that checks a server for updates then downloads them is a "pull" design, and an update server that SSHs into other machines and updates them is a "push" design. Obviously both require a client-server setup, but push vs pull is a design at a higher conceptual level. – whatsisname Sep 18 '16 at 05:43
  • It's at an orthogonal level. Servers can push and pull. Clients can push and pull. If they couldn't we wouldn't be able to have this conversation. A server doesn't stop being a server because it's moving data the wrong way. – candied_orange Sep 18 '16 at 05:59
  • 1
    @CandiedOrange, your point of "who is 'you'" hits the point through. My question was also more from a 'personalization' point of view and also 'privacy' point of view in the sense of why not as many Mac or Windows apps take this route of using notifications in a highly social and personalized world and how maybe there's still a mindset gap between a desktop OS vs a mobile OS. – FrailWords Sep 18 '16 at 08:39
  • I would refine the distinction as "data being taken (pull)" versus "data being given (push)". In the context of notifications, the difference is whether I fetch (pull) the notifications when I want them, or whether the server gives (pushes) the notifications when they become available. It would also be helpful to distinguish between the initiator of the transfer (used to determine whether it is push/pull as above) versus simply sending/receiving data (confusingly referred to as pushing/pulling data in this answer). – kwah Sep 18 '16 at 14:37
  • 1
    The initiator of the transfer (who I called active) is the one who's roll we describe. If I say this is a pull I mean the "initiator" doesn't have the data and now wants it. If I say this is a push I mean the "initiator" does have the data and wants to send it now. In each case there is something on the other end passively doing the reverse that we just normally never mention. This is all regardless of who initiated the connection. – candied_orange Sep 18 '16 at 14:45
  • @FrailWords please note edit. – candied_orange Sep 18 '16 at 15:07
  • @CandiedOrange - thanks for your edit. I guess its the mindset change more than anything else and I am sure the desktop OS would also drive in this direction of 'always alive' apps and constantly annoying notifications :) but I hope we still have a 'do not disturb me' option :) – FrailWords Sep 18 '16 at 17:59
  • To add a bit of clarification, push is not a magic bullet for performance issues compared to polling. Polling can actually be *more* efficient if you're getting large amounts of data very frequently, such that there's almost always something new to get when you poll. With push in this case, you might end up wasting time and energy switching tasks when you're not ready for more work, but with polling, you can wait until you're actually ready to process the new stuff. – 8bittree Sep 21 '16 at 16:01