maandree / mds Goto Github PK
View Code? Open in Web Editor NEWAvant-garde display server
Home Page: https://codeberg.org/maandree/mds
License: GNU General Public License v3.0
Avant-garde display server
Home Page: https://codeberg.org/maandree/mds
License: GNU General Public License v3.0
mds [pronounced /m.d.s/] (or µds [pronounced /micro.d.s/]) stand for “micro-display server”. It is a toy project of a display server with an architecture resembling that of a microkernel. The reason for having a display server architectured as a microkernel is so that components can be added, remove and replaced online. Additionally, the message passing between the servers makes it easy to design a system that lets you make clients that can listen on messages between the servers and perhaps modify them. This enables you to do so much more with your display server. Moreover, if a single part of the system crashes it does not bring down the whole system, and the crashed server can be respawned with minor side effects. mds is architectured in three layers: a microkernel, a master server and a collection of servers. And clients are actually located on the same layer as the servers, because there is no actual difference, the only thing that separates a server from a client is for what purpose you run it. mds's kernel is a minimal program that do initialisation of the display, such as giving it an index and create runtime files and directories for servers and other programs to use. Then the kernel creates a domain socket for the master server and spawns the master server and respawns it if it crashes. Because of this, if the master server crashes it will not lose its socket when it is respawned. The master server than, on its initial spawn, starts the all servers and other programs that the user have choosen and then starts accepting connections to it and coordinates messages between servers and clients. Further, separating all components into separate processes enables us to only give the servers the privileges they actually need, rather than having one program with root privileges that takes care of everything even things that do not do require any privileges. All mds's servers, that is all running parts of mds except the kernel, are designed so that they can re-exec themself so that they can be updated online without any side effects. Servers serialises their state, saves it to RAM (in a directory created by the kernel), re-exec themself and loads their serialised state. The kernel cannot do this because when it has spawned the master server it has no reason to re-exec, its only mission is to respawn the master server it if would happen to crash. It would technically be possible to enable the kernel to re-exec but it is not worth it as it as no reason to re-exec, and doing so puts the display server at risk of crashing. Read the discussion at the end of the info documentation, it contains meditation on how to make even better display servers. Is this vapourware? Probably, I often get bored with graphical projects. Graphics sucks.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.