(Debian helps us to get full source code easily and quickly)
As a continuation to Part 1, this article will present you information regarding source code availability of Debian GNU/Linux operating system. Fortunately, Debian provides us Source Code DVDs in ISO image format. This means when we distribute Debian to people we can easily distribute the corresponding source code as well, quickly and conveniently, as many free software licenses like GNU GPL within Debian require it. Think about it: if Debian does not provide so, how do we distribute the source accompanying the binary ISO? It requires gigantic effort per person, as we will need --among other options-- to manually scrap Debian repository to provide corresponding source code. That's why I said source DVDs are convenient. More fortunately, Debian also provides us so many places online to get source code either in individual or collective forms and facilitate us to search among them intelligently. Everything is really professional in my opinion. I could not find any other distro that gives same level of source code availability services like Debian. Finally, like before, I hope this helps everybody to get source code of GNU/Linux and learn more about it. Okay, let's go!
Subscribe to UbuntuBuzz Telegram Channel to get article updates directly.
Terminology
- Source code: refers to generally original form of every software written in programming language. A source code file written in C++ language would have .cpp extension, while Python is .py, and so on.
- Binary code: software in executable form processed from source code. This is what you run / execute on your computer.
- Distro: an operating system like Ubuntu or Fedora, which takes source code from multiple sources worldwide, and process them all to be binary code in the form of operating system itself and repository.
- Binary code package (.deb, .rpm): executable program format. Debian family uses .deb format while Red Hat family uses .rpm format.
- Source code package: source code of a software that is already packaged as package by a distro developer. So for a given software, let's say Warzone, Ubuntu has its own package packaged by Ubuntu developers, while Fedora also has its own package, although the software is the same.
- Raw source code: or development source code, source code that is written and published independently by its original developer.
- SRPM (.srpm): source RPM, that is source code package format of RPM-based distros such as Fedora, Mageia, and so on.
- Tarball (.tar.gz, .tar.bz, .tar.xz): raw source code package format.
About Debian
Before discussing about the source code, it's necessary for us to discuss Debian ISOs first. Debian is universal operating system says its slogan so it has a lot of different ISO images per release. Debian ISOs in general are divided into 2 forms, Regular and Live, meaning Install-Only ISOs and Live-Install ISOs. When you download Debian and your bootable can only install it, either as Desktop or Server, then it is Regular. When you get it and the bootable can run as LiveCD (like Ubuntu) as well as install the Desktop system (like Ubuntu too), then it is Live. From this point of view, then, Debian source code ISOs are also divided into 2 forms, Regular source CDs, and Live source CDs. That's it. You will immediately see them below.
Following the ISO, we also need to know that because it is universal, it also has a lot of different source code repositories. Yes, Debian is a giant project with gigantic number of developers so no wonder. You will find Debian has something like Launchpad for Ubuntu, you will also find source code repository just like other distros have it, and you will find sophisticated source code search no distro could compete. That's Debian for you. Also, you will see them below.
And of course we need to know the codename of Debian releases below:
- 10.0 = Buster (current)
- 9.0 = Stretch
- 8.0 = Jessie
- 7.0 = Wheezy
- 6.0 = Squeeze
- 5.0 = Lenny
1. Source Code CD
All source code of latest Debian release in DVD and BlueRay formats are available in:
- Home of latest source DVDs: https://cdimage.debian.org/debian-cd/
- Buster Regular: https://cdimage.debian.org/debian-cd/10.0.0/source/
- Buster Live: https://cdimage.debian.org/debian-cd/10.0.0-live/source/
(Left: Debian Buster Regular source DVDs part 1 up to 14 in .iso format; right: 8 Debian Live source DVDs from Cinnamon to XFCE in .tar format)
For older versions, Debian provides it on different place:
- Home of old source DVDs: https://cdimage.debian.org/mirror/cdimage/archive/
- Stretch Regular: https://cdimage.debian.org/mirror/cdimage/archive/9.0.0/source/
- Stretch Live: https://cdimage.debian.org/mirror/cdimage/archive/9.0.0-live/source/
- Jessie Regular: https://cdimage.debian.org/mirror/cdimage/archive/8.0.0/source/
- Jessie Live: https://cdimage.debian.org/mirror/cdimage/archive/8.0.0-live/source/
- Wheezy Regular: https://cdimage.debian.org/mirror/cdimage/archive/7.0.0/source/
- Wheezy Live: https://cdimage.debian.org/mirror/cdimage/archive/7.0.0-live/source/
2. Source Code Packages Repository
Debian stores all source code packages for end-users in Debian Archive server (also called Repository) under pool/main/ directory:
A package, for example GIMP, is stored under pool/main/g/gimp/. Another package, for example VLC, is stored under pool/main/v/vlc/. And so on. Every package directory stores both the binary .deb packages and the source .tar packages of respective program for any version of it. So, for example, under pool/v/vlc/ you will find VLC Media Player in binary and source starting from version 2001 up to 2017. See picture below for more depictions.
For your information, Debian Archive is the place where you download package from with APT-GET command line. It is the place that mentioned in your /etc/apt/sources.list file. Both binary and source packages provided by Debian for you are stored in this Debian Archive. Additionally, Debian Archive is equal to Ubuntu Archive.
(Top-left: Debian Repository Archive by pool/main/ directory where all .deb and .tar packages actually stored; top-right: pool/g/gimp/ directory showing source code package of GIMP; bottom-right: pool/libr/libreoffice/ directory showing source code package of LibreOffice; bottom-left: pool/v/vlc/ directory showing source code package of VLC Media Player)
3. Raw Source Code Repository
- Source packages in raw & public: https://salsa.debian.org/public
- Raw source code files viewer: https://sources.debian.org
- Precise code search engine: https://codesearch.debian.net
Salsa (formerly Alioth) is online place where Debian maintainers put source code packages and the server will magically turn them into .deb packages.
Sources Browser (or Debsources) is the online viewer of whole source code of Debian. You can view directory structure and its files of any original source code there. It's truly amazing.
Even more precise than above, Debian now has Debian Code Search, a special search engine to find out any text of any source code files within the whole Debian operating system + repository. With this, you can download individual files containing text string you wish rather than downloading whole package.
(codesearch.debian.net: Sophisticated source code search engine to find precisely any text or code within whole 100GB+ files of Debian source code)
(Code Search viewing one source code file containing "buffer overflow" text I searched)
4. How To Get Debian Source Code
The easiest one is to download source DVDs. See Buster Source.
If you wish to download individual source code package, the easiest is by searching on Debian Package Search Engine using web browser.
If you are using Debian, you can search and download source code packages by using APT-CACHE and APT-GET SOURCE command lines respectively as long as your Sources.List configuration enables Source Code Repository addresses. For example, to get source code of GIMP Image Editor you command:
$ apt-get source gimpand you should get source code package named gimp-xxx.orig.tar.gz.
If you wish to mirror, you could mirror a whole Debian Archive (packages repository) as it includes source code packages. Use apt-mirror tool to do so.
If you wish to look at something similar to Launchpad for Ubuntu, see Salsa (formerly Alioth), the place where source code packages published to be collectively developed online. From Salsa source packages will be transformed into binary packages and delivered to official Debian archive repository.
If you wish to search detailed information about any source code package within Debian, see Debian Tracker Website, the place where every package can be tracked down in multiple versions of Debian.
(Debian Tracker Website showing full information about GIMP Image Editor 'gimp' package in whole Debian releases: it includes package version history, releases where that package belong to, important links to download it, bugs information, etc., etc.)
Closing Comments
Honestly, I decided to write this series because of my interest in Debian Source DVDs. I impressed with how vast and comprehensive are all source code provided to us. Starting from that, I then looked at Ubuntu's, and found out that it follows Debian's lead. I felt lucky and grateful Ubuntu does. However, the problem is, I did not find many popular distros with Source DVDs like Debian or Ubuntu, let's say Mint and Manjaro. Furthermore, even distro with very strong commitment to free software does not provide Source DVDs, that is Fedora. My final comment for now is that Debian is the best on his regard. This is the end of my report on Debian.
See you on the next article.
Important note: while I was writing paragraph above, I foolishly thought that gNewSense doesn't provide source DVDs and I was wrong, as they actually provided them since long ago. And please see good news that the 5 years dormant gNewSense Project is now started once again.
Further Readings
- Debian Free Software Guidelines that constitutes Debian's decision to provide Source DVDs
- Sources.List configuration includes Source Code Repository
- What is source code package?
- What is Debian repository?
- Debian Package Search Engine for both binary and source packages
This article is licensed under CC BY-SA 3.0.