Maybe this is just a difference of definitions, but I don't think there is such a thing as portability. Every software stack, every OS, every library, every program you write ultimately depends on some platform specific implementation detail. The operating system, shared libraries, hardware interfaces, memory mappings, or just the instruction set itself. A program built for one platform won't run unmodified on any other platform --- you'll have to modify and rebuild --- so all software is inherently not portable.
But what programmers seem to mean when they say "portability," though, is that of a general principle (or maybe commitment) to compartmentalizing as much of the platform-specific time wasting as possible. Quarantining x86-specific kernel sources to their own directory, enabled at build-time through conditional flags, for example.
Being as ridiculously lazy as I am (and also an extremely nervous person), this kind of tedium is worse than sub-optimal, it's actively dread-inducing. And makefile script just sucks. Why should I have to learn an entirely new language just to save on some typing and some CPU cycles? Not everything needs to have an entire Turing-complete programming language tacked onto it, let alone something as ugly and difficult to understand as that. (Aaah!! Bleach my eyes!! Aaah!!) Like, I already know C, at that point it would just be easier to write my own thing that does what I want.
And come to think of it, the GNU tools really aren't much fit for purpose, are they? They're bloated and unwieldy. Sure gcc will compile code, as will assemble it and ld will link it, but that's the bare minimum anyone expects from a tool, that it does what it says on the tin. And the GNU tools are hard to fork, code base is really hard to understand (and apparently intentionally so in some cases), which makes them philosophically unpalatable to me. Right, like, are they trying to go against their own values? Being hard to work with defeats the whole point of free software. (At least partially: just because someone could do it in principle, doesn't mean most of us mid-wits could do it.)
On the bright side, I think we (and by "we" I mean me) can improve on this situation. Obviously, one needs something make-like, perhaps it implements a dramatically simplified build script?
You know how programming languages are an abstraction over machine code? And you know how assembly language is a programming language? What if we designed an easily-parsed, generic assembly language that could (in theory) be made to emit instructions for any instruction set architecture? Then we could cram all of the architecture-specific kernel stuff into one source file! And save on storage because our tools are sleek and slim.
Also first post! Hi guys
