Improving the offline updates user experience

Miloslav Trmač mitr at redhat.com
Tue Sep 16 15:36:43 UTC 2014


----- Original Message -----
> Dne 16.9.2014 v 17:08 Miloslav Trmač napsal(a):
> > ----- Original Message -----
> >>> Well, what we would need is:
> >>> 1. Ability to keep multiple versions (both ABI-compatible and
> >>> ABI-incompatible) of a single application or library or service installed
> >>> and running at the same time.
> >>
> >> Other distributions allow to install multiple version of same libraries
> >
> > AFAIK only when the ABI (soname) is different.  We also need to allow for
> > the case when the ABI stays the same but the internal implementation
> > changes (e.g. changing a format of a resource file that is used by the
> > library, making old processes incompatible with the newly installed
> > resource).
> 
> That's what I mean - when something changes in the library - soname should
> change.  It's quite broken to release same version of library with the same
> name when there is different internal implementation.

No.  Let me try to explain the issue in detail.

libfoo-1.0.0 and libfoo-1.0.1 both use /usr/share/libfoo/magic_database, but the internal format has changed between the versions.  It is _internal_ so changing the soname would be both unnecessary and _inappropriate_ (breaking users).  Looking at current packaging, neither RPM nor debian would install libfoo-1.0.0 and libfoo-1.0.1 in parallel.  Looking at the filesystem (i.e. assuming that we can change packaging), we may have both /usr/lib*/foo-1.0.0.so and /usr/lib*/foo-1.0.1.so installed on the filesystem, but that /usr/share/libfoo/magic_database can only have only one of the versions.  (OK, in this case it could be argued that it is the upstream’s fault and that they should version the magic_database path if they change the internal format, to explicitly design for parallel installs.  But now consider the distribution patching the library (changing “release” as opposed to “version” in RPM terminology); upstream can’t reasonably for that, parallel installation of same-version-different-release packages must be a distribution-focused filesystem design.


> >>> 2. Ability to detect which processes depend on which versions of which
> >>> components.
> >>
> >> We already managed to brought in systemd....
> >
> > I can’t see how systemd helps.  See the other discussions about Python/Ruby
> > modules that leave no obvious trace of their dependency after being loaded
> > into memory.
> 
> It has similar complexity and maybe packages could be described just like
> services - so similar thing could be possibly reused here ?
Extra manual dependency information that would get obsolete?


> >>> 3. Ability to automatically restart such processes without loosing state
> >>> (either completely transparently or with some user notification for
> >>> GUIs).
> >>
> >> I'm not quite sure why we would need restart - simply delayed lazy release
> >> of
> >> unused packages would do the trick here - doing here state-full design is
> >> much
> >> more complex thing....
> >
> > Because otherwise you end up with an old version of Firefox running for 60
> > days (or however long a laptop can run with suspends and no restarts; most
> > people about never quit their browser), and that version of Firefox
> > keeping an old version of a system-wide daemon running for 60 days as
> > well..
> 
> Sure if user is able to run Firefox for 60 days  (though my usually goes out
> of RAM in just a week or so, if it's not crashing earlier...) - then he is
> happy user.
Until an exploit _that they have already installed an update for_ steals their data.

> I guess something may show to user some nice gui dialog warning like -  'Hey
> there is a new version installed - so 'restart' your browser to get new cool
> feature'  (FF normally already detects upgrades and suggest restart)
No, that’s not good enough.  The OS should restart it for the user (other OSes already can do this).  (In the case of user-invisible components there is no other option, and for user-visible GUIs it is also the right thing to do.)
    Mirek


More information about the devel mailing list