Python Is All You’ll Ever Need In This Linux Distro

Choosing the perfect Linux distribution that satisfies your personal needs and likings can be an impossible task, and oftentimes requires a hint of Stockholm syndrome as compromise. In extreme cases, you might end up just rolling your own distro. But while frustration is always a great incentive for change, for [Josh Moore] it was rather curiosity and playful interest that led him to create snakeware, a Linux distribution where the entire user space not only runs on Python, but is Python.

Imagine you would boot your Linux system, and instead of the shell of your choice, you would be greeted by an interactive Python interpreter, and everything you do on the system will be within the realms of that interpreter — that’s the gist of snakeware. Now, this might sound rather limiting at first, but keep in mind we’re talking about Python here, a language known for its versatility, with an abundance of packages that get things done quick and easy, which is exactly what [Josh] is aiming for. To get an idea of that, snakeware also includes snakewm, a graphical user interface written with pygame that bundles a couple of simple applications as demonstration, including a terminal to execute Python one-liners.

Note that this is merely a proof of concept at this stage, but [Josh] is inviting everyone to contribute and extend his creation. If you want to give it a go without building the entire system, the GitHub repository has a prebuilt image to run in QEMU, and the window manager will run as regular Python application on your normal system, too. To get just a quick glimpse of it, check the demo video after the break.

Sure, die-hard Linux enthusiasts will hardly accept a distribution without their favorite shell and preferable language, but hey, at least it gets by without systemd. And while snakeware probably won’t compete with more established distributions in the near future, it’s certainly an interesting concept that embraces thinking outside the box and trying something different. It would definitely fit well on a business card.

32 thoughts on “Python Is All You’ll Ever Need In This Linux Distro

  1. Reminds me of starting up my Commodore and getting the BASIC interpreter. Sounds like an awesome thing to learn coding on – I wonder if it fits on a pi zero.

  2. I have never took the time to sit down and learn python other than occasionally murdering someone else’s project to do my bidding, but this is super interesting, I guess cause its not just yet another linux distro thats basically the same as the others with a tweak or 2.

  3. The main target for this will Raspberry Pi’s, ESP32’s and the newer Arduino’s. For simple controllers this is all you need . I’m in and will contribute for sure.

    1. I just got an ESP32 VGA board for use with fabgl – I am no expert, but it seems to be it would be possible to use the fabgl terminal program to connect to the local RTOS CLI and run micropython from there. I don’t know if there is a fabgl wrapper for micropython or how hard it would be to make one, but it does interest me.

      I note that the new ESP has an openrisc core too, and that might be able to run Linux of some sort (see Jor1k).

      I love the idea of a cheap board with wifi that runs micropython almost as an OS for the end user, it’s somehow reminiscent of 8bit home computers to me.

  4. This is exactly what I’ve been thinking about whenever I got nostalgic about the good old C64 days.
    Time to build this centuries C64 … but with 64GB instead of 64KB

  5. There was a time while waiting in some waiting room and reading some hackaday project with small board and some interpreter (i think forth) and i thought it could be nice educating tool: computer wit interpreter as operaring system (like before with commodore and basic). As a language of choice i was thinking micropython because it had to be cheap so with limited resources. And now this – put that on RPi and it’s done. Fantastic idea.

  6. I must be the only person on the planet that hates python. Anytime I think of it.. nightmare pictures of horrid code written by an intern, white space hell, and broken packages instantly pop to mind.

    1. I’d register on the spectrum of dislike with regards to python. Just like perl before it. I’ve used it enough to ‘get in, get out’ and not fuss over the results.

      I’m starting to dislike node.js/npm for the same broken packages issues you’ve mentioned seeing with python

    2. No, I’m another one. Python’s multiple versions under active development and the massive broken package problem is a major turn off.

      Actually, now that 2.7 is no longer being developed, I consider it finished and therefore more suitable for stable use..

      1. Its funny my compiled Pascal code can be dropped on a system and runs.

        A python script from 2 months ago would vomit like a drunk unless the system is setup identical to the dev’s own box

    3. I personally like python as a scripting and serverside language but it has its place and this is certainly not it. It’s not for complex GUIs or games. although PyQt can be used to make amazing applications really quickly it’s basically just C with python on top which sometimes works but you’re better off skipping the middle man *most* of the time.

  7. Nicely done and looking forward to how this turns out. I see the target platforms will not be super tiny:
    * I requires pygame, which requires compiled SDL2. No problem for the most minimal laptop/desktops/sbcs – but it will likely never reach the micropython size. There’s other graphic libraries and languages for much smaller boards than a Pi Zero class (lua comes to mind.)
    * Pretty much every scripting language has one of these – kernel & busybox underneath with minimal GUI libraries having script-bindings. From or TCL/TK in the 90’s and even earlier than that if you move from Linux to BSD.
    It’s a great exercise & learning experience, but who want to go small without the effort, just hit up TinyCore – 15MB and all the GUI you can eat – . TinyCore also makes perfect for a rescue disk ISO if sysresccd (700MB) is too big. It’s so small you can even put the ISO in your /boot/ for Grub to rescue to.

  8. s/fully Python userspace/Python on top of buildroot userspace/

    call me back when they’ve ported all their userland tools (util-linux) and have it booting with python as PID 1.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.