Slackware

Slackware

Slackware 13.37
Company / developer Patrick Volkerding
OS family Unix-like
Working state Current
Source model Free and open source software
Initial release 16 July 1993
Latest stable release 13.37 / April 27, 2011; 9 months ago (2011-04-27)
Available language(s) Multilingual
Update method pkgtools, slackpkg
Package manager pkgtools, slackpkg
Supported platforms IA-32, x86-64, ARM, S/390
Kernel type Monolithic (Linux)
Default user interface GNU Bash, KDE Plasma Desktop or Xfce
License GNU General Public License
Official website www.slackware.com

Slackware is a free and open source Linux-based operating system. It was one of the earliest operating systems to be built on top of the Linux kernel and is the oldest currently being maintained.[1] Slackware was created by Patrick Volkerding of Slackware Linux, Inc. in 1993. The current stable version is 13.37, released on April 27, 2011.

Slackware aims for design stability and simplicity, and to be the most "Unix-like" Linux distribution, making as few modifications as possible to software packages from upstream and using plain text files and a small set of shell scripts for configuration and administration.[2]

Contents

Name

The name "Slackware" stems from the fact that the distribution started as a private side project with no intended commitment. To prevent it from being taken too seriously at first, Volkerding gave it a humorous name, which stuck even after Slackware became a serious project.[3]

Slackware refers to the "pursuit of slack", a tenet of the Church of the Subgenius. Certain aspects of Slackware logos reflect this: the pipe which Tux is smoking, and the image of J. R. "Bob" Dobbs' head.

A humorous reference to the Church of the Subgenius can be found in many versions of the install.end text files, which indicate the end of a software series to the setup program. In recent versions, including Slackware release 13.37, the text is rot-13 obfuscated.[4][5]

History

Slackware was originally descended from the Softlanding Linux System (SLS), the most popular of the original Linux distributions and the first to offer a comprehensive software collection that comprised more than just the kernel and basic utilities.[6]

Being a student at that time, Patrick Volkerding was asked by his artificial intelligence professor at the Minnesota State University Moorhead (MSUM) to make SLS installations for the computer lab. First Volkerding made notes on bug fixes and modifications of the system's configuration, to be applied after the installation was complete. Later he incorporated the changes directly into the SLS install disks "so that new machines would have these fixes right away". He changed parts of the original SLS installation scripts and added a mechanism that installed important packages like the shared libraries and the kernel image automatically.[3]

Volkerding had no intentions to provide his modified SLS version for the public, assuming that "SLS would be putting out a new version that included these things soon enough". But seeing that this was not the case and that many SLS users were asking on the Internet for a new SLS release, he made a post entitled “Anyone want an SLS-like 0.99pl11A system?”, which he received a lot of response for. As also his friends at MSUM urged him to put his SLS modifications onto an FTP server, he made them publicly available on one of the university's anonymous FTP servers.[3]This first Slackware release, version 1.00, was distributed on July 16, 1993, being supplied as 24 3½" floppy disk images.[7]

Version 2.1, released in October 1994, already consisted of 73 floppy disks, showing the rapid growth of the distribution.[8]

With version 3.0, released in November 1995, Slackware made the transition to the ELF executable format. It was also the first release offering a CD-ROM based installation.[9]

In 1999, Slackware's release number jumped from 4 to 7. Patrick Volkerding explained this as a marketing effort to show that Slackware was as up-to-date as other Linux distributions, many of which had release numbers of 6 at the time, and Volkerding expected them to reach version 7 by the time of the jump.[10]

In 2005, the GNOME desktop environment was removed from the pending future release (starting with 10.2), and turned over to community support and distribution.[11] The removal of GNOME was seen by some in the Linux community as significant because the desktop environment is found in many Linux distributions. In lieu of this, several community-based projects began offering complete GNOME distributions for Slackware.

Design philosophy

Many design choices in Slackware can be seen as a heritage of the simplicity of traditional Unix systems and as examples of the KISS principle. [12] In this context, "simple" refers to the viewpoint of system design, rather than ease of use. Thus users with less knowledge of command line interfaces and classic Unix tools may experience a steep learning curve using Slackware, whereas users with a Unix background may benefit from a less abstract system environment.

In the spirit of purity most software in Slackware uses the configuration mechanisms supplied by the software's original authors. Only for some administrative tasks distribution-specific configuration tools are delivered.

Its core design decisions lead to features that set Slackware apart from most other modern Linux distributions:

Installer

Slackware ships without a graphical installer. Like most distribution-specific tools the Slackware installation program is an ncurses-driven shell script. Probably the biggest potential barrier for inexperienced users stems from the lack of a guided hard disk partitioning tool within the installer. Prior to starting an installation the user is prompted to partition the host system with cfdisk or fdisk.

Boot loader

While most Linux distributions have switched to the more advanced GRUB, Patrick Volkerding decided to stick with LILO, a simplistic Linux boot loader.

Init system

In contrast to most other Linux distributions which employ a System V-like init system (or newer init replacements like Upstart or systemd), Slackware uses a less complex BSD-style init system. However, starting with version 7, Slackware also includes System V init compatibility [13]. The main purpose of adding System V compatibility was to improve interoperability with commercial software packages which may install System V init scripts. At the end of the BSD-style init, the script rc.sysvinit is executed, that does an optional runlevel based initialization comparable to most other Linux distributions.

User environment

The default user environment is the command line interface provided by the user's shell. Whereas the majority of Linux systems boot into a graphical environment, Slackware's default runlevel puts the user into a textual shell. This behavior can easily be changed by editing a configuration file, still it reflects both the Unix tradition and the fact that some users may decide to not install a graphical subsystem at all.

Administration

Strictly speaking Slackware offers no GUI-based administration utilities. The set of administration tools consists of shell scripts which either utilize a GUI-like ncurses-based dialog interface (e.g. netconfig, liloconfig, pkgtool, xwmconfig) or rely on a pure CLI script (e.g. adduser).

32-bit compatibility libraries

While Slackware64 is "multilib ready," [14] the 64-bit Slackware distribution does not ship with 32-bit compatibility libraries. This is in marked contrast with other common distributions. On the "downside", this means that some applications will have larger memory footprints than on other systems. On the "upside", the lack of compatibility libraries and 32-bit applications reduces the complexity of the overall system.

Development model

Non-open development

Slackware follows a non-open development paradigm, in the sense that there is no formal bug tracking facility (like e.g. bugzilla) and no official procedure to become a code contributor or developer. As a consequence the project does not maintain a public code repository. Bug reports and contributions, while being essential to the project, are managed in an informal way. All the final decisions about what is going to be included in a Slackware release are strictly remaining with Slackware's Benevolent Dictator For Life, Patrick Volkerding.[15]

Development team

The first versions of Slackware have been developed by Patrick Volkerding alone. Only beginning with version 4.0, the official Slackware announce files list David Cantrell and Logan Johnson as part of the "Slackware team"[16]. Later announce statements, up to release version 8.1, also include Chris Lumens.[17] Lumens, Johnson and Cantrell are also the authors of the first edition of "Slackware Linux Essentials", the official guide to Slackware Linux.[18] The Slackware website mentions Chris Lumens and David Cantrell as being "Slackware Alumni", who "worked full-time on the Slackware project for several years."[19]

The two following Slackware versions - 9.0 and 9.1 - appear to have been again the sole effort of Patrick Volkerding.

In his release notes for Slackware 10.0 and 10.1 Volkerding thanks Eric Hameleers for "his work on supporting USB, PCI, and Cardbus wireless cards"[20][21]. Starting with version 12.0 there is, for a second time, a team building around Volkerding. According to the release notes of 12.2, the development team consists of seven persons. Successive versions bring even further additions to the team.[22][23]

Finally, since version 13.0 the Slackware team seems to be a more or less constant core. Eric Hameleers' essay on the "History of Slackware Development", written in October 3-4, 2009, hence shortly after the release of version 13.0, names (with only one exception) the same core team members as Volkerdings's release notes for the current version 13.37.[24][15]

The Slackware "core team" is made up of the following individuals (at times, the parenthesized alias names are used in changelog files): Patrick Volkerding, Eric Hameleers (AlienBob)[25], Piter Punk[26], Robby Workman[27], Stuart Winter[28], Mark Post, Erik Jan Tromp (Alphageek), Fred Emmott, Vincent Batts, John Jenkins (MrGoblin), Heinz Wiesinger, Alan Hicks, Amritpal Bath, Karl Magnus Kolstø and Leopold Midha (NetrixTardis). With the help of the changelog search tool of Niels Horn, particular contributions can be easily related to individual developers.[29] Measured by the number of entries in the changelogs, the most intense contributors are Eric Hameleers, Piter Punk and Robby Workman, and with some distance, Stuart Winter.

Package management

Slackware's package management system can install, upgrade, and remove packages from local sources and over a network.

As of Slackware 12.2, slackpkg has been added as the official network-capable package manager, complementing the traditional package tools suite that only operates locally.[30]

Slackware packages are tarballs. Prior to version 13.0, the compression method was DEFLATE (gzip) with filenames ending in .tgz. Beginning with version 13.0, the compression method for packages is based on the LZMA algorithm, indicated by the .txz extension.[31] Since the change in compression methods, the package filename extensions comprise .tgz,.txz,.tbz and .tlz.

The package contains the files that form part of the software being installed, as well as additional metadata files for the benefit of the Slackware package manager. The files containing the very software are organized in a hierarchical way that reflects their respective locations in the root directory of the destination system.

The metadata files are placed under the install/ directory of the package. Two files are commonly found there: slack-desc and doinst.sh. The slack-desc file is a simple text file which contains a description of the package being installed. It is used when viewing packages with the package manager. The doinst.sh file is a shell script which is run at the end of the installation of a package and usually executes commands or makes changes which could not be best made by changing the contents of the package.[32]

Dependency resolution

The package management system does not track or manage dependencies, instead it relies on the user to ensure that the system has all the supporting system libraries and programs required by the new package. If any of these are missing, there may be no indication until the newly installed software is used.

While Slackware itself does not incorporate tools to resolve dependencies for the user by automatically downloading and installing them, some community supported software tools do provide this function, similar to the way APT does for Debian and its derivatives.

Alternative packaging tools

Swaret was included as an extra package in Slackware version 9.1, but was not installed by default.[33] It has been removed from the distribution as of Slackware 10.0 but is still available as a community supported package.

SlackIns is a complete and simple Qt-based graphical user interface for installing packages.

Slapt-get is a command line utility that functions in a similar way to APT. While slapt-get does provide a framework for dependency resolution, it does not provide dependency resolution for packages included within the Slackware distribution. However, several community package sources and Slackware based distributions take advantage of this functionality. Gslapt is a graphical interface to slapt-get.

NetBSD's pkgsrc provides support for Slackware, among other Unix-like operating systems. pkgsrc provides dependency resolution for both binary and source packages. The project pkgsrc-on-slack has the goal to promote the use of pkgsrc on Linux, and expand Slackware (and derivative distributions) with additional packages.

Tukaani pkgtools replaces the Slackware pkgtools (installpkg, upgradepkg, etc.) with enhanced versions that provide network downloading capabilities and an early version of the alternative compression support now found in Slackware pkgtools.

Sbopkg is an original concept using slackbuilds.org repository to provide an automated package creation. Slackbuilds are all-in-one scripts that handle the whole compilation-to-package process. Slackbuilds' scripts deliver ready-to-install packages.

Releases


Slackware's release policy can be said to follow a feature and stability based release cycle in contrast to the time-bound (e.g. Debian, Ubuntu) or rolling release (e.g. Gentoo Linux) schemes of other Linux distributions.

As stated by Patrick Volkerding, "it's usually our policy not to speculate on release dates, since that's what it is -- pure speculation. It's not always possible to know how long it will take to make the upgrades needed and tie up all the related loose ends. As things are built for the upcoming release, they'll be uploaded into the -current tree."[34]

Despite this conservative development paradigm the Slackware team aims to deliver up-to-date software, on at least an annual basis.[15] Thus, new versions are released continuously and within a reasonably foreseeable time frame. Since its inception, at least one Slackware version has been put out every year. Release activity peaked in the years 1994, 1995, 1997 and 1999, when three versions had been released in each year. Starting with version 7.1 (June 22, 2000) the release progression has become more stable, with biannual releases only in the years 2003, 2005 and 2008 respectively.

Slackware's latest stable i386 and x86_64 releases are at version 13.37[35] (as of 2011-04-27), which include support for Linux 2.6.37.6, GCC 4.5.2, GNU C Library 2.13, Perl 5.12.3, Apache 2.2.17, KDE 4.5.5, Xfce 4.6.2, Firefox 4, Gimp 2.6.11.[35]

There is also a testing/developmental version of Slackware called '-current'[36] that can be used for a more bleeding edge configuration.

Support term

Slackware has no officially stated support term policy. As of August 7, 2011 the oldest release supported with security patches is version 8.1 (release date: June 18, 2002).[37]

Hardware architectures

Slackware has traditionally concentrated solely on 32-bit architecture and previous releases were available as 32-bit only. Users wanting 64-bit were required to use unofficial ports such as slamd64. As of Slackware 13.0, a 64-bit variant is available and officially supported in symmetrical development with the 32-bit platform.

Slackware is also available for the ARM architecture in the form of Slackware ARM (formally ARMedslack) and for S/390. Both ports have been declared "official" by Patrick Volkerding,[38] [39] but the ARM port is at the same version as the X86 and AMD64 versions, while the S/390 port is still at version 10.0 for the stable version and 11.0 for the testing/developmental version, and has had no updates since 2009.[40] [41]

Community-supported software

Repositories of community-maintained and -supported binary Slackware packages are provided by linuxpackages.net and slacky.eu. These projects may include more recent versions of software or software not provided by Slackware Linux.

SlackBuilds.org is a community-supported project offering so called SlackBuilds to build extra software not included with Slackware. A SlackBuild mainly provides a shell script that builds a particular package on the user's system. This build process is nearly identical to the way Slackware's official packages are built. SlackBuilds have several advantages over pre-built packages: Since they build from the original author's source code, the user does not have to trust a third-party packager; furthermore the local compilation process allows for machine-specific optimization. In comparison to manual compilation and installation, they assure better integration into the user's system, inasmuch as they utilize Slackware's package system.

SlackFind is a package search service for Slackware.

Since GNOME was dropped from Slackware Linux,[42] several community projects now provide GNOME binary packages and Slackbuilds for Slackware Linux. These include Dropline GNOME,[43] GSB: GNOME SlackBuild, GWARE, Gnome-Slacky, and SlackBot.

Since Slackware has migrated in recent releases from KDE 3.5.x to the 4.x branch, there is an alternative for Slackware users who prefer using KDE 3.5.x using the Trinity desktop.[44]

Popularity and relevance

The popularity - in the sense of actual usage - of any Linux operating system cannot be determined on reliable statistical terms, due to the lack of scientific measurement methods and strategies. Yet some websites provide statistical material on page hits and search terms, which both allow to at least outline coarse-grained trends and relative distribution patterns of interest.

Global popularity

The website DistroWatch.com provides information and download links concerning different Unix-like operating systems, as well as a compilation of respective page hits. The DistroWatch statistics, tracking page hits since 2002, show a decreasing but still substantial visitor's interest regarding Slackware: In 2002 the Slackware page was ranked as number 7, but dropped to number 10 by 2005. In 2006 it reached number 9, whereas since then being constantly below the ten most popular pages. Slackware had its lowest rank (13) in 2009. Since then it has been listed as number 11.

A website specifically dedicated to the accumulation of data regarding the usage of Linux-based operating systems is the Linux Counter project, which gathers its data via a webform that is filled out by registered visitors. As of August 11, 2011, the web site claims a Slackware share of 6.31%, based upon 119,372 registrations and 122,340 values.[45]

Regional popularity

The search engine Google.com offers an "Insights for Search" service[46], that gives information about the geographical distribution of search terms for the period "2004 - present". According to these statistics the search term "slackware" was most often used in Bulgaria. Of the 10 countries listed, 7 are located in Eastern Europe, the remaining 3 being Brazil, Indonesia and Italy.

Relevance

Slackware is considered to have been the most widespread Linux distribution in the early years following its inception. While this general opinion cannot be evidenced by historical sources, Slackware's impact can be inferred from the large number of Linux distributions that are derived from it. Most notably, early versions of the SuSE operating system were based on Slackware. As to the number of descended distributions, Slackware had an influence that is only surpassed by Debian and Fedora/Red Hat Linux.

See also

References

  1. ^ Distrowatch.com. "Top Ten Distributions". http://distrowatch.com/dwres.php?resource=major. 
  2. ^ General Information at Slackware's website
  3. ^ a b c Hughes, Phil (1994-04-01). "Interview with Patrick Volkerding". Linux Journal. http://www.linuxjournal.com/article/2750. Retrieved 2007-07-03. 
  4. ^ Slackware version 1.1.2 install.end file
  5. ^ Slackware version 13.37 install.end file
  6. ^ A Short History of Linux Distributions at LWN.net
  7. ^ Slackware Release Announcement, The Slackware Linux Project
  8. ^ README.210 Slackware Release 2.1
  9. ^ CDROM.txt file in the Slackware 3.0 repository
  10. ^ Frequently Asked Questions, The Slackware Linux Project
  11. ^ ChangeLog for Slackware v.10.2
  12. ^ Chapter 2. An introduction to Slackware Linux
  13. ^ http://www.slackware.com/config/init.php
  14. ^ http://connie.slackware.com/~alien/multilib/
  15. ^ a b c History of Slackware Development
  16. ^ Announcement of Slackware 4.0
  17. ^ Announcement of Slackware 8.1
  18. ^ Official Slackware Book
  19. ^ Slackware Alumni
  20. ^ Release notes of Slackware 10.0
  21. ^ Release notes of Slackware 10.1
  22. ^ Release notes of Slackware 12.0
  23. ^ Release notes of Slackware 12.2
  24. ^ Release notes of Slackware 13.37
  25. ^ Blog of Eric Hameleers
  26. ^ Website of Piter Punk
  27. ^ Website of Robby Workman
  28. ^ Website of Stuart Winter
  29. ^ Changelog search tool
  30. ^ Info about changes in Slackware 12.2 at Slackware's website
  31. ^ The Slackware Linux Project: Slackware Changelog See entry dated Fri May 8 18:49:03 CDT 2009
  32. ^ "Building a Slackware Package". http://www.linuxpackages.net/howto.php?page=package&title=Package+Howto. 
  33. ^ The Slackware Linux Project: Slackware Release Announcement
  34. ^ Slackware General FAQ
  35. ^ a b The Slackware Linux Project: Slackware Release Announcement
  36. ^ The Slackware Linux Project: Slackware ChangeLogs
  37. ^ Slackware 8.1 ChangeLog
  38. ^ Website of ArmedSlack
  39. ^ The Slackware Project: Ports
  40. ^ Slack390 Changelog
  41. ^ Slack390x Changelog
  42. ^ Slackware version 10.2 ChangeLog - see entry dated Sat Mar 26 23:04:41 PST 2005
  43. ^ Dropline GNOME's official website
  44. ^ Trinity desktop and Slackware
  45. ^ Linux Counter statistics
  46. ^ Google - Insights for Search for "Slackware"

External links