Fedora is really about free software, which can be used, inspected and modified according to our needs. Still, there are commercial, closed source applications which offers a great value without being free. They are typically only distributed as binary code.
So, let’s download the binary application, build an rpm and make it available to fedora users! For some apps this works fine, you most often find them on rpmfusion.
However, some applications are not only closed-source but also non-redistributable. This means that rpmfusion can’t host such a package. Instead, each user must download and install the software. Examples include skype and spotify.
One could of course package some kind of ‘skype-installer’ which makes this. However, this would mean several installers and commands to handle them which might become messy. So, instead I wrote some silly shellscripts which I called lpf, which should be read Local Package Factory. The basic idea with lpf is to provide a common framework for these applications.
Using lpf,, there is now a package lpf-spotify-client. After installing this, one just have to click on the lpf-spotify-client icon or use ‘lpf update’ in the terminal. This will download spotify, build an rpm and install it. It’s meant to be as simple as possible, but it will always need a user actually pushing the button.
One advantage is the packaging. The lpf-spotify-client actually contains and uses spotify-client.spec, an already tested spec. There’s nothing lpf-specific in it. OTOH, the lpf-spotify-client.spec is just some boilerplate code which should be simple to use in other applications.
One problem I’ve seen so far is the process. When I submit lpf-spotify-client for review, what the reviewer checks is lpf-spotify-scient.spec. However, this is just boilerplate code and not much to check. The central spotify-client.spec gets no attention, although the quality of this spec is what the user really is affected by. Obviously, we need to fix the review process if there will be more of these.
Now, the lpf command can actually do much more. It supports the complete package life-cycle: install, update, remove. The upstream is at https://github.com/leamas/lpf. Here is a more in-depth presentation of the package.
The lpf-spotify-client package is now in f20 updates-testing and rawhide if you want to give it a try. lpf-skype needs a reviewer, but looks good to me. We’ll see if this idea for a framework handling non-distributable files is the way to go until those software vendors sees the light and at least make their clients re-distributable.