Hi everyone,
I mentioned a long time ago I would make this post and real-life issues and commitments have kept me from doing so. This, sadly, reflects on the difficulties of moving this project forward as many of the previous volunteers have had to devote their time an energy to focus on their jobs and real-world endeavours. Well, I'm finally sitting down and taking some time try to carefully craft this post.
I'll divide the post into 3 parts:
* I'll try to discuss the state of Minix as an organization
* I'll attempt to summarize the work that is pending to erase Minix's technical debt
* I'll try to explore our options with regard to the future of Minix
I'll also use lots of bullet points as it helps me keep my thoughts organized :)
The State of Minix:
- Currently, Minix is both an Operating System and a Dutch Non-profit (Stichting MINIX Research Foundation). The non-profit is the steward of the Operating System, its maintenance and Development. As I understand it, the non-profit is owned by Andrew S. Tanenbaum [https://en.wikipedia.org/ wiki/Andrew_S._Tanenbaum] and its property and operation are managed by former VU students who worked on Minix with AST. I believe that there is meant to be a board of volunteers that are tasked with managing the foundation. (Please reply to correct any errors.)
- For the record, I am not directly involved with the management of the code or the foundation. At most, I try to remain an active participant in the community whenever possible.
- Unfortunately, most of these volunteers have full-time jobs, families and/or real-world commitments that prevent them from givin their attention to the project. (I should know, I too have to prioritize these commitments over the project).
- That means that there are no full- or part-time developers working on the operating systems, and no full- or part-time staff maintaining our servers and digital properties. We do have one volunteer who is available for server maintenance in case of emergencies. This has left the project in a state where it can be considered dead or in Hibernation. (I'd like to be optimistic and consider it to be in Hibernation.)
- However, Minix is a name that retains wide recognition. It is still used as teaching material for OS development worldwide. Regularly, people inquire about the state of the OS or details about the OS on IRC and on this google group (simply read through recent posts for relevant examples). There are people regularly interested in volunteering for the project, but unfortunately lack the technical background and experience needed.
What work needs to be done?:
Here is a list of some of the most crucial items to erase some of Minix's technical debt:
- * Fix cross-compilation issues in Debian [https://github.com/Stichting- MINIX-Research-Foundation/ minix/issues/229]. This is the most common cross-compilation platform. Changes in gcc seem to be preventing users from simply running the release tools with no modification.
- * Enable user thread support on pkgsrc packages. Most modern software now assumes that operating systems provide native thread support. Minix does not. Instead, packages need to be automatically compiled and built while using userspace threading libraries available in Minix. I've been told pkgsrc is supposed to automatically do this, but for some reason it's broken in Minix. This prevents modern packages from building in Minix due to dependencies (for example: all packages that depend on a modern version of python won't build if python itself won't build).
- * Bring Minix's userland up to par with current NetBSD [https://github.com/Stichting- MINIX-Research-Foundation/ minix/issues/258]. This is not a straightforward process and this was previously conducted by a volunteer. This may in some way be related to the pkgsrc/threading issue I mentioned above.
- * Complete work for Clang Support on ARM [https://github.com/Stichting- MINIX-Research-Foundation/ minix/pull/195]. This is one of those loose threads that doesn't prevent a release but would be nice to finish up. On x86 Minix uses the clang compiler to build its code. However, on ARM there were technical reasons that forced builds to use gcc to build its code. The linked pull request fixes that. However there are a few tests that fail which need to be resolved before the pull request can be pushed to the master branch.
Here is a list of lower-priority items that nevertheless need to be implemented in order to turn Minix into a modern OS and fully erase its technical debt. Some and more of these items can be found in the Wishlist [https://wiki.minix3.org/doku. php?id=wishlist:start], David's wishlist [https://wiki.minix3.org/doku. php?id=wishlist:david] and Roadmap [https://wiki.minix3.org/doku. php?id=roadmap]:
- Complete and merge work done on a Raspberri Pi port of Minix [https://github.com/Stichting- MINIX-Research-Foundation/ minix/pull/134] from GSOC 2017[https://wiki.minix3.org/ doku.php?id=soc:2017:start]. This work is important because there were improvements made to the kernel that made it more generic and easier to port to new platforms. This would likely facilitate several of the items listed below.
- Port Minix to x64 [https://wiki.minix3.org/doku. php?id=soc:2018:start]. This was a proposed GSOC that never received funding. Minix only builds on x86 and runs on x64 under emulation. This port would allow Minix to run natively on x64 and use all of the RAM available in the system. The caveat is that PAE support is required in x64 (which Minix does not have) and there may be minor issues with pointer types in some parts of the code.
- Add kernel thread support. This is a bigger issue than it sounds. Currently, each process can support only a single thread and would emulate multiple threads using user libraries. Unfortunately, this has performance implications since any single blocking operation (such as I/O) blocks all threads. Not only the kernel, but all servers have to be updated to support a platform where a process can have multiple threads each blocking independently.
- RUMP support: Supporting the RUMP kernel [https://en.wikipedia.org/ wiki/Rump_kernel] has the potential of allowing Minix to use all or most of NetBSD's drivers with little porting necessary. This is why it's listed in both the 2017 and 2018 GSOC proposals.
- USB Support: another big requirement since all modern hardware depends on USB. USB development was explored but no implementations are available. As I understand it there are other requirements (such as ACPI and APIC support) that need to be met. It is the hope that RUMP can provide these for free or cheap-as-free.
- Add SMT Support: who doesn't like multi-core architectures? Minix can only run on one CPU and we need to change that. There is a pull request [https://github.com/Stichting- MINIX-Research-Foundation/ minix/pull/292] that attempts just that but it hasn't been pushed to master, let alone thoroughly vetted and tested. If threading support is implemented, these changes may need to be revisited.
- Implement Job Control [https://wiki.minix3.org/doku. php?id=wishlist:david] - this is necessary to get all the POSIX goodies [https://en.wikipedia.org/ wiki/Job_control_%28Unix%29] people are used to such as process grouping.
- Security Hardening Minix: code audits, security audits, and eventual formal verification like SEL4 should also be a long term goal. Due to technical debt, Minix may vulnerable to exploits that have already been secured in other OSes. Some of the speculative execution vulnerabilities come to mind (though the Minix microkernel architecture itself may naturally prevent some of these). Minix's service model means people have to jump more hoops to do something nasty to the OS. But if minix were to gain popularity, it would get the same scrutiny as mainstream OSes and have those extra hoops discovered.
This list is long but not exhaustive. None of the items are simple either. However, tackling the above items should bring Minix nearly on par with NetBSD's software and hardware support. For those who are not aware: Minix adopted NetBSD's userland in order to allow developers to focus on the Microkernel architecture itself. Among other things, RUMP was believed to be the right approach to abstracting hardware support from the kernel architecture and one of the factors in deciding which BSD's userspace to adopt. However, that doesn't mean tools from the other major BSDs can't be used. But being able to virtually replace the NetBSD kernel with Minix's architecture was the eventual goal behind this decision.
What are our future options?
As mentioned above, minix has interest but no full time developers or managers. But there is name recognition and interest remains despite the lack of updates.
Here are some options going forward:
- We could associate with a larger group like Debian's SPI [https://en.wikipedia.org/ wiki/Software_in_the_Public_ Interest]. This group supports projects of various sizes, license types and project types. They help raise funding and are probably available for consulting. Their experience could be a valuable asset to a project such as Minix.
- We could directly collect money for full time developers like React OS [https://www.reactos.org/ donating]. This would be easier with a larger and more experienced group.
- We could find a new academic sponsor. With AST's retirement, there are no stakeholders with academic interest in leading the project. Announcing a search for academic partners might be an option.
- We could maybe do both things: How do we keep minix as both a practical and educational OS? Many people say Minix's code has become "complicated" but modern OS development *is* complicated. Minix is one of the few "simpler" OSes out there whose source is well-documented enough to be used for OS development curriculum. Whatever developer(s) are hired could keep that as a goal during development.
- A related goal could be to maybe create a community / Wiki 4th edition version of the OS book? That is, to update and organize the documentation enough where a Creative Commons licensed edition of the OS book could be published. (Hard copy proceeds would fund the Minix non-profit.)
- We also need to finalize a 3.4 release and plan for a solid 3.5 release implementing as many of the items above as possible. Each release gathers further interest in the project and can create a positive feedback loop for the project in terms of support and interest.
All of these options require two key things: Money and active personnel. In addition to full-time developers we need people to manage public relations, funding and project management. People to update documentation would cover the educational end of things. We also need an active board to steer the hiring of said people. Forking the project has been mentioned in other projects. That is fine, but the group doing the fork will eventually have to tackle all of the problems and issues I've mentioned in this post. Ideally, Minix and its foundation should be the one revitalized in order to lead this effort.
I'd like to hear the opinion of both new contributors as well as the developers to contributed their blood, sweat and tears to turn Minix into the amazing OS that it is and who also had grand dreams to turn it into the OS that it needs to be.
-Stux
To unsubscribe from this group and stop receiving emails from it, send an email to mi...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/minix3/ea4aaa38-9f00-44ca-bc15-c2c3338d6e56%40googlegroups.com.
--
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 min...@googlegroups.com.
To unsubscribe from this group and stop receiving emails from it, send an email to min...@googlegroups.com.
Hi Roger,
Thanks for your reply.
Isn't possible to use NetBSD or FreeBSD driver modules, rewrite for MiniX system call, and use it on MiniX userland space ?
Write IPC and system call between many MiniX kernel in the same CPU but one pers core...
I will try...
Dark.
Hi all,
May be can use one kernel by core and do an IPC to speak between each kernel... Like PS3 have one master cpu and some else cpu for specific work. Can dispatch the core charge to different core... It's just idea.
I think too need to write one single UI, like haiku, but I think need can use it at the same with mouse and keyboard like a tiling... And a frame buffer for TTY using... And to, two ways, one for server and one for desktop. Or a simple cli with frame buffer for server use and a meta package for desktop use...
Support more than 4Go is important I think for server use.
And desktop use...
... I lost else I want say ...
BR,
Dark.
---- Roger Voss a écrit ----
> 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/808c2f4b-2366-4c69-82fd-9ae21bb32c3b%40googlegroups.com.
---- Roger Voss a écrit ----
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/808c2f4b-2366-4c69-82fd-9ae21bb32c3b%40googlegroups.com.
--
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/417e7dfa-d820-40e6-a642-d0f5b814b05e%40googlegroups.com.
I do not see any real copyright issues with lifting text straight from the Minix 3 Wiki and adding it to a Wikibook other then even the Wiki is dated? Keep in mind I am not part of the Minix Wiki team and I am looking at the Wiki from a licencing issue point of view. I think you should be find as long as you give the official Wiki maintainers access to update the Wiki books
On Sun, Mar 22, 2020 at 2:44 PM peter bennett <peter....@gmail.com> wrote:
I'm not sure that my vote should be counted. I'm not a contributor.But I'd like to be.--
I like all of the options suggested by Stux. I guess the final decisions may be made by anyone who is able to get behind one of the options and push. I don't see any of the options as mutually exclusive.
Certainly a number of these things can be done at the same time.
Any way we can gain some active contributors to get us nearer a 3.4 release would be great.
If I can find the time I'd like to update the wikkibook https://en.wikibooks.org/wiki/Minix_3
make it a guide for anyone who wants to understand how the kernel works.
Are there any copyright issues with lifting text straight from the Minix 3 Wikki and agging it to a Wikibook?
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 min...@googlegroups.com.
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/2841bf1d-12c7-4619-93b4-f510fa9cc6den%40googlegroups.com.
--
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/d150e03a-d84f-c21e-2dd1-b230d3425967%40inwind.it.
I think that Minux has not been worked on for a few years with the last official release being 3.3.0 and the 3.4 release candidate? I think the holding issue now is with NetBSD compatibility.
--
You received this message because you are subscribed to a topic in the Google Groups "minix3" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/minix3/nUG1NwxXXkg/unsubscribe.
To unsubscribe from this group and all its topics, send an email to minix3+un...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/minix3/24ae1470-10d9-435e-acaf-9465619650a4o%40googlegroups.com.