Regarding Guidance on Contributing to Medium/Hard Tasks in Wishlist

8 views
Skip to first unread message

Kaushal Patil

unread,
Oct 4, 2020, 2:51:38 PM10/4/20
to minoc...@googlegroups.com, Prachee Javiya, Panth Patel
Hello,
As a part of my operating systems project in university, we have been asked to work with a real world operating system and try to contribute to it (perhaps fix issues and add features to it). And so while searching for a stable and good open source operating system, I came across Minoca and hence I would like some guidance on tackling one of the medium/hard tasks stated in the contributing wish list. We would be a group of 3 students who would try to tackle one or more tasks in a given time span of 6 weeks, a little background is that we don't have prior experience on developing for an operating system and therefore I realise how unusual my request is as it's coming from a complete newbie(as an OS dev). I personally was interested in implementing audio stack, porting go, or writing a better scheduling algorithm. I would like to ask if it would be possible for us to give this a try and wanted some light as to how I should approach this.    
Is this possible given I have hardly any prior experience in this field? Also if the devs have any other suggestion or want us to work on any other area, I would like to know. It's not compulsory for us to get our contribution merged into the repository so even if it's a little difficult, we can still go ahead and try to do it. I would appreciate a response regarding whether I (and my team) should go ahead and work with Minoca and if yes, in what areas will we be able to contribute ?
I am personally well versed with Python and I know good enough C/C++ as I have worked with it in the past.
P.S. : I know how unusual this email is and I thank you for reading it and I would appreciate a response!
Thank You
--
Kaushal Patil
B Tech ICT (Ahmedabad University)
---------------------------------------

"A will,will find a way"

ev...@minocacorp.com

unread,
Oct 4, 2020, 8:49:35 PM10/4/20
to Kaushal Patil, minoc...@googlegroups.com, Prachee Javiya, Panth Patel
Hi Kaushal,
Thanks for taking a look at Minoca. We'd certainly love the help. There
is a Wishlist document [1], some of those items are still relevant. The
suggestions you came up with were great, I can comment on each of them:

* Porting Go: I'd love to have this, great idea. I haven't gotten to it
yet since Go doesn't use the C library. You'd need to wire up Go's
system call interface to Minoca's libminocaos for each of the system
calls Go wants to use. Some of them might require a little glue code to
get Go the interface it's expecting, but given that libminocaos supports
POSIX, it should work fairly well. This would be a good project as even
partial progress can be used towards a final port.

* Audio: We have some basic support for intel hda and Raspberry pi 2 at
[2], but support for more drivers is sorely needed. The Intel drivers
were only tested on a few devices, there may be testing and debugging to
get them working on more modern platforms.

* Scheduling: Also a great suggestion. We've got some code for
scheduling and grouping, but the current scheduling algorithm is
basically round-robin plus stealing tasks from busy cores [3]. It works
reasonably well for the workloads we test, but there's certainly room
for improvement, and probably some low-hanging fruit. You'd want to add
some tests and instrumentation so you could see the effect on latency
and throughput your changes are having. We need that too.

Some other things that come to the top of my mind if you're looking for
other ideas:
* Write a driver. We need drivers for: NVMe, any Wifi part, missing
peripherals on Raspberry Pi, virtio, SDIO, and tons of USB peripherals.
* Try to get Firefox or Chromium ported onto the xorg server we already
have running. It would be very satisfying to see a browser running on
Minoca.
* Port Wayland/Weston to complement or replace the Xorg support we've
got in third-party.
* Write a RISC-V disassembler, and port enough of UEFI over to get
qemu-system-riscv connected to the Minoca debugger.

Let me know what you decide to do. I can also help provide code review
if you want to post PRs of your work in progress.
-Evan

[1] https://github.com/minoca/os/blob/master/docs/WISHLIST.md
[2] https://github.com/minoca/os/tree/master/drivers/sound
[3] https://github.com/minoca/os/blob/master/kernel/ke/sched.c#L1129
Reply all
Reply to author
Forward
0 new messages