All Posts Tagged: FLOSS Infrastructure
There has probably never been such a thing as what I am talking about: You know, a "complete" native GUI stack for Linux, and then it's possible that a complete GUI stack could encompass more for native Linux than one would for web or Windows ever had.
I suppose the primary thought of this post can be summed up with a question. Once an idea of what the heck a native GUI stack constitutes, then: Are there really existent, let alone great, native Linux GUI stacks even right now in 2025?
Server Stacks Have Names
People have long referred to server stacks like the:
- LAMP stack
- MEAN stack
- MERN stack
- Django
- Spring? (Never heard of it)
- and more!
Note how there's no single, requisite server stack, and they might not literally be strictly vertical.
When you can identify a server stack, you can get attention towards maturing its well oiled function as a unit even though its components are modular. It gives all involved with it an idea of what it is as a whole - and what to expect from it.
A "Complete" Native GUI Stack
A complete native GUI stack seeks to have:
- full coverage over prettymuch any GUI feature desired in any native application -
- (perhaps even extending out to cover game engine features)
- (definitely covers desktop GUI)
- maturity in classes of tooling to correspond to logical feature divisions and skill levels
- maturity in additional satellite tooling to bridge tooling
- reduced/consolidated languages and APIs
- ergonomic languages and APIs
- modern language features
It's important to establish the idea independent of tool categories by themselves, because tool categories can evolve and change in combination and form. It is all about the completion of purposes that the tools can accomplish - and the idea that it should actually be the native aspect that guides the definition of the tools' cumulative potential to be complete or perhaps "full."
Anyway, the more extensive/complete a stack is, the more it can be used with great confidence that a project will not have to massively shift gears from underneath whenever a new type of feature is considered. Additionally, outside of individual projects, the same stack can also be chosen for different feature sets. The skills that remain the same will not need to be re-learned.
Developer skill familiarity still matters just as much in the context of freedom of choice and FOSS as it does for closed infrastructure. The goal to consolidate requisite skillsets is likely to always be somewhat at odds with goals to have freedom, modularity (and specifically interchangeable modularity), variety, and choice. But the point is that tool consolidation is a very important goal nonetheless.
Longterm Vision in FOSS
I believe that a huge general challenge of FOSS deals with longterm goals related to independent definition. Perhaps this is quite vague, but this is another blog post I would like to write.
Part of the fundamental point of having a known definition of native GUI stack is that this type of added attention can be accomplished over greater lengths of time.
"Native" Translates to More, Not Less
By a "complete" stack do you compare the set of native GUI tools' completion to the available web GUI tools, and web-based cross-platform tools? Comparing a native GUI to web GUI is wrong, because in actuality more capabilities should be expected according to a technical standpoint - not less! . . . Heresy!
It is a reversal of what makes sense from a perspective of designing applications for more capable machines. The benefits of native performance not only should be expected to translate to more types of applications than on the web or on a smartphone just by matter of categorization - but there truly are more things you can do with the added performance that people can imagine - and have. It's a no-brainer.
Freedom Also Means More
As a side-note, consider that aside from native performance, the same should actually be true of a comparison between Windows and Linux, as with the Web comparison, except because of freedom. Maybe Linux design is so free and unbounded that a complete Linux GUI stack would include more capabilities than a Windows, or other relatively closed one.
Linux also has a much larger breadth of application profit models than Windows, including not profitable at all. But don't take that as a joke; It is more than just profit models. It is the general freedom to build things with less compulsion and pressure - more time - and the sheer amount of added choice. Freedom is open ended, so it can be any reason.
GUI Tool Categories
In my ignorance, and in my desire to keep the idea open, I do not really want to be too specific, but these might be some examples of what could be included in a GUI stack.
- common widgets (like GTK)
- deeper/bigger widgets
- custom widgets
- 3D draw
- 2D draw
- data api compatibility
- plotting protocol compatibility
- shaders
- application database method/alternative
- GPU api (like Vulkan)
- Desktop protocol (like Wayland)
- modern applications language (like Swift)
- perhaps a separate systems language
- perhaps other purpose languages
- stt speech-to-text
- tts text-to-speech
Not every one of these tools might be strictly singular to the stack, but the idea is that such decisions for interchangeable tools should not stem from desperation or lack of definition. Rather, those decisions about interchangeable tools are about function and design, and purposeful prioritization. Obviously, the more tools that are interchangeable, the better. The idea of identifying a stack is to have as much focus as is reasonable within the wide scope of the stack.
A Concept with New Meaning
I think there should be a concept of the native Linux GUI stack that's inclusive of the full potential of all native capabilities. It might require using another term than "stack", but that's not important. The important thing is to have a concept for confident tools to develop any GUI type for native Linux that also transcends strict definition by whatever has existed thus far.
To Summarize
- My use of "complete" is about what is potentially inclusive in GUI according to what applications are capable of on a basis of being subject to native hardware, and being free in design within that realm - NOT defined by what is formerly in Web GUI or by what has been done in the past.
- The goal of such a native GUI stack is to have tools that have such complete coverage, but seek to eliminate redundancy in their features
- Better stacks also "seek" to reduce unnecessary variety in technologies like multiple programming languages and APIs, as to enhance usability of the stack as a whole.
BTW Future Proofing
"Future proof" is a stupid term, because the future (hopefully) extends out pretty damn far. It is far too big of a word to use in technology. And anyway, the term is mostly abused by people who are concerned more with locking in a particular manipulative technology for their company's future. And most people misunderstand how difficult future proofing really is, so it gets lost in translation or becomes misleading, or it's just disappointing compared to what it could be.
"Anticipated hindsight" might not qualify as a term to coin. However I think it captures what is left after you remove the ridiculous aspects of future proofing. In the context of technology, I am using it to mean assessing what parts get included into a whole, and then how those parts come to be integrated well together.
The thing about highly integrated systems [like basically any software] is that it's difficult to just throw new stuff into the mix, and have it be just as well integrated. Good design involves anticipating future integrations - and/or - how presently integrated parts will be relevant to the future purposes of the system.
- hindsight means that you now know: the combination of capabilities that have caught up to modern technology
- hindsight means that you now know: the right balance of performance demands
- hindsight means that you now know: how the parts should function between each other
- hindsight means that you now know: how features should be integrated well for their many purposes, to be streamlined and smooth.
- hindsight means that you now know: which user ergonomics benefit the system, and which drag it down
Anticipated hindsight is the common sense within the concept of future proofing, and it is still aspirational, and it is still prone to the problems known to exist with attempting to foretell the future.
No comments:
Post a Comment