[conspire] 21st century web platforms

Rick Moen rick at linuxmafia.com
Wed Feb 19 19:23:29 PST 2020


Quoting Ruben Safir (ruben at mrbrklyn.com):

> One of the other points we were making was about IOS having a sandbox..
> 
> that is tough for me to have faith in because until recently, they
> didn't even have full pre-emptive multitasking on an iphone.

You keep saying that, but it's not _quite_ right.  Unfortunately, my
domain knowledge on this is slender and my desire to learn more is quite
low, because I really don't have any personal interest in iOS at all.
So, if you want to argue after this current exchange, you'll have to do
so with someone who gives a damn about the subject.

That having been said, it emerged as a slightly pared down, specialised
repackaging of OSX, which in turn is a slight update of and paint job on
NeXTStep, which was a proper (albeit proprietary) BSD.  And that means
it had inherent pre-emptive multitasking and multiuser abilities at the
core OS level -- with app access to those abilities restricted not by
the OS fundamentals but rather by vendor policy.  To elaborate:

The initial release of iOS (or 'iPhone OS', as it was initially called)
lacked any provision for third-party code completely (except for Web
apps).  iOS 2 and later narrowly opened it up to outside developers (and
suddenly there was an SDK).  But ability to switch among apps at runtime was
deliberately and artificially limited, i.e., in iOS 3 literally only one
active process was permitted at a time by the OS scheduler.  Why?
Because Apple was aware that the hardware was too pitifully weak and
would look terrible in front of critics if it bogged down and/or drained
the battery unexpectedly.

iOS 4 (2010) yielded a bit on this harsh policy, in part because it
seemed particularly senseless on iPads, even more than on iPhones.
Multiple active application processes were for the first time permitted
by policy (and, to reiterate, would have been supported by the
underlying OS but for the policy all along), but imposed (again)
some fairly strong artificial limitations on developers' background tasks, 
e.g., music apps were now permitted to continue to play in background
without limitation, VoIP apps were allowed to remain fully active in
background if there was an active call, navigation apps could continue
to update location state in background but not carry out other activity,
apps being sent to background could invoke system services to pop up
user alerts at a later set time before being forcibly made quiescent 
with frozen app state, and other applications were permitted to finish 
limited tasks in background such as file uploads before being forcibly
made quiescent with frozen app state.

To reiterate, this wasn't because iOS couldn't do full preemptive
multitasking, but rather because Apple had a reasonable concern about 
the chaotic effect and bad reputation that would result if those
abilities were made system standard to all comers.

That was the situation in _2010_.  Since then, the policy has been
mostly maintained to the best of my understanding and (very limited)
interest, with some further relaxing eventually permitted such as
permitting third-party applications to update themselves in background,
too.

So, to sum up, if you meant merely that code on the devices running iOS
has not been _permitted_ to have full access to preemptive multitasking,
you are correct.  OTOH, if you meant that iOS was inherently incapable
of that function (more or less what you said), then you are mistaken.


And I'm a bit bewildered about _why_ you are so interested in this bizarre 
subject -- seeing that it revolves around certain vendor-captive embedded 
hardware and a proprietary operating system.  (To reiterate, I am _not_ 
interested particularly.  I'd rather talk about Linux and open source,
generally speaking.)




More information about the conspire mailing list