Incorporating drivers into Xserver tree #207
Replies: 8 comments 30 replies
-
My question was: How loose or tight is the coupling between the Xserver and the drivers? And what would be the benefits of keeping the drivers separate? Historical fun fact: According to DDX - freedesktop DRI Wiki they thought about the same, quote:
|
Beta Was this translation helpful? Give feedback.
-
Beta Was this translation helpful? Give feedback.
This comment was marked as off-topic.
This comment was marked as off-topic.
-
The DDX drivers are not meant to be useful outside an X server. It makes sense to keep them in a same tree. For source-based distros, we can provide flags like There is an extra problem to deal, however. |
Beta Was this translation helpful? Give feedback.
-
I vote to return to the monolithic source tree model used by XFree86. The tradeoff being slightly increased disk usage is negligible by today’s standards, especially when weighed against the performance and latency benefits. Getting more performance gains over wayland is a must to sell using us as a default. Building drivers in-tree rather than as external modules aligns with Wayland’s convention of embedding components at compile time. This approach eliminates dynamic module lookups and linkage jumps, which can reduce runtime overhead and improve input/output latency. It also simplifies packaging and installation. The individual drivers can be enabled or disabled directly via Meson build options without the need to manage separate module files. Keeping drivers as external modules adds unnecessary complexity. Folding them into the xserver tree would streamline scope management and make the build system more coherent. |
Beta Was this translation helpful? Give feedback.
-
After thinking about the change for some time I would like to add my two cents here: Advantages... as expressed so far in various places.
Neutral
Disadvantages
Open QuestionsBesides the things above:
Social ContextI think the people came here too because they don't want to be forced upon something. Pushing this change without good reasoning and consent could make them leave the project at worst. So we need a clear picture and weigh in pros and cons. For the decision making process I propose Sociocracy - basic concepts and principles - Sociocracy For All, especially Consent Decision Making - Sociocracy For All. In short: address concerns sincerely and seriously so there are no loosers in this quite fundamental question and we have a consent in the core team. We have packagers on board who can assess what the integration of the drivers means for packaging. We should listen to them as well to factor in this aspect since it will also affect the *NIX distributions "out there". Closing CommentsI think we should only ever dare to touch anything if there is someone able to test the things we touched. Like if we say touch the Geode driver there has to be someone testing the correct functionality afterwards. Otherwise we should not touch or move it in my opinion. This project is about software from decades. More than 345.000 SLOCs of the Xserver alone representing wisdom. Or at least a functionality. I think no one is safe to know about all the compromises and ways gone and ways avoided to make this stuff work. I am not against touching and modernizing it, but we should be able to say afterwards: it (still) works. We should keep in mind that one of the unique selling propositions of this project is to keep the oldie but goldie things working. And this has to be ensured. Others - I won‘t mention Wayland here - decided to just kick out all the past working stuff. We have stated that we will act differently, and this is also expected of us. |
Beta Was this translation helpful? Give feedback.
-
This is my elaborated answer to @b-aaz at X11Libre/xserver#449 (comment)
I do not believe this is an unsolvable problem. The GNU Changelog standards solve this by prefixing each entry of changelog by the "modules" it affects. This creates a logical separation that can be grepped later. Further, in a certain sense the project is already following it: https://github.com/X11Libre/xserver/commits/master/
How much, precisely? I believe it will not be so big at all. |
Beta Was this translation helpful? Give feedback.
-
Regarding this statement:
I don't buy this. One simply cannot complain about "people did so many weird hacks in their drivers instead of just extending / refactoring the API/ABI" and say "it's just easier to have them inside the Xserver tree, sharing the same lifecycle" in the same sentence. My reasoning: I might not be a C and X11 hacker, but I spent a few years (more!) with doing exactly the opposite of what this idea proposes. I have split up a lot of legacy monoliths that were no longer maintainable due to their lack of separation of concerns and exorbitant complexity and divided them into several well-tailored services. One of the main problems with monoliths was always that unrestricted access to internal methods of “remote” subsystems created such a high degree of dependency within the overall system that no one could make a simple change without causing errors elsewhere (see big ball of mud). One of the first steps was always to identify the responsibilities of the rudimentary subsystems and design an interface (API/ABI) in order to be able to separate parts of the agglomerate code and, for example, make it easy to develop and test again. The next part was to implement the API and connect the newly created service with the old monolith. Once that worked the monolith implementation of the API was removed. As a bonus we gained not only easy testability and per-service scalability but also team-scalability and a clear separation of concerns between the subsystems and the responsible teams. There's more, but I'll spare you the details for now. So given my experience I would go after the, quote "just extending / refactoring the API/ABI" instead of smashing everything together and maybe that way create a big ball of mud. That's exactly what I was referring to in:
|
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Hi folks,
for quite some time I'm thinking about moving currently external drivers into the Xserver tree, just like we already have some drivers in-tree.
The advantage is not having to care about different Xserver versions within driver code and vice versa. In the longer run, it also makes it easier dropping things from official SDK (that needs to be kept stable) and so making refactoring easier. (of course, only those that aren't used by ugly proprietary Nvidia driver).
Historical note: back in xfree86 times, all drivers been part of the monolithic source tree.
What are your thoughts ?
Beta Was this translation helpful? Give feedback.
All reactions