> The traditional view that swimmers naturally gravitate toward swimming because of preexisting respiratory disorders has been challenged
Lolwut. Anybody who could believe that has never been a swimmer. Of course aspirating drops of pool water, and the chlorinated air lingering above pools, is going to be a lung problem. Why in the world would anybody with preexisting respiratory issues gravitate towards swimming? That's ludicrous.
> The traditional explanation for this higher prevalence rate is one of selection bias. The suggestion that swimming is a more suitable activity compared to both cycling and running in asthmatics5 is not surprising. For example, the hydrostatic compression effect of water can reduce the effort required to generate expiratory flow,
Their code is executing with a third party kernel, trusting that but not trusting the notification system which sits way above hierarchically seems like a very arbitrary delineation.
I've found that the best way to deal with this complexity is to ensure that any concurrent work is done in a fire-and-forget kind of style. Concurrent work is submitted to a IntentService (possible backed by a thread pool instead of a single worker thread to speed things up) and if it needs to talk back to the UI it does so via a local sql-db or similar construct. That way the UI can die and get restarted indepedently of the worker service and the worker service can update UI state without having to care about the UI existing or not.
This looks like absolutely the best approach, but there's one thing I don't like about it: communication between IntentServices and the UI thread feels so... wasteful. The sanest way to do it, I think, is keep communication to a minimum, relying solely on the local DB as a source of information. But then every operation you do to fetch remote data immediately results in at least a couple of DB operations (store it, read it) and a ton of serialization. As far as I know, there's no simple way to pass an object from the service to the UI.
> As far as I know, there's no simple way to pass an object from the service to the UI.
They are in the same process, you can communicate between them through all the normal Java mechanisms. For example, your UI can just register & unregister a callback on the service directly in its start/stop methods (or in onVisibilityChanged if you'd rather do this in a View instead)
Oh, that's better then. In documentation they always point you towards using complicated mechanisms for communication, but I suppose that only applies to services running in different processes. Thank you for the clarification.
Oracle sued over Google reimplementing code that was under the GPL (OpenJDK) under the Apache 2.0 license (Apache Harmony). Google recently switched to the GPL code because of it. In the case of ZoL, the code is derived from the original code and is under the original license. The idea that ZoL is somehow more at risk is pure FUD.
My understanding is that the risk is mostly the other way around: it infringes Linux' GPL license (see https://sfconservancy.org/blog/2016/feb/25/zfs-and-linux/). Would Oracle have grounds to sue as a Linux copyright holder? They have successfully made API copyrightable, so they clearly have competent lawyers.
There are a few people who think that. There are plenty of others who do not. Those in charge of reviewing licensing in Linux distributions that have adopted it are generally of the opinion that it is okay, especially those in charge of Sabayon and Ubuntu. Gentoo came to similar conclusions long before them (>4 years before Ubuntu) and ships it in binary form on the LiveDVD. At this point, there are at least a few dozen distributions that have adopted ZFS in some form or another.
I don't see how anyone could read that and come away thinking that ZFS-on-Linux isn't kosher. Given as simple as it is to compile zfs.ko in the Ubuntu live environment, I'd bet money that's Canonical's backup plan should a literal interpretation of the kernel's license become a legal reality.
And here's to hoping that ZFS becomes so widespread that Oracle themselves end up redistributing it in their version of Linux, like they did with DTrace.