Top 5 of Our Personal Wishlist to make Minix Better

145 views
Skip to first unread message

Daniel Morgan

unread,
Oct 7, 2023, 4:36:06 PM10/7/23
to minix3
Hello,
There are the wishlist, ideas, and a roadmap on the wiki for Minix 3.

And there are many enhancements and bugs (issues in github) that need to be done to bring Minix up to date as a modern OS.  And I see many PRs there. 

However, this message is about What are YOUR Top 5 wishlist items.  They could be enhancements or a wish to resolve an issue with Minix or an application or service or driver that is not functioning correctly.

Port an open source application or library or utility to Minix.  If you need help, ask questions here on the Minix google group or on IRC #minix..

Here are my Top 5 - not in any order:
(1). Good multithreading support than we have now.

 I think we have GNU pth and mthreads.  But we need a real thread solution.   We could use the clone() sys call from Linux as inspiration - not the source from it - but inspiration and its documentation about it.  We could look at freebsd with its rfork and rfork_thread.   We could look at NetBSD which uses LWP (Lightweight processes) where for each user thread, there is a 1;1 with a kernel thread.  And I forget what OS - the scheduler does not worry about processes - it only schedules threads - and every process has at least one main thread.

(2). Get the application mc - Midnight Commander to work on Minix. 

MC is available via the pkgin package utility.  MC works fine on NetBSD.  This may require fixing internals in Minix such as console tty termcap, etc.  May even be related to thread issues.  Not sure.

(3).  Get rtl-sdr and other SDR devices to work on Minix.

SDR (Software Defined Radio) devices that connect via USB include rtl-sdr, AirSpy, LimeSDR, and HackRF.  Of course, this requires a good USB, PCI, ACPI, APIC stack of stuff.    RTL-SDR is implemented on top of libusb (i think) which is a user-mode library that is LGPL open source, cross-platform (Windows, Linux, NetBSD, Darwin, etc.), and designed to list USB devices but also be used to create a device driver in user mode to be used by user applications.  I want SDR Play to work with Minix, but their drivers are not open.  This also requires good audio and sound card support.  The whole purpose of this is port some SDR applications that use a lot of DSP (Digital Signal Processing) - basically math and algorithms - is to use an SDR application on Minix. Either an open source developed for Linux or NetBSD or something I write myself.

(4). Good USB support. There is some support for USB via DDEKit but it only works on the ARM port I read.    This requires good support for PCI, ACPI, and APIC as well.  See wiki at osdev.org on these topics.   See web site libusb.info as well.   You can find cheap old books for PCI and USB on amazon and other books stores.  But NetBSD is a good start to see how USB, PCI, etc. work..

(5).  Create a library like libusb but BSD, MIT, or X11 licensed.  Cross-platform especially Minix and NetBSD.   Able to list PCI and USB devices including HID and mass storage, hub, host controllers, etc.   But to be able to develop user mode applications / device drivers around it that has an easy to use API.  And include sample applications that could be included in Minix userland to list the USB and PCI devices easily.  Not sure if those tools should be restricted to super user or some privileged group or not.

There you go.  Are there any applications or servers or device/device drivers you like to see working on Minix?

Of course, this requires me to do a lot of research.  Re-read-read the Minix book, man pages of Minix, NetBSD, and other OSes.  But also, get deep into c and assembly programming in the unix environment.

Am i way over my head?  Oh yes!   But you have to start somewhere.  Will I fail? I am sure I will.  But to succeed at something, you do not give up.  Programming requires a ton of research but also requires a lot of trail and error too - and lots of debugging.

I decided instead of trying to add a feature to Minix or fix an issue, I should look at what I want the results to be - an application, utility, library, or service that I want to see working and working correctly on Minix.   So, this is why i list certain things.

So, can you give me a list of 5 items of your own wish list?

Thank you,
Daniel

Vishal Oza

unread,
Oct 7, 2023, 11:37:53 PM10/7/23
to min...@googlegroups.com
  1. Threading support
  2. updated clang/llvm - last I checked the version was 6 but clang is 16-17
  3. Task schedular - this is related to threading support, and a task schedular assigns thread work to hardware core
  4. Support for RISC-V and support for 128 bit computing as well as hardware support for GPUs, FPGAs, and advanced networking cards
  5. (Hot take)optional file systems and other common utilities - I would like the ability to remove services I do not need as run a lean system

--
You received this message because you are subscribed to the Google Groups "minix3" group.
To unsubscribe from this group and stop receiving emails from it, send an email to minix3+un...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/minix3/c30621cc-a472-42ca-9936-ddf88a7b3ed2n%40googlegroups.com.

KenUnix

unread,
Oct 8, 2023, 11:19:45 AM10/8/23
to min...@googlegroups.com
Daniel,

Why not simply go with ghostBSD?

-Ken

Mathew Roberts

unread,
Oct 9, 2023, 11:19:58 AM10/9/23
to minix3
My personal list in no particular order:

1. Threads
2. SMP
3. x86_64 support
4. USB support
5. Porting Rust to Minix

None of the above are small things and I personally don't think any of them are blockers for a 3.4 release. Also, some of the above items may require other work first anyway (a newer LLVM/GCC).

Daniel Morgan

unread,
Oct 9, 2023, 11:51:05 AM10/9/23
to minix3
Hello Vishal,
Where would someone even begin to support RISC-V?

If anything, I would hope to get i386 and ARM support working good first in Minix 3.4+.  I say 3.4+ to indicate anything 3.4 and later.  Get ARM support working for the various Beagle boards and Raspberry Pis.  And later port to the 64-bit for amd64 and whatever the 64-bit version of ARM is called. Is it called AARCH64 or ARM64?

But yeah, RISC-V seems promising.

Thanks for replying,
Daniel Morgan

Jean-Loups

unread,
Oct 9, 2023, 12:30:44 PM10/9/23
to min...@googlegroups.com
+1
Envoyé de mon iPhone

Le 9 oct. 2023 à 17:51, Daniel Morgan <linqd...@gmail.com> a écrit :



Jean-Loups

unread,
Oct 9, 2023, 12:34:50 PM10/9/23
to min...@googlegroups.com

Envoyé de mon iPhone

Le 9 oct. 2023 à 18:30, Jean-Loups <jean-...@blues-softwares.net> a écrit :

+1

Envoyé de mon iPhone

Le 9 oct. 2023 à 17:51, Daniel Morgan <linqd...@gmail.com> a écrit :


Hello Vishal,
Where would someone even begin to support RISC-V?

If anything, I would hope to get i386 and ARM support working good first in Minix 3.4+.  I say 3.4+ to indicate anything 3.4 and later.  Get ARM support working for the various Beagle boards and Raspberry Pis.  And later port to the 64-bit for amd64 and whatever the 64-bit version of ARM is called. Is it called AARCH64 or ARM64?

Vishal Oza

unread,
Oct 9, 2023, 12:38:57 PM10/9/23
to min...@googlegroups.com
RISC-V is open source, so you could see the assembly instructions if needed. Both modern gcc and clang should support both 32 and 64 bit RISC-V but 128 RISC-V is being worked on.You can check riscv.org for more spec information.

Daniel Morgan

unread,
Oct 22, 2023, 5:04:23 PM10/22/23
to minix3
Hello Matthew,

Yeah, you could list more items than 5.  The 5 was just an arbitrary number.

I was hoping people would list not just the underlying technologies - but what programming language or library or tool or application they would like to see working - and working well on Minix.

I was reading whenever good preemptive multithreading is added to Minix including kernel and user mode threads, it might be a good idea to consider SMP support as well because once you go to add SMP, it would be a re-write if SMP was not considered at first.  Of course, this would require change things in the kernel, various device drivers, servers, libraries, etc.  Not an easy task, but best to start somewhere to have something to play with.

Good programming language support is what will attract people back to Minix like Rust.   And others like Node.js, Go, OpenJDK, .Net 7 (base it on the NetBSD or Linux port), Python 3.9, Ruby.  And once the OpenJDK is working on Minix, it opens up languages that target the JVM like Scala, Kotlin, and Clojure.   Plus, this will help identify the areas lacking in Minix.  I think Python 2.7 support is already in Minix 3.

I see there are a couple of efforts by others who tried to port to Rust.  Would a half-working implementation of Rust be acceptable to include until the changes to Minix have been done to support Rust?

Yeah, 64-bits will make Minix a modern OS but not as important as getting the 32-bit ports of i386 and ARM working well. 

Yeah, a new release would be nice.  If I could figure out how to create a CD-ROM ISO image file based on what I have built from git master, I would.  But my build fails trying to do a make distribution or make release.  Preferably, I would like to include the source code.  If not, create a bzip2 compressed tarball - include it with the CD or have it available for download.  bzip2 is included with Minix 3.4+.  I just verified this.

So, i need to revisit why my make distribution fails.  I do want to create an unofficial ISO so people can download, but I am stuck.  I probably should post the error somehow.   Maybe i can use ssh to shell into my Minix on bare metal machine from Linux machine to get the info so I can post it on this minx google group.

Stux, any suggestions on creating a CD ISO Image file?

At first, I thought a DVD would be nice too if I could figure that out, but I realized that might use more bandwidth than I am willing to pay an ISP for.  But a DVD could include the source code and other packages like rust.

Thanks,
Daniel

Jean-Loups

unread,
Oct 23, 2023, 7:24:31 AM10/23/23
to min...@googlegroups.com
Hi,
I think the most effort is to write in C object, porting to 64 bit and risc V 128 bit.

I give a link to try with BeagleBone…

I hope, but my skills is too less to help really, minix not death.
Kind regards,
@jean-loups

Envoyé de mon iPhone
Reply all
Reply to author
Forward
0 new messages