User Tools

Site Tools


freeslack:start

This is an old revision of the document!


FreeSlack

FreeSlack is a Free eXpansion Pack for Slackware. The project's primary goals are to document all non-free software in Slackware distribution, and to make it easy for users to maintain a fully free Slackware OS.

2014-11-19 - Free repository and a new direction for the project.

2014-11-12 - Kernel headers are reclassified as part of the non-free kernel meta-package.

2014-08-27 - zoo was free all along.

Free Repositories

For your convenience, we provide a free repository for use with slackpkg. It should be regarded as experimental, so please bear with us as we are ironing out the kinks. At the same time, we are already using it, and we love it. Still, read this entire section before making a switch, since our repository differs from the stock in several important ways.

To switch to the new repo, you have to

  1. edit /etc/slackpkg/mirrors to use our repo,
    http://freeslack.net/fxp/slackware64-14.1/
  2. uncomment the SLACKKEY line in /etc/slackpkg/slackpkg.conf and change it to
    SLACKKEY="Connie Dobbs (Free eXpansion Pack for Slackware)"
  3. obtain our signing key (for example, with slackpkg update gpg) and force slackpkg update regardless of the ChangeLog state

Non-free packages were removed and replacements are provided:

  1. linux-libre-headers replaces kernel-headers, and they collide in /usr/include
  2. linux-libre-source replaces kernel-source, and the source is delivered as a single tarball, so no collision
  3. linux-libre-image replaces kernel-huge, kernel-generic, and kernel-modules, with symbolic links pointing to the generic image, and no collisions with the stock

Our kernel build scripts are found in fxp/tools/linux-libre-slackbuild/, and we hope you will find them useful for manually upgrading your kernel.

The rest of the packages in our repository are unmodified official binaries, so you can think of this as a deblobbed mirror.

The repository omits some things related to installation, since they were never considered until now. Still, we were able to boot from the stock DVD, pick our repository as the source, make a full install, and boot into a fully free OS (sans slackpkg configuration). Be advised that LILO had to be configured manually, so this is not something we recommed you do unless you really want to help us with testing.

Our current plans include deblobbing -current as well as future stable releases of Slackware x64. We are aware of x32, but see no reason to proceed without user demand. We have no plans to support releases older than 14.1, but user demand can change this as well. We also wish to improve the situation with the installer, going may be as far as producing free DVD and USB media. Finally, we have plans for expanding the repository with auxiliary packages beyond the base install. As it stands, we are happy to defer all technical decisions to the Slackware core development team. We have absolutely no plans to mess with the base collection aside from the minimal changes needed to replace the essential non-free components, and we are basically done on that front. We may one day try to bootstrap Slackware (that is, rebuild everything from scratch).

Slackware 14.1

The following table lists all the packages on the Slackware 64 DVD which contain non-free software. Note that comments are no substitute for the respective licenses. In particular, “non-commercial” may limit either use, or distribution, or both. Consult the licenses for details.

Name Comment Reference
extra/google-chrome/google-chrome.SlackBuild Installs non-free software.
extra/source/flashplayer-plugin/flashplayer-plugin.SlackBuild Installs non-free software.
extra/source/java/java.SlackBuild Installs non-free software.
slackware64/a/getty-ps-2.1.0b-x86_64-1.txz Non-commercial only. main.c
slackware64/a/kernel-firmware-20131008git-noarch-1.txz Non-free blobs are included.
slackware64/a/kernel-generic-3.10.17-x86_64-3.txz Will load non-free firmware if present.
slackware64/a/kernel-huge-3.10.17-x86_64-3.txz Will load non-free firmware if present.
slackware64/a/kernel-modules-3.10.17-x86_64-3.txz Will load non-free firmware if present.
slackware64/a/lha-114i-x86_64-1.txz Too vague, according to FSF.
slackware64/a/unarj-265-x86_64-1.txz Can't use the code in ARJ archivers with encode/decode support. unarj.c
slackware64/ap/amp-0.7.6-x86_64-1.txz Non-commercial only. README
slackware64/d/kernel-headers-3.10.17-x86-3.txz A part of the non-free kernel meta-package.
slackware64/k/kernel-source-3.10.17-noarch-3.txz Will load non-free firmware if present.
slackware64/n/bluez-firmware-1.2-x86_64-1.txz All rights reserved, no source. broadcom/BCM-LEGAL.txt
slackware64/n/ipw2100-fw-1.3-fw-1.txz No source, no modification, and more. LICENSE
slackware64/n/ipw2200-fw-3.1-fw-1.txz No source, no modification, and more. LICENSE.ipw2200-fw
slackware64/n/trn-3.6-x86_64-2.txz Non-commercial only. EXTERN.h
slackware64/n/zd1211-firmware-1.4-fw-1.txz No source. WS11UPh.h
slackware64/xap/xfractint-20.04p11-x86_64-1.txz Non-commercial only. fractsrc.txt
slackware64/xap/xgames-0.3-x86_64-4.txz xminesweep is non-commercial only. xminesweep.c
slackware64/xap/xv-3.10a-x86_64-6.txz No distribution of modified copies, non-commercial only, personal use only. copyright.h

Sanitizing an Existing Installation

We assume that the user performed the full install.

  1. Blacklist the offending Slackware packages in /etc/slackpkg/blacklist by adding the following lines.
    Make sure they are separate lines, and also free of white space.
    kernel-firmware
    kernel-generic
    kernel-huge
    kernel-modules
    kernel-source
    kernel-headers
    getty-ps
    lha
    unarj
    amp
    bluez-firmware
    ipw2100-fw
    ipw2200-fw
    trn
    zd1211-firmware
    xfractint
    xgames
    xv
  1. Build and install a free kernel. Also, install the free headers if you want to compile stuff that makes system calls. The headers are expected in /usr/include, so you will have to uninstall the stock package at this point.
  2. At this point you should be running the free kernel, so you can remove the non-free Slackware packages with:
    removepkg kernel-firmware kernel-generic kernel-huge \
    kernel-modules kernel-source kernel-headers getty-ps lha unarj \
    amp bluez-firmware ipw2100-fw ipw2200-fw trn zd1211-firmware \
    xfractint xgames xv
  3. Optionally, you can replace some of the removed packages with free packages. lha can be replaced with lhasa, a free decompressor. unarj can be replaced with arj, which is actually an archiver too.

Upgrading

We haven't tried this, but we don't know of a reason why it wouldn't work. Get the Slackware DVD, unpack it into a directory, remove all non-free packages, and then upgrade as usual.

Slackware 14.0

The following table lists all the packages on the Slackware 64 DVD which contain non-free software. Note that comments are no substitute for the respective licenses. In particular, “non-commercial” may limit either use, or distribution, or both. Consult the licenses for details.

Note that the methodology has changed since 14.0, so this section looks shorter than it should have been. Even though the table for 14.1 looks longer, no new non-free packages were added between 14.0 and 14.1.

Name Comment Reference
extra/google-chrome/google-chrome-pam-solibs-1.1.3-x86_64-1.txz Since Chrome is non-free, there is no point to this package.
slackware64/a/getty-ps-2.1.0b-x86_64-1.txz Non-commercial only. main.c
slackware64/a/kernel-firmware-20120804git-noarch-1.txz Non-free blobs are included.
slackware64/a/lha-114i-x86_64-1.txz Too vague, according to FSF.
slackware64/a/unarj-265-x86_64-1.txz Cannot use the code in ARJ archivers with encode/decode support. unarj.c
slackware64/ap/amp-0.7.6-x86_64-1.txz Non-commercial only. README
slackware64/n/bluez-firmware-1.2-x86_64-1.txz All rights reserved, no source. broadcom/BCM-LEGAL.txt
slackware64/n/ipw2100-fw-1.3-fw-1.txz No source, no modification, and more. LICENSE
slackware64/n/ipw2200-fw-3.1-fw-1.txz No source, no modification, and more. LICENSE.ipw2200-fw
slackware64/n/trn-3.6-x86_64-2.txz Non-commercial only. EXTERN.h
slackware64/n/zd1211-firmware-1.4-fw-1.txz No source. WS11UPh.h
slackware64/xap/xfractint-20.04p11-x86_64-1.txz Non-commercial only. fractsrc.txt
slackware64/xap/xgames-0.3-x86_64-4.txz xminesweep is non-commercial only. xminesweep.c
slackware64/xap/xv-3.10a-x86_64-6.txz No distribution of modified copies, non-commercial only, personal use only. copyright.h

Additionally, there are a few SlackBuilds which install non-free software, namely extra/source/flashplayer-plugin/flashplayer-plugin.SlackBuild extra/google-chrome/google-chrome.SlackBuild extra/source/java/java.SlackBuild

Caveats

Please be aware that as long as you keep using the official repository, non-free packages may still creep in during updates, unlikely as it is. We see no easy cure for this, short of rolling your own repository.

Project Goals

  1. Identify all non-free software distributed on Slackware DVD, as well as all software that does not belong in a free operating system.
  2. For each non-free piece of software (usually, a Slackware package), provide a short description of the license(s).
  3. Develop and document a way to get rid of all non-free software in an existing Slackware installation.
  4. Develop and document a way to upgrade an all-free Slackware installation.

Methodology

For the purposes of this document, an installer package or simply package is any file found on Slackware DVD which is one of the following:

  • tar archive
  • gz, bz2, or xz archive
  • SlackBuild script
  • bash script

Note that this definition includes, but is not limited to Slackware packages.

A list of all packages on a Slackware DVD is created with:

find . -name "*.[gx]z" -o -name "*.t?z" -o -name "*.bz2" -o -name "*.SlackBuild" -o -name "*.sh" | sed 's|^\./||'

… and saved as a spreadsheet. If possible, the list is compared with that for the previous Slackware release. In general, upgraded packages are assumed to have the same license type. For each new package, the sources are examined and the licenses are determined. If the licenses are free according to the FSF (either GPL-compatible or not), then the package is marked as free. Otherwise, the package is marked non-free and the licenses used are described briefly. When applicable, the name of at least one file with an offending license should be cited.

Once a package is found to be non-free, it is not necessary to keep checking the remainder of its contents. A possible exception to this rule is a piece of free software that comes with non-free plugins which are packaged separately. Free Packages that do not Belong

Some packages omit non-free software, yet we mark them as non-free, as long as they are either

  1. non-free software installers,
  2. have no practical use besides enabling the user to run non-free software,
  3. should be replaced, because they are a part of a collection which contains non-free software. For example, kernel-generic Slackware package may well be free, but for all practical purposes it is a part of a non-free kernel meta-package.

The idea here is to mark as non-free everything that would have to be purged or replaced in order to achieve a free operating system.

Branding

As a bit of an icing on the cake, we provide a distinctive lilo boot screen. This is strictly optional, as there is absolutely nothing wrong with the stock logo. Click on the thumbnail to get the BMP file.

If you like the logo, put it in /boot and make the following changes to /etc/lilo.conf:

bitmap = /boot/freeslack.bmp
bmp-colors = 0,255,0,255,0,255
bmp-timer = 65,27,255,0

Files

Package licensing for Slackware 14.1: slackware-14.1-licenses.ods

Package licensing for Slackware 14.0: slackware-14.0-licenses.csv
The CSV file is UTF-8, separated by tab only, with text delimiter .

Participation

To participate in the making of the free repository, you can help right now by simply using it. If you are willing to do more, try installing from it. And then of course you can mirror us.

To participate in documentation, simply grab the table and start documenting in any order. Send us updates any time you've made considerable progress, and we will merge them and update this site. Don't worry about coordinating with other contributors: double-checking a package is of great utility to this project. Let me know if you have any comments, suggestions, or if and how you would like to get credited. My contact info can be found there. Email is OK, but encrypted email is better.

Licensing

All FreeSlack project documentation is licensed under GNU FDL 1.3 or the latest version published by FSF. In short, you are permitted to use it as you wish, but you must relicense derivative works under the same (or similar) license.


Contact the maintainer

Sample Source Code

The hello.c source file:

:freeslack:hello.c
#include <stdio.h>
 
int main( int argc, char *argv[]);
 
int main( int argc, char *argv[]) {
        int iRet=0;
        printf( "Hello world !\n");
        return( iRet);
}

… and back to regular wiki text

freeslack/start.1424120314.txt.gz · Last modified: 2015/02/16 14:58 by melikamp