loading...
Cover image for What would you like to see in a developer-centric Linux distro?

What would you like to see in a developer-centric Linux distro?

stereoplegic profile image Mike Bybee ・5 min read

Hi everyone. I've been thinking about creating a custom Linux distro for a while now, because a separate /home partition and shell scripts only get you so far in restoring your setup without repeating work each time.

Must-haves, nice-to-haves, and hard limits

I'll list some of the likely (and likely non-negotiable) as well as potential things I intend to bake in, and things I can't include (but might make it easier to install):

Must-haves

0) Potentially offensive distro name, codename, versioning scheme

These are for multiple reasons; namely, aggressive branding, advocacy of sex positivity, available GitHub org name, and just plain insolence.

1) Ubuntu base

Being a MacBook Pro user, I need as much out-of-box hardware support as possible. Before the Arch/Manjaro users chime in, there's more to hardware support than the latest kennel and *cringe*\ AUR (just ask MBP users about backlight support).

2) PPAs and third party repos

When possible, use PPAs for up-to-date versions of software with better system integration and less chance of breakage (e.g. GIMP, Inkscape, LibreOffice, etc.). Same for FOSS third party repos (e.g. Node.js, Yarn, Docker CE, etc.).

3) Chromium PPA

Instead of throwing a temper tantrum and disabling snapd system-wide for everyone like Clement Lefebvre did with Linux Mint, opt for the easier solution to get a real Chromium deb package (not a wrapper for the snap like in recent versions of Ubuntu) like he should have done.

4) systemd

I don't care about your refusal to learn a new init system or whatever other concerns you may have about systemd. It works, and works extremely well. If you feel like hacking Devuan, have at it.

5) Snap AND Flatpak AND AppImage AND Homebrew

They're all easy enough to enable that I'm not getting involved in this stupid holy war over universal Linux app delivery mechanisms; besides, when available, Homebrew for Linux (aka Linuxbrew) is superior (in size and performance) to the three others most people fight over anyway. GNOME and Linux Mint especially need to grow up about this.

Note: Homebrew for Linux does not support casks.

666) Support for other operating systems via virtualization (but get them yourself)

I've shelled out enough for Apple hardware over the years, only for MacOS installs to eventually fail to install on each system, that I feel zero remorse for running it virtualized on a non-Apple host OS or on non-Apple hardware. Same for Windows licenses, and WSL can't compete with bare metal Linux.

7) VERY opinionated desktop defaults

My desktop is very Unity-like (but not) in nature:

  • Unity/MacOS style top panel
    • Window Buttons show on hover when maximized on left
    • App Title and Global Menu at left-middle
    • Notification Area, Clock, and Show Desktop button on right
  • Window buttons on the left (I hated this at first in Unity, but eventually came to agree that it is a more efficient use of space)
  • Window titlebar hidden when maximized (since buttons and title are in top panel)
  • Dark mode by default
  • Left panel/"Dock"
    • "Start"/"Launchpad" button, window list button, and Icon-only Task Manager (with Windows 7-10 style window previews on hover) at top
    • Trash, Activity Switcher, and Virtual Desktop Switcher at bottom
  • Hot corners (clockwise, top left to bottom left):
    • Show "Start"/"Launchpad" menu (also activated with "Windows"/"Command" button, and by clicking visible menu button)
    • "Show Desktop"/"Hide All Windows" (also by clicking button right of clock applet in top bar)
    • "Show All Windows"
    • "Desktop Grid" (virtual desktops, also switchable by hotkeys or clicking on applet)

If I could squeeze everything into one top panel, I would (I could without Global Menu, but I love it too much).

Sure, I could just keep those settings in my separate /home partition (and I do), but I want to share this desktop paradigm with anyone else who might be interested.

8) Synaptic and/or Muon

Discover or [sudo] apt [install|search|etc] is fine for most things, but sometimes you need a better way to search, browse by category/repo, or view dependencies and installed files. Sadly, none of the modern package installer frontends do this well. Muon is beautiful and full-featured, but buggy, so ugly old granddaddy Synaptic may still be the way to go.

Nice-to-haves

1) Rolling release

I know what you're thinking:

1) Ubuntu base

Yes, I did say that, but the "Rolling Rhino" discussion (and subsequent GitHub repo) show how it's possible to switch to the devel release.

This will break sudo apt-add-repository [PPA], but that can be worked around if devel branch is otherwise stable enough.

2) Nitrux utilities

This allows things like:

  • using pacman (and Arch repos) for package management. Still exploring the value in this.
  • Other nice utilities I'm still exploring.

3) KDE Neon base

Combined with apt pinning, so I can get the best of both worlds: Neon's rolling release KDE Plasma, plus the rolling release base of "Rolling Rhino"

4) KXStudio repos

A personal preference, since I want to get back into making music and will need WineASIO

5) Pentesting tools

The easiest way to accomplish this would be to base off of Kali Linux or Parrot Security OS, but those are unstable on their own and adding their repos will destroy anything Ubuntu-based. If Nitrux's pacman implementation works stably enough, I can try adding the BlackArch repos.

6) (maybe) Yet another software center app, or plugins for e.g. Discover

To make it easy to see all app install options (APT, Snap, Flatpak, AppImage, Homebrew [and maybe pacman?]) in one place.

Hard limits (notabug/wontfix)

1) No proprietary software out of the box (aka "Not tryna get sued")

Third party repositories like Google Chrome, Brave, Opera, VS Code, Slack and others will be enabled, but you'll have to install those apps yourself (I will work on adding quick access to their installs in a welcome app - provided you have internet access, of course).

2) No to any DE other than KDE Plasma

You can always install [insert inferior DE here] yourself, or create something based on this distro with your preferred DE. What you can't do is find a better combination of polish, performance, and configurability than recent versions of Plasma. Does that limit you to X11? Probably, for the time being, but in my experience Wayland still isn't ready for prime time even on (the much heavier and less configurable) GNOME.

3) No MacOS or Windows theme/icon/window decoration ripoffs

Just because I side with one or the other on a few design choices, that doesn't mean I want to imitate either in actual design. The beauty of Linux is that you can make it anything you want it to be, so why pretend it's some other OS which assumes I'm too stupid to make those choices?

How do you want it?

I also want to make sure I'm not missing features/apps/etc. which are easy to implement, won't add too much bloat, and would benefit myself and/or other users.

I may not add them to the default install, especially for languages I don't use and wouldn't begin to know how to test, but I'd like to make them as easy to add as possible.

Comment below, and I'll update this post with an issues link once I set it up.

Posted on by:

stereoplegic profile

Mike Bybee

@stereoplegic

Strong opinions, loosely typed.

Discussion

pic
Editor guide
 

I think some distros are already a decent job at asking in the beginning of installation time what programs are needed. they offer to install office, a database or network services. Some more presets would be useful.

As JS developer, install node.js, vscode + some lint plugins, offer db to have a setup mern stack quickly.

as Java developer, IntelliJ might be installed, tomcat (is that still in use?),...

golang: vsCode plus plugins

machine learning - python3, tensorflow, torch...

services could also directly be installed via docker by default. + a nice UI around it. kitematic never worked for me, but I saw others happy with it.

I think the apps are more impirtant than the windowmanager. for years I worked on a ubuntu unity, personal prefering xfce, but it was just stable an for the time it looked good.

i also think cutting old tails would be benefitial. maybe some hard enforced rule, that software not updated in 3-4 years can no longer be installed.

also: having some commands actively blocked. so engineers can not do a forcepush in git for example.

these are some thought I got here on the subway, they are for sure not all smart,... what do you think?

 

I want to avoid messing with the actual OS installer too much, because nobody likes waiting forever to partition, format, install a ton of packages (after downloading if we're realistic about what you want to squeeze into an ISO - I also want the installer itself to be able to run offline as Ubiquity and Calamares already can), and so on, only for it to bork before it gets to the bootloader install stage and leave an unusable system; I do, however, want to give options for installing at least some of the scenarios you describe in a first-boot welcome app and/or some sort of software center (or something as simple as Ubuntu Studio Installer, though that thing looks hideous on KDE in dark mode).

I have mixed feelings about running bare metal database installs if they only apply to dev environments. Dockerized may be the better option.

As for Docker GUIs, I know there are a few options out there, mostly Electron based - which doesn't bother me nearly as much as it does some - like Kitematic (which I haven't had any luck with on Linux either), some based on containers of their own and running in a browser tab. It's been a while since I've used any though. I know I used Dockstation at one point, but I don't know how well maintained that is anymore and can't remember if it supports Compose.

I really want to avoid scenarios where I hack at the repos too much. While I agree that older releases should be avoided, sometimes there's a perfectly good reason to use them (maybe just feature research to build a newer alternative, for example) or just a lack of newer options that match them in ability (see what I wrote about Synaptic; I'm honestly not sure how well maintained it is anymore, but it's by far the best GUI for apt[-get] in terms of features and stability).

As for limiting commands: If someone can't make rm -rf * jokes about my distro, is it even really Linux?

 

For Docker GUIs ,I think Dockstation is a good option. I use both Kitematic and Dockstation on my Linux setup.

I haven't tried Kitematic in a while. Is it still "build it yourself" for Linux?

Nice. Of course they make it nonstandard by throwing it in a zip (I'm also working on a GitHub-based "PPA" to pull other projects' deb releases into a single spot that can be managed by apt, but I'll have to add an extra just step to extract Kitematic if I include it). I wish they would just put it in the Docker CE apt repo or something.

 

I would like a Mandrake like installer but for developer stacks like Java/C/C++/Qt/PHP/RoR/Python/JS/Android with all databases and IDE support out of the box. And a way to extend the installer so we don't have to rework.

 

Mandrake... 🖤🖤🖤 That was my first daily driver distro (I think it was 6 or 7 install CDs back then?), one that I stuck with on a few machines for my first few years after my very first taste of distro hopping. It's been so long, though, that I'd need a refresher on how the installer worked.

 

Mandrake was wayy back but I think I remember the installer clearly.
I only had 2 installation CDs though. I suppose Mandrake changed to Mandriva to Margia so it's that far.

The menu had list of options on what you are going to install linux . Like Desktop , programming , server ,gaming , internet, multimedia, science and stuff. Each of the items had a list of software which were going to be installed. IIRC Suse has similar menu but not like Mandrake.
And specifically Mandrake, because I am not sure the installer experience of Mandriva or Maegia.
Ok found an installation video.
youtube.com/watch?v=s_pfkQyUJPg

Look at the Package Group Selection Thing. Since you are targeting developers specifically, the stacks can be installed like Ruby Station ,JS Station and stuff

OK, right, so like Ubuntu Studio Installer does for creative software groups (e.g. Graphics, Video, Publishing, Pro Audio, for users of Ubuntu or other non-Studio derivatives), or tasksel does in CLI. It's something I'd like to add to the welcome app instead of the installer itself, again to avoid borked installs as much as possible.

 

Reading your post, I realized quickly how different we see the world. I'm so opposed to most of your opinions or choices I felt slighted a couple of times. Fun read!

I am wondering though, what is your opinion on something like Fedora with KDE? It seems to fulfill most of your points rather well, so maybe an offshot of Fedora (maybe even Silverblue?) would be better suited to a distro like that?

 

As I mentioned above, I've seen too many hardware compatibility issues and RPM collision horror stories to consider anything RPM-based.

 

I don't get the part where you say it ubuntu base but have pacman ?? Also this is why Archlinux awesome in the way that it only contain minimal system and it up to you to install package that you need, I like thing to be stabe but they all (debian, ubuntu, ...) just getting to much in my way

 

Arch is a nonstarter as a base. It can't compete with Ubuntu on out of box hardware support. Arch's repos for higher-level userland packages, however, might be useful.

Nitrux, as I understand it, allows pacman with Arch repos in a way that doesn't interfere with its Ubuntu/APT base. Even so, some packages are better integrated with Ubuntu and Plasma when installed from APT (Firefox, and Thunderbird for example, both of which are already kept up to date with the latest versions).

I agree that Debian is suboptimal, both because its packages are too stale and because - in my 17 years of experience with it and 12 years of experience with Ubuntu - Debian is less stable (contrary to popular belief). I disagree wholeheartedly about Ubuntu "getting too much in my way." Its own repos are far more expansive than Arch's, and (at least well-maintained) PPAs and 3rd party APT repos are far more stable than AUR.

Like with Snap, Flatpak, AppImage, and Homebrew (which is seriously underrated on Linux, even if it does lack Cask support), adding Arch repos (and BlackArch, and maybe a few others) will just be a way to add even more (or more current) software install options to my distro (note that I have zero desire to add AUR support - it's terrible).

 

My opinion to this:

  1. It should contain the minimum required to run it. I don't want runtimes and tools on my system that I will never use, so keep it slim.
  2. Ubuntu as a base? Are you serious? I don't want to setup the again for each bigger update. Ubuntu is known to destroy itself for bigger updates so a clear No here as well
  3. The DE: KDE is fine but I still think that most developer will, at some point, switch to some kind of a a tiling WM, so using KDE makes less sense then giving the user the choice to select their own DE
  4. VMs: this would mean pre installed VirtualBox? When there are no VMs you don't need to install it, as said, keep it slim, I can install it by my own if I need it
  5. Not mentioned above but still a decision to make: X12 or Wayland? My personal opinion: X11. Wayland is already almost 10 years old, and it's still lacking tons of features and it has many (tiny) issues when you get into some things

In the end I don't think that it makes too much sense as all developers have their own preferences. At least not in this fixed architecture where you have a distro that comes with ... a better approach would be to use just a custom installer with selections, and make it possible to save and restore the selection.
And if it's meant to survive updates, keeping it up to date and keeping the setup for a long time, don't use Ubuntu. It will always crash. Use Fedora as base or something. It's much more stable.

 

I appreciate the input, but I also need this to be clear: Above all else, the primary stakeholder will always be me. If you like what I put out there, great, and I welcome suggestions. If you can't get past my decisions, you're free to move on, taking anything you do find useful from my implementation with you.

  1. This will not ever be a minimal distro, but it's also not going to be Ubuntu Studio (at least not out of the box, though I install most of its and KXStudio's packages for my own use on top of my dev stuff).
  2. Dead serious. I'll take an APT collision over an RPM collision any day. The only times in 12 years of Ubuntu (with plenty of other distros as well for the past 17) that I've seen a borked Ubuntu upgrade was from bad use of bad 3rd party repos (or some bad Ubuntu-based distro - Linux Mint included - who didn't properly handle its own repos) or some dummy SysAdmin not understanding breaking changes (e.g. I saw lots of easily fixable apache 2.2-2.4 upgrades). In Fedora and RHEL (and Suse/OpenSuse, and...) on the other hand, I've seen nightmarish failures even with zero third party repos installed. And again, that's not even my primary driver (hardware support). I've seen plenty of models Fedora wouldn't even boot on, let alone support things like WiFi.
  3. Again, I'm the primary stakeholder, and I despise tiling; however, as with most things modern KDE, it's as easy to add as "Get New [Thing]" (with multiple implementations), without giving up the massive usability of a modern and über-configurable UI. And again, others are free to base what I release on some other DE/WM, whether they want to call it a "community spin" or just rebrand completely.
  4. I mean KVM, which is how you really should be running VMs in modern Linux; however, VBox repo will be added by default (you'll have to install it and the addons yourself). For Linux guests, in addition to those options, Docker will be installed and LXC/LXD will be installable.
  5. I agree wholeheartedly on X11. I wish it had some of the benefits of Wayland when it works, but Wayland still has a lot more issues than mere papercuts.
 

This is so interesting. I would check it out. Needs to be privacy focused.

 

That isn't a specific aim of this distro, and others are already really good at it (e.g. Tails, Parrot), but I might look into how they achieve it to offer at least some level of what they do.