redox issueshttps://gitlab.redox-os.org/redox-os/redox/-/issues2024-03-26T06:13:11Zhttps://gitlab.redox-os.org/redox-os/redox/-/issues/1435Add driver customization2024-03-26T06:13:11ZRibbonAdd driver customizationDrivers are the most big part of an operating system and the average computer only use some of them.
This proposal is to add or remove individual drivers from a filesystem image (`config/*.toml`) by using this syntax:
```toml
[drivers]...Drivers are the most big part of an operating system and the average computer only use some of them.
This proposal is to add or remove individual drivers from a filesystem image (`config/*.toml`) by using this syntax:
```toml
[drivers] # A new section for driver entries
driver1 = {}
driver2 = {}
#driver3 = {} # Disabled driver
driver4 = "none" # Another way to disable a driver (if necessary)
```https://gitlab.redox-os.org/redox-os/redox/-/issues/1430Orbital improvements2024-02-17T20:02:36ZRibbonOrbital improvementsThis tracking issue will cover the future Orbital desktop environment improvements.
- [ ] Serialize the Orbital settings to a TOML file (Orbital should watch for variable changes on this configuration file)
- [ ] Mimic the COSMIC Deskto...This tracking issue will cover the future Orbital desktop environment improvements.
- [ ] Serialize the Orbital settings to a TOML file (Orbital should watch for variable changes on this configuration file)
- [ ] Mimic the COSMIC Desktop top bar and dock design in the launcher
- [ ] Spawn two panels, one for the top panel and other for the dock
- [ ] Add a variable option to change the dock size
- [ ] Add a variable option to hide the window title bar if its maximized
- [ ] Add a variable option to change the Orbital wallpaper (use the image path)
- [ ] Add a variable option to change the top bar position (top, bottom, left, right)
- [ ] Add a variable option to change the dock position (top, bottom, left, right)
- [ ] Add a variable option to change the keyboard map (use ISO codes)
- [ ] Add a variable option to allow the dock to hide
- [ ] Add a variable option to disable the dock
- [ ] Add a variable option to disable the top bar (move all indicators and buttons to the end of the dock, like KDE Plasma does)
- [ ] Add a variable options to change the keyboard shortcuts
- [ ] Add a button in the dock to minimize all windows
- [ ] Add an top bar indicator to show the volume settings
- [ ] Add a way to mute the sound each program in the "Sound" indicator
- [ ] Add a top bar indicator button to disable/enable the Internet
- [ ] Add a "Restart" button on the App Menu and Login Manager
- [ ] Add a "Shutdown" button on the App Menu and Login Manager
- [ ] Add a "Lock Session" button on the App Menu
- [ ] Add a variable option to change the orblogin wallpaper
- [ ] Add a variable option to change the key repeat speed
- [ ] Add a variable option to change the mouse cursor speed
- [ ] Add a variable option to change the "running program" indicator color on the dock
- [ ] Add a variable option to change the top bar color (use color codes)
- [ ] Add a variable option to change the dock color (use color codes)
- [ ] Add a variable option to change the window title bar color
- [ ] Add a variable option to add a gap around the top bar (the edges will be rounded)
- [ ] Allow the reordering of pinned programs with mouse on the dock
- [ ] Port COSMIC Settingshttps://gitlab.redox-os.org/redox-os/redox/-/issues/1428Rework the graphics handling2024-02-13T17:44:36Zbjorn3Rework the graphics handling* [x] Move text console support out of vesad to allow other graphics drivers to reuse it. (https://gitlab.redox-os.org/redox-os/drivers/-/merge_requests/128)
* [ ] Better IPC serialization/deserialization. The current ad-hoc code is erro...* [x] Move text console support out of vesad to allow other graphics drivers to reuse it. (https://gitlab.redox-os.org/redox-os/drivers/-/merge_requests/128)
* [ ] Better IPC serialization/deserialization. The current ad-hoc code is error prone and hard to keep in sync between components as you need to change everything in lockstep. Something like [Cap'n Proto](https://capnproto.org/) ([Rust implementation](https://github.com/capnproto/capnproto-rust)) may be a better fit. It should allow keeping compatibility with older programs even when we add and remove commands.
* [ ] Move the console multiplexing out of the individual graphics drivers. Instead have a protocol that allows swapping the framebuffer to be rendered by the graphics driver and then have an fbmuxd daemon which saves the current framebuffer for every virtual terminal and tells the graphics driver to swap it out whenever either switching between vt's or when the client requests the framebuffer to be swapped. The vga/vesa driver can then write it to the actual framebuffer while the virtio-gpu driver in the future could request the virtio-gpu device to change which framebuffer to use for scanout once it becomes possible for users to directly create buffers on the gpu. Fbmuxd would also handle multiplexing of input devices.
* [ ] Support for hardware backed cursor. This both decreases latency and improves energy efficiency by offloading rendering of the cursor to the display controller (on mobile devices this is an entirely separate part of the SoC by the way). Not every gpu and gpu interfaces support this though. VGA doesn't support it, but virtio-gpu does and so do all desktop gpu's.
* [ ] Allow delegating control over a virtual terminal to a different program. This would allow for example the login screen to delegate control to an instance of orbital running as the logged in user, reducing attack surface. Or for a VR game to get full control over page flipping and mode setting. It should also be possible for the delegating program to revoke access again for all the (in)directly delegated programs. This delegation should happen for both the display and input devices. Preferrably with an option for the delegating program to keep accepting input such that it can for example listen for Super+L to lock the screen and show a password prompt for the current user.
* [ ] Support mode setting. That is changing display resolutions, display mirroring, selecting which part of a buffer to show, using multiple planes aside from the hardware backed cursor.
* [ ] Allow creating buffers on the gpu and running commands like shader invocations on them. Initially just virgl (OpenGL) or venus (Vulkan) support for virtio-gpu would work. This final step would allow actual hardware acceleration.https://gitlab.redox-os.org/redox-os/redox/-/issues/1427Wayland porting2024-01-23T20:45:03ZRibbonWayland portingThis issue will track how and what is needed to port Wayland to Redox.
The main difference between X11 and Wayland is the architecture and communication, on X11 you have a server and clients, on Wayland the server and client is one prog...This issue will track how and what is needed to port Wayland to Redox.
The main difference between X11 and Wayland is the architecture and communication, on X11 you have a server and clients, on Wayland the server and client is one program (the compositor), each Wayland compositor has the freedom to implement its rendering and input interfaces.
(In both display servers the user programs are clients)
### Porting Items
- [ ] Implement the Unix domain sockets
- [ ] Support for passing memfd or posix shared memory fd's over the socket
- [ ] Port libwayland
- [ ] Port cosmic-comp from COSMIC Desktop (Jeremy is doing that)
- [ ] Port Smithay
- [ ] Port wlroots (Sway and others)
- [ ] Port KWin from KDE Plasma
- [ ] Port Mutter from GNOMEhttps://gitlab.redox-os.org/redox-os/redox/-/issues/1422(Bug) The boot randomly hangs with a large number of CPU cores2024-01-05T15:20:39ZRibbon(Bug) The boot randomly hangs with a large number of CPU coresThe boot hangs on random parts of the boot if you use more than 2 CPU cores on QEMU.
### How to reproduce
- Verify if the `mk/qemu.mk` file is using 2 CPU cores or more (`QEMUFLAGS+=-smp x -m 2048`)
- Start QEMU and verify
- If the bug...The boot hangs on random parts of the boot if you use more than 2 CPU cores on QEMU.
### How to reproduce
- Verify if the `mk/qemu.mk` file is using 2 CPU cores or more (`QEMUFLAGS+=-smp x -m 2048`)
- Start QEMU and verify
- If the bug doesn't happen, add more CPU cores on the QEMU configurationhttps://gitlab.redox-os.org/redox-os/redox/-/issues/1419Implement an out-of-memory killer daemon2023-12-02T16:44:20ZRibbonImplement an out-of-memory killer daemonOn Linux you have two types of OOM killers, kernel and user-space, as the kernel OOM killer can be slow to act, most Linux distributions tend to use an user-space OOM killer, in most cases the systemd-oom daemon.
Our OOM killer daemon c...On Linux you have two types of OOM killers, kernel and user-space, as the kernel OOM killer can be slow to act, most Linux distributions tend to use an user-space OOM killer, in most cases the systemd-oom daemon.
Our OOM killer daemon could be called `oomkd` or `oomd`.
### References
- [system-oom](https://www.man7.org/linux/man-pages/man8/systemd-oomd.8.html) - Used in most Linux distributions.
- [earlyoom](https://github.com/rfjakob/earlyoom) - Proposed for Fedora.
- [bustd](https://github.com/vrmiguel/bustd) - An user-space OOM killer written in Rust.https://gitlab.redox-os.org/redox-os/redox/-/issues/1418Multiseat support2024-01-12T12:57:21ZRibbonMultiseat supportA [multiseat](https://en.wikipedia.org/wiki/Multiseat_configuration) device is a computer with multiple ports for multiple peripherals linked to independent users of the operating system.
This issue will cover the implementation of this...A [multiseat](https://en.wikipedia.org/wiki/Multiseat_configuration) device is a computer with multiple ports for multiple peripherals linked to independent users of the operating system.
This issue will cover the implementation of this use case.
### Conditions
- Each user files, processes and devices must be isolated from other users.
- An user can't read the framebuffer of other user.
- An user can't use a wrong device.
### Proposal
(Needs more brainstorming)
- Each "seat" is a workspace for a monitor and HID devices connected to a USB hub.
- Each monitor will have a TTY with a login screen (start `orblogin` if available).
- Follow the USB hub ports position to avoid wrong device allocation.
- Use the TTY number of the monitor to assign devices.https://gitlab.redox-os.org/redox-os/redox/-/issues/1394CI testing for packages2023-10-27T13:44:24ZRibbonCI testing for packagesUsing CI tests for packages we can have a stable rolling release system, Void Linux does this, being one of the most stable rolling release Linux distributions of the world.
- [Void Linux continuous integration system](https://build.voi...Using CI tests for packages we can have a stable rolling release system, Void Linux does this, being one of the most stable rolling release Linux distributions of the world.
- [Void Linux continuous integration system](https://build.voidlinux.org/)https://gitlab.redox-os.org/redox-os/redox/-/issues/1393Exploit mitigations2023-10-27T11:07:14ZRibbonExploit mitigationsThis issue will cover the mandatory and optional exploit mitigations for Redox.
As Redox is written in Rust there's memory-safety though the compiler, thus it might make sense to disable most exploit mitigations, at least by default.
B...This issue will cover the mandatory and optional exploit mitigations for Redox.
As Redox is written in Rust there's memory-safety though the compiler, thus it might make sense to disable most exploit mitigations, at least by default.
But Redox is not fully safe Rust because many crates rely on less thoroughly checked unsafe, such as when heavily using FFI. Therefore, it might make more sense to enable mitigations for such programs, as well as for C/C++ programs, even though unsafe Rust is generally still safer than C/C++.
Exploit mitigations specific to C/C++ memory errors are unnecessary for safe Rust code.
### Criteria
The exploit mitigations on this issue must follow some criteria.
1. The mitigation is needed for microkernel-based systems?
2. If the mitigation is cheap (low performance penault) and the security benefit is considerable, it can be enabled by default.
3. Classify if it's a compiler, manual system-wide/some programs or x86-specific mitigation.
### Mitigations
This list will filter the exploit mitigations.
- Address Space Layout Randomization - userspace
- ~~Kernel Address Space Layout Randomization~~ probably overkill for a microkernel; seL4 for example uses `-static -fno-pie -fno-pic`
- Position-Independent Executables - compiler-based
- RELRO
- BIND_NOW
- SEGVGUARD (ASLR brute force protection)
- W^X (memory mappings and switching pages)
- SROP
- Trusted Path Execution
- SafeStack
- Non-Cross-DSO Control-Flow Integrity
- Retpoline - Spectre mitigation for monolithic kernels?
### Implementations
This list will track the exploit mitigations implementation.
- [x] SMAP - x86-specific, manual system-wide
- [x] SMEP - x86-specific, manual system-wide
- [x] Zero-initialized userspace stack - manual system-wide
- [ ] Read-only pages where necessary - manual?
- [ ] IP ID randomization - netstack or smoltcp? manual.
- [ ] Temporary IPv6 addresses - netstack or smoltcp? manual.https://gitlab.redox-os.org/redox-os/redox/-/issues/1392Dev room2024-03-18T00:02:32ZRibbonDev roomThis issue cover what is necessary for the dev variant of Redox.
- [x] Port Rust
- [x] Port GCC
- [x] Port LLVM
- [ ] Port Python
- [ ] Port Go
- [x] Port Vim
- [ ] Port Neovim
- [ ] Port Emacs
- [ ] Port zsh
- [ ] Port fish
- [ ] Port ...This issue cover what is necessary for the dev variant of Redox.
- [x] Port Rust
- [x] Port GCC
- [x] Port LLVM
- [ ] Port Python
- [ ] Port Go
- [x] Port Vim
- [ ] Port Neovim
- [ ] Port Emacs
- [ ] Port zsh
- [ ] Port fish
- [ ] Port Nushell (WIP)
- [ ] Port GDB
- [ ] Port NodeJS
- [ ] Port OpenSSHhttps://gitlab.redox-os.org/redox-os/redox/-/issues/1391Desktop room2024-03-17T23:59:15ZRibbonDesktop roomThis issue cover what is necessary for the desktop variant of Redox.
- [ ] Port GTK
- [ ] Port Qt
- [ ] Port Firefox
- [ ] Port VLC
- [ ] Port Servo
- [ ] Port Chromium (hard)
- [ ] Port WebAssembly
- [ ] Implement GPU acceleration (thr...This issue cover what is necessary for the desktop variant of Redox.
- [ ] Port GTK
- [ ] Port Qt
- [ ] Port Firefox
- [ ] Port VLC
- [ ] Port Servo
- [ ] Port Chromium (hard)
- [ ] Port WebAssembly
- [ ] Implement GPU acceleration (through Linux driver VMs on QEMU)
- [ ] Port COSMIC Desktop
- [ ] Port GNOME (time-consuming)
- [ ] Port KDE Plasma (time-consuming)
- [ ] Port Swayhttps://gitlab.redox-os.org/redox-os/redox/-/issues/1390Self-hosting status2024-01-31T04:12:30ZRibbonSelf-hosting statusThis issue will cover the self-hosting status of Redox OS.
Self-hosting in the low-level world is when the operating system can build itself (compile Redox on Redox), to achieve this the toolchain and tools needs to run on it.
### Buil...This issue will cover the self-hosting status of Redox OS.
Self-hosting in the low-level world is when the operating system can build itself (compile Redox on Redox), to achieve this the toolchain and tools needs to run on it.
### Build Redox on Redox
- [ ] rustc
- [ ] cargo - close to work, some deadlocks remain.
- [ ] gcc
- [ ] llvm
- [ ] make
- [x] git - included by default
- [x] curl - included by default
### Build all recipes
- [ ] autopoint?
- [x] bash - included by default
- [ ] bison
- [ ] cmake
- [ ] wget
- [ ] file
- [ ] flex
- [ ] gperf
- [x] libexpat
- [ ] libfuse
- [x] libgmp
- [x] libpng
- [x] libjpeg
- [x] sdl1.2
- [x] sdl2-ttf
- [ ] html-parser-perl
- [ ] libtool
- [ ] m4
- [x] nasm
- [x] patch
- [x] automake
- [x] autoconf
- [ ] scons
- [x] pkg-config
- [ ] po4a
- [ ] texinfo
- [ ] ninja-build
- [ ] meson
- [ ] python3
- [ ] python3-mako
- [ ] xdg-utils
- [x] vim - included by default
- [ ] perl
- [ ] doxygen
### bootstrap.sh
Once all recipes are ported the Redox package manager function and command must be added on the script.
We can do this before the fully porting by adding the Redox OS functions and command as a comment.
- A function to detect if the OS is Redox.
- A function to detect what is installed.
#### Package manager command
```sh
# sudo pkg install rust \
# cargo \
# gcc \
# llvm \
# gnu-make \
# bison \
# cmake \
# wget \
# file \
# flex \
# gperf \
# expat \
# libgmp \
# libpng \
# libjpeg \
# sdl \
# sdl2_ttf \
# html-parser-perl \
# libtool \
# m4 \
# nasm \
# patch \
# automake \
# autoconf \
# scons \
# pkg-config \
# po4a \
# texinfo \
# ninja-build \
# meson \
# python \
# python3-mako \
# xdg-utils \
# vim \
# perl \
# doxygen \
```https://gitlab.redox-os.org/redox-os/redox/-/issues/1387Feature requests index2024-02-10T18:35:35ZRibbonFeature requests indexThis issue will cover the open feature requests of Redox GitLab, send a comment if you want to see your feature request on the list.
- [ ] [Recipe categories on the Cookbook configuration](https://gitlab.redox-os.org/redox-os/redox/-/is...This issue will cover the open feature requests of Redox GitLab, send a comment if you want to see your feature request on the list.
- [ ] [Recipe categories on the Cookbook configuration](https://gitlab.redox-os.org/redox-os/redox/-/issues/1395) - build system
- [x] [Add an option for make to delete the recipe source](https://gitlab.redox-os.org/redox-os/redox/-/issues/1386) - build system
- [x] [Add an option to ignore recipe errors](https://gitlab.redox-os.org/redox-os/redox/-/issues/1416) - build system
- [x] [Enable the recipe binary syntax by default](https://gitlab.redox-os.org/redox-os/redox/-/issues/1401) - build system
- [x] [Recipe override list](https://gitlab.redox-os.org/redox-os/redox/-/issues/1402) - build system
- [x] [Dark theme by default](https://gitlab.redox-os.org/redox-os/website/-/issues/192) - website
- [ ] [Provide VM images for new versions](https://gitlab.redox-os.org/redox-os/redox/-/issues/1388) - CI server
- [ ] [CI testing for packages](https://gitlab.redox-os.org/redox-os/redox/-/issues/1394) - CI server
- [ ] [memtest86+ for the Redox bootloader](https://gitlab.redox-os.org/redox-os/redox/-/issues/1397) - recipe
- [ ] [Automatic operating system detection on boot loader](https://gitlab.redox-os.org/redox-os/redox/-/issues/1407) - boot loaderhttps://gitlab.redox-os.org/redox-os/redox/-/issues/1384Tracking issues index2024-03-28T11:00:41ZRibbonTracking issues indexThis issue cover the current tracking issues of Redox.
- [ ] [Implement the missing POSIX APIs on relibc](https://gitlab.redox-os.org/redox-os/relibc/-/issues/173) - high priority
- [ ] [Kernel/userspace separation policy](https://gitla...This issue cover the current tracking issues of Redox.
- [ ] [Implement the missing POSIX APIs on relibc](https://gitlab.redox-os.org/redox-os/relibc/-/issues/173) - high priority
- [ ] [Kernel/userspace separation policy](https://gitlab.redox-os.org/redox-os/redox/-/issues/1412) - medium priority
- [ ] [Repositories with missing GitLab CI](https://gitlab.redox-os.org/redox-os/redox/-/issues/1377) - high priority
- [ ] [Self-hosting status](https://gitlab.redox-os.org/redox-os/redox/-/issues/1390) - medium priority
- [ ] [Community hardware device porting](https://gitlab.redox-os.org/redox-os/drivers/-/issues/40) - medium priority
- [ ] [Port the most used crates of the Rust ecossystem](https://gitlab.redox-os.org/redox-os/redox/-/issues/1378) - medium priority
- [ ] [Rustify relibc](https://gitlab.redox-os.org/redox-os/relibc/-/issues/178) - medium priority
- [ ] [Forks status](https://gitlab.redox-os.org/redox-os/redox/-/issues/1380) - low priority
- [ ] [Linux driver VM optimizations](https://gitlab.redox-os.org/redox-os/redox/-/issues/1382) - low priority
- [ ] [Linux app VMs](https://gitlab.redox-os.org/redox-os/redox/-/issues/1383) - low priority
- [ ] [RedoxFS tooling](https://gitlab.redox-os.org/redox-os/redoxfs/-/issues/42) - low priority
- [ ] [Convert all legacy recipes to TOML](https://gitlab.redox-os.org/redox-os/cookbook/-/issues/174) - low priority
- [ ] [Desktop improvements](https://gitlab.redox-os.org/redox-os/redox/-/issues/1391) - low priority
- [ ] [Server improvements](https://gitlab.redox-os.org/redox-os/redox/-/issues/1375) - medium priority
- [ ] [Dev improvements](https://gitlab.redox-os.org/redox-os/redox/-/issues/1392) - medium priority
- [ ] [Exploit mitigations](https://gitlab.redox-os.org/redox-os/redox/-/issues/1393) - low priority
- [ ] [Orbital improvements](https://gitlab.redox-os.org/redox-os/redox/-/issues/1430) - low priority
- [ ] [Feature requests index](https://gitlab.redox-os.org/redox-os/redox/-/issues/1387) - low priorityhttps://gitlab.redox-os.org/redox-os/redox/-/issues/1383Linux app VMs2023-07-08T02:30:22ZRibbonLinux app VMsSimilar to the Linux driver VMs [issue](https://gitlab.redox-os.org/redox-os/redox/-/issues/1382), the Linux app VMs will make Linux-only programs run on Redox.
Why? some programs rely on Linux kernel technologies/interfaces to work, li...Similar to the Linux driver VMs [issue](https://gitlab.redox-os.org/redox-os/redox/-/issues/1382), the Linux app VMs will make Linux-only programs run on Redox.
Why? some programs rely on Linux kernel technologies/interfaces to work, like containers and filesystems.
FreeBSD and NetBSD have a Linux compatibility layer to run unmodified Linux binaries using their ported Linux kernel API, it's possible because the BSDs design is similar to Linux, thus a kernel module is developed without massive changes.
Even with that kernel module, some Linux programs don't work, this kind of implementation can't be done on Redox without massive changes, because it's a microkernel with much more simplicity.
Filesystems rely more on the kernel APIs than other programs, all development is focused on these APIs, even if you port a filesystem to other OS, it will be hard/time-consuming to adapt the new changes from other OS if it's a big/complex filesystem.
To mitigate this you can use a FUSE driver or a VM, FUSE is an universal API but lack some filesystems and the drivers can be unmaintained easily.
A VM will bring many filesystems and their improvements over the time with a small configuration effort, at the cost of some overhead (can be optimized).
Like the Linux driver VMs proposal, the Linux app VMs can be simple and made for a specific use-case, we can have a specific daemon VM for Flatpak, other for Docker, other for Snappy, etc.
Each daemon VM will be optimized/built for his specific necessities, that way we reduce memory usage, CPU time, bugs and complexity.
### Daemon proposals
- [ ] flatpakd (a VM for Flatpak applications)
- [ ] snappyd (a VM for Snappy applications)
- [ ] dockerd (a VM for Docker applications)
- [ ] podmand (a VM for Podman applications)
- [ ] genericd (a VM for any application)
### Suggestions
- Flatpak, Snappy, Docker and Podman binaries can be static linked to relibc.
- Remove the GNU/Linux userland libraries/tools from VM images.
- We could have an option to have one VM per app.
Using one VM per app we will have the VM crash isolated on the program, but it will use more memory and CPU.https://gitlab.redox-os.org/redox-os/redox/-/issues/1382Linux driver VM optimizations2023-07-12T05:10:33ZRibbonLinux driver VM optimizationsThis issue will cover the optimizations that can be done to the Linux driver VMs.
Linux driver VMs are VMs created to offer driver support for Redox, see how it works:
- The Linux VM access the device though PCI passthrough (the host s...This issue will cover the optimizations that can be done to the Linux driver VMs.
Linux driver VMs are VMs created to offer driver support for Redox, see how it works:
- The Linux VM access the device though PCI passthrough (the host system doesn't need a driver, similar to Qubes OS).
- A Redox bridge program will run on Linux userspace, this bridge will communicate with some Redox host scheme based on the driver type (audio: for sound cards, video: for GPUs).
- The Linux VM will communicate with the bridge and the Redox host will control the device without native drivers.
This is a guest-to-host communication using VirtIO interfaces, because of the virtualization some overhead will exist.
Most operating systems speed up their VMs with a type-2 hypervisor running on the kernel (KVM and Hyper-V, for example), we will use Revirt-U to do that, but more optimizations can be done to reduce CPU cycles and memory usage.
- [ ] Build a separated bridge for each device type or Linux device system.
- `drmd` - GPUs.
- `netd` - network devices (Ethernet).
- `fsd` - filesystems.
- `wifid` - Wi-Fi adapters.
- `audiod` - sound devices.
- `inputd` - mouse/keyboards/gamepads/joysticks.
- `sensord` - sensor drivers.
The userspace part can be minimal or even empty, depending on whether a kernel module is needed/beneficial for communication with the bridged device. Userspace can be empty besides init, which might not have to do anything useful either depending on much how much of the bridging is done by a kernel module.
- [ ] Use a real-time scheduler.
Linux CFS have a multitasking design in mind, as our Linux driver VMs only run the Redox bridge, as well as a few background kthreads, so we can use a monotasking low-latency scheduler to have maximum performance.https://gitlab.redox-os.org/redox-os/redox/-/issues/1380Forks status2023-07-08T02:30:22ZRibbonForks statusThis issue will track the forks used by Redox, from GitHub to GitLab and the toolchains.
Forks with pending patches to be merged on upstream or waiting relibc improve its portability (they will be merged once the Redox APIs are stable)....This issue will track the forks used by Redox, from GitHub to GitLab and the toolchains.
Forks with pending patches to be merged on upstream or waiting relibc improve its portability (they will be merged once the Redox APIs are stable).
Mark them when it's merged or don't have patches.
- [ ] binutils
- [ ] openssl
- [ ] mesa
- [ ] sdl2
- [ ] atk
- [ ] bash
- [ ] cairo
- [ ] classicube
- [ ] coreutils
- [ ] cpal
- [ ] curl
- [ ] dash
- [ ] diffutils
- [ ] dosbox
- [ ] duktape
- [ ] eduke32
- [ ] extrautils
- [ ] ffmpeg
- [ ] findutils
- [ ] flycast
- [ ] fontconfig
- [ ] freeciv
- [ ] freedoom
- [ ] freepats
- [ ] game-2048
- [ ] gawk
- [ ] gdbserver
- [ ] generaluser-gs
- [ ] gettext
- [ ] gigalomania
- [ ] git
- [ ] glib
- [ ] glium
- [ ] glutin
- [ ] grep
- [ ] make
- [ ] gstreamer
- [ ] hematite
- [ ] iced
- [ ] jansson
- [ ] libc-bench
- [ ] libcosmic
- [ ] libffi
- [ ] libiconv
- [ ] libogg
- [ ] libretro-super
- [ ] libsodium
- [ ] mednafen
- [ ] mgba
- [ ] miniserve
- [ ] netsurf
- [ ] neverball
- [ ] openttd
- [ ] pango
- [ ] patch
- [ ] pathfinder
- [ ] pcre
- [ ] perl
- [ ] pixelcannon
- [ ] pixman
- [ ] prboom
- [ ] python
- [ ] qemu
- [ ] readline
- [ ] retroarch
- [ ] ripgrep
- [ ] rs-nes
- [ ] rust64
- [ ] rustual-boy
- [ ] schismtracker
- [ ] scummvm
- [ ] sdl1.2
- [ ] sdl_gfx
- [ ] sdl_image
- [ ] sdl_mixer
- [ ] sdl_ttf
- [ ] sdl-player
- [ ] sdl2_mixer
- [ ] sed
- [ ] servo
- [ ] sm64ex
- [ ] spacecadetpinball
- [ ] openssh
- [ ] syobonaction
- [ ] timidity
- [ ] uutils
- [ ] vice
- [ ] vim
- [ ] vttest
- [ ] vvvvvv
- [ ] webrender
### Permanent forks
- gcc
- llvm
- rustc
- cargohttps://gitlab.redox-os.org/redox-os/redox/-/issues/1379Golang port2023-06-12T22:21:36ZRibbonGolang portGolang have its own standard library, thus it will need to use the Redox system calls directly (massive).Golang have its own standard library, thus it will need to use the Redox system calls directly (massive).https://gitlab.redox-os.org/redox-os/redox/-/issues/1378Crates porting status2023-07-07T22:19:38ZRibbonCrates porting statusThis issue will cover important crates that are currently inhibiting porting or need upstream Redox support to ease the development workflow.
- [ ] tokio
- [ ] mio
- [ ] ring
- [ ] crossterm (mio dependency) WIP port: https://github.com...This issue will cover important crates that are currently inhibiting porting or need upstream Redox support to ease the development workflow.
- [ ] tokio
- [ ] mio
- [ ] ring
- [ ] crossterm (mio dependency) WIP port: https://github.com/rw-vanc/crossterm.git
- [ ] acpi (remove Handler generic parameter from types)
- [ ] clap
- [ ] iced (upstream support pending)
- [ ] error_chain (and the list of newer and shinier error handling crates)
- [ ] serde
- [ ] serde_derive
- [ ] serde_json
- [ ] yaml
- [ ] log
- [ ] env_logger
- [ ] url
- [ ] tempdir
- [ ] toml
- [ ] libprochttps://gitlab.redox-os.org/redox-os/redox/-/issues/1375Server room2024-03-18T00:01:18ZRibbonServer roomThis issue cover what is necessary for the server variant of Redox.
- [ ] Port nginx
- [ ] Port NodeJS
- [ ] Port Deno
- [ ] Port MySQL
- [ ] Port PostgreSQL
- [ ] Port MongoDB
- [ ] Audit the kernel for security issues
- [ ] Security m...This issue cover what is necessary for the server variant of Redox.
- [ ] Port nginx
- [ ] Port NodeJS
- [ ] Port Deno
- [ ] Port MySQL
- [ ] Port PostgreSQL
- [ ] Port MongoDB
- [ ] Audit the kernel for security issues
- [ ] Security mitigations for x86 motherboards (https://gitlab.redox-os.org/redox-os/kernel/-/issues/124)
- [ ] Extension of RedoxFS to multiple disks for RAID-style use cases
- [ ] GPGPU support for AI and other compute acceleration (future)