A Sky Full of Bases... And Hands Full of TODOs!
December 17, 2016
Right, it’s about time to ping the blog again…
Late November and early December’s been quite fulfilling, and there couldn’t be anything better than celebrating the community’s 5th anniversay - can’t belive it’s been half a decade - and I almost forgot to write the news article (just before I climbed up the bed… the next minute I began creeping on my keyboard, and begging Chai for an anniversary banner - which he made in his favourite game of Minecraft). Even better than that, AOSC OS’s ARM port finally saw its first mass debut in the format of SD card images - Icenowy… She’s a genius with all the mass building and mainline kernel adaptations - couldn’t have managed it without her.
But anyways. Bases (or
*-base) is a new concept that I started to think
about when building the last batch of AOSC OS AMD64 releases in September.
When I started building a non-split (packages) system as the new AOSC OS, I
did not anticipate how complex the dependency trees would have become. It’s
practically impossible to build a system in one go without leaving some
packages out - and time to rebuild the tarball again… another 30 minutes
down the drain. Additionally, with the insane growth in amount of ports - now
six, will be seven in just a month or so (MIPS64el) - it became increasingly
difficult to keep track of things/features that needed to be introduced
in order to create a production level system base (in the case of the two
big endian PowerPC ports, I did not realize there are important utilities
ifconfig were left out until I tried to build a
and I suddenly realized how young - simple, and naive - the port was). Before
I got carried out by these fond memories,
*-base packages are essentially
meta packages for multiple desktop environments - but additionally, packages
describing functionalities in an AOSC OS distribution were also created:
network-base, network connection/diagnostic/security functionalities.
studio-base, audio/video studio/production functionalities.
Unlike the common…
gnome-base, a basic GNOME desktop installation.
kde-base, a basic KDE Plasma desktop installation.
When a new user comes to a new Linux distribution - or even to Linux - they
usually wouldn’t know what to install to get certain things ready, or in
better wording - “… so that I can $DO_FOO”. A classic example would be
productivity functionality - in which case, LibreOffice as the gold standard of
productivity suite on Linux (nix in general if you would admit) forms the
center piece of this functionality, but usually one may want to be able to
scan and print documents, and moreover, print and scan with appropriate
capabilities like the driver themselves (Hewlett Packard and Canon alike) and
enhanced functions like OCR (tesseract will do, but with language data
included) - so our
productivity-base has the following dependencies, well,
roughly (because I already forgot):
productivity-base, productivity functionalities.
libreofice- LibreOffice productivity suite.
print-base- printing/spooling functionalities.
cups- Common UNIX Printing System.
hplip- Open source collection of Hewlett Packard printer/scanner drivers.
scan-base- scanning functionalities.
simple-scan- A GTK+ sanning utility (the only good choice so far).
tesseract- Tesseract OCR.
(Also note that
productivity-base could depend on other
So, now if you install
productivity-base, you can drop right in and start
writing documents, scanning faxes, … You get the idea - I might sound old
fashioned, but Google Drive simply wouldn’t cut sometimes…
Anyways, this is the basic principle of the
*-base packages, or simply
Bases: meta/collection packages providing certain capabilities and
functionalities to AOSC OS, and moreover, to provide just enough of the
functionalities for out-of-box experience (like, your printer will work
after you installed
So why “Bases” the name?
Honestly, just to be regarded as a “catch-phrase” when someone would want to get such “special” packages out of the 4000+ in the repository.
There are problems however. Lion Yang complained that in the case of
golang-base, most people would just go ahead and install
go, as it is
just a shorter package name, and the existence is just not “prominent” enough
in the context of APT (our standard package manager frontend).
And unfortunately I could not think of a straightforward way to solve this
issue - and
*-base packages will serve better in distribution-building
(say, when I build a KDE tarball, I would know which ones to install to create
a system release with the least top-level dependencies… complex concept,
if you don’t quite get what I’m saying here, IRC me - JeffBai) and porting
(as mentioned above, so the developer would know what still needed to be
built for a bare-minimum collection of packages for a port to be functional,
or “behave like AOSC OS”) context.
Maybe patching APT will do a better job… I don’t know, not exactly available for those kind of tasks yet.
Speaking of things to-do in the coming moons, I am trying to set up some semi-breaks for myself - some week-long, or even two-week-long periods each season to free myself from day-to-day packaging - and build system release updates during those periods, usually taking 5 days or so, and the rest at my own disposal. Taking breaks is only for better working efficiency and mood in general… Not gonna lie. Before then, I would need to make a more concrete schedule for these semi-breaks.
… And I’ve finally got myself an Alienware Alpha R2 so that I could play Elite: Dangerous at near 60fps. Quite happy about the little machine so far, might post a brief review later.