Free desktop application distribution and installation
Mattias Andrée
maandree at member.fsf.org
Fri Dec 12 10:18:01 PST 2014
I have started on a project to demonstrate how it would
look (not a serious implementation):
https://github.com/maandree/inetpkg
On Tue, 9 Dec 2014 00:47:29 +0100
Mattias Andrée <maandree at member.fsf.org> wrote:
> I do not completely agree that we need this, but here
> is a proposal for an alternative mechanism:
>
> * The user downloads a .netpkg.sh-file, which is a
> POSIX shell-script, and runs it.
>
> * The .netpkg.sh declares the variable UUID and assigns
> it a predefined random UUID that identifies the package.
>
> * The .netpkg.sh runs `netpkg --install-dependencies
> $UUID` and gives it in stdin a list of package UUID:s.
> This is a distro-provided command that runs that
> distro:s package managers to install those packages.
> Package UUID:s are random identifiers for packages
> that can either be generated by the developer of
> that package or by some numbers authority.
>
> * The .netpkg.sh runs
> `exec netpkg-install "$0" "$@" || true`
> which causes to program package to be maintained
> by the distro's package manager if it has that
> capability, if it does not `netpkg-install` does
> not exist and the command is ignored.
>
> * The .netpkg.sh downloads binaries or source files.
>
> * The .netpkg.sh compiles the files it has downloaded.
>
> * The .netpkg.sh installs the package to ~/.local or
> to another location of the user's choosing.
>
> * The user gets tiered of the packages and runs
> `package.netpkg.sh --uninstall` which causes the
> .netpkg.sh to uninstall the package.
>
>
> So what does everyone have to do:
>
> * Distros may choose to implement `netpkg` and
> `netpkg-install`. If they choose not to implement
> `netpkg` they need to provide a default `netpkg`
> that is capable of downloading missing dependenies
> and install them it ~/.local (or other directory
> or the user's choosing.)
>
> * Developers need to assign random UUID:s to there
> packages.
>
> * Freedesktop or some other body need to maintain
> a list of UUID:s for packages that have not created
> their own UUID:s.
>
> * Developer may choose to write .netpkg.sh file.
>
> * User may choose to install netpkg if it is not
> preinstalled and can than download .netpkg.sh
> and run them to install packages.
>
>
> Drawbacks:
>
> * Does not support installing packages that are no
> longer distributed by the developer.
>
> * Requires Internet connectivity during the beginning
> of the installation process.
>
>
>
>
> On Mon, 8 Dec 2014 15:02:32 -0800
> Thomas Kluyver <thomas at kluyver.me.uk> wrote:
>
> > This may be a pipe dream, but XDG is the best place I
> > know to propose something like this:
> >
> > We need a new mechanism for distributing end-user
> > applications on free desktop platforms.
> >
> > Traditionally, distro packaging is considered the right
> > way to distribute applications. However, I believe that
> > distro packaging is designed to distribute libraries,
> > frameworks and such tools for developers and sysadmins,
> > not end user applications. Specifically:
> >
> > * Distro packages are almost always out of date. Even
> > with 'quick' six month release cycles, the gap between
> > the developer making a release and users getting it is
> > measured in weeks or months, when we (application
> > developers) want it to be hours or days.
> > * More broadly, distros put a layer between developers
> > and users. That has some benefits, but with end user
> > applications we generally want to engage more directly
> > with the user, to present the image we choose and get
> > feedback directly.
> > * You need to provide different instructions for each
> > distro - like this download page for 0AD:
> > play0ad.com/download/linux/
> > * If you want to package your application yourself, you
> > realistically need to deal with at least .deb and .rpm
> > package formats, and if you care enough about smaller
> > distributions, there are still more formats. LSB
> > attempted to declare RPM the standard, but that hasn't
> > really worked.
> > * On most distros, packages can only be installed as
> > root, so to get even some trivial game working, you have
> > to hand it the keys to the kingdom.
> >
> > As a result, on many application webpages, the download
> > button gives you a .tar.gz file - e.g. Firefox, Eclipse,
> > Pycharm and Zotero. That avoids all of the issues listed
> > above, but it can't add things to $PATH,
> > install .desktop files, set up automatic updates, and
> > so on, unless the application's own code completes its
> > installation when it's first run. And if users are as
> > lazy as me, they end up with applications 'installed'
> > in their Downloads folder, which doesn't seem quite
> > right.
> >
> > Still other applications try to rely on language
> > specific packaging tools. My background is in Python,
> > and I've seen applications recommend you install them
> > with pip. Python packaging tools are pretty bad even
> > for the things they're supposed to do, and distributing
> > applications is not one of those things.
> >
> > So, I would like a mechanism whereby:
> >
> > 1. Developers can publish applications without going
> > through distro maintainers. This could either be
> > self-hosted installer files, or a centralised location
> > where you're free to claim a name (like PyPI, CPAN,
> > etc.) 2. When the user installs an application, it can
> > set up command line tools on $PATH and .desktop files
> > to launch the application from the GUI. 3. Applications
> > can be installed into ~/.local without giving them root
> > privileges 3.a For bonus points: capabilities based
> > security, because root is not the only thing we care
> > about: http://xkcd.com/1200/ 4. The installer should be
> > able to specify dependencies on system packages for any
> > relevant packaging systems, because the developer
> > shouldn't be forced to bundle dependencies any more than
> > they should be forced to unbundle them. 5. A user with
> > an application installed should be notified of updates,
> > without every application having to implement its own
> > update checker and downloader. 6. Ideally, all of this
> > should be an addition to a tarball, so sites can offer a
> > single .app.tar.gz file, and users without the installer
> > mechanism can extract the files and launch the
> > application manually. 7. This should, of course, be
> > distro and desktop independent. We definitely can't
> > afford to fragment it by GNOME vs. KDE, or Debian vs.
> > Red Hat. Applications should have *one* button to
> > download for Linux.
> >
> > I am working on an end-user application, and I will try
> > to build something like this and test it by distributing
> > that (glossing over 3a and probably skipping 5 for the
> > first iteration). Feedback, offers of help, and telling
> > me about similar things that already exist are all
> > welcome.
> >
> > Thanks,
> > Thomas
>
> _______________________________________________
> xdg mailing list
> xdg at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/xdg
More information about the xdg
mailing list