I’m pranav, a second year Computer science student. I have deep-seated interests Operating Systems and compiler designs and i hope to pursue a PhD in these fields.
I recently discovered Haiku while researching GSoC ogranizations and i honestly feel like i have found a “hidden gem“. i was happy to find a community that prioritizes such unique, C++ architecture, its exactly the kind of project i was looking for to broaden my horizons.
Background and skills:
4+ years of linux experience (current home is arch). I am setting up my developement environment inside arch using QEMU to began exploring the system.
i’m comfortable with c/c++, python. i also have experience with java, although i have not used it for 2 years.
While back i worked through the Nand2Tetris course, where i built a ALU from logic gates in simulation. I thoroughly enjoyed the process, though college curriculum demands eventually prevented me from finishing it. it actually made me quite sad as i was not able to build the hardware for it at that time, but its what led me into robotics(ROS2 and esp32).
I want to be upfront that while i may be using Unix for a long time, I am a “blank slate” when it comes to actual kernel implementation. i’m currently reading Operating Systems: Three Easy Pieces (OSTEP) to build a foundation, but i’m still learning exactly how a os subsystem interact, how memory is managed and how drivers interact with the kernel.
the projects that i’m interested in are :
FreeBSD compatibility layer for FDT attached network devices
Improving the Btrfs filesystem
I am open to any other suggestion. If there is a project better suited for someone still building foundational knowledge, i would love to hear em. Regardless of the GSoc selection outcome, I intend to continue contributing to and exploring Haiku as it aligns perfectly with my academic and research goals.
Besides reading the source, are there any advised method or specific exercise recommended to get familiar with the system architecture more quickly ? Also, if there are some other resources besides OSTEP that you think would be more relevant to Haiku design, I am all ears !!
As, I am new here, please let me know if there are some specific rules or “unwritten” guidelines i should be aware of. I apologize if I have misunderstood any technical details or community norms in this post
I’m very eager to learn and happy to be corrected .
A very warm welcome @iamdumb . Hope you enjoy your time here!
As for user land there is The Haiku Book: Welcome to the Haiku Book , which I’m sure you have found already. As for the kernel, I’m not aware of any specific documentation. Others please step in and correct me here!
Also the IRC channel is very active, and surely a good place to connect in general and ask questions.
The BTRFS filesystem one will likely be more about data structures and maybe memory management (disk caches, etc). The code will eventually run in the kernel, and there is some opportunity to dig into the VFS (virtual filesystem) code that can be interesting in that regard.
The FreeBSD compatibility layer will be mainly about drivers. However, the goal for me is to get Haiku running on an ARM system, so, depending on how the project goes, it could extend as we find other things that are broken on the ARM platform.
I owuld say for a succesful project, the more important thing is working on something that you find useful (for your own learning, but maybe more importantly for how you would use Haiku). So, for these specific projects: do you already use btrfs on your Linux system? Do you own some devices with ARM CPUs that you would like to boot Haiku on?
It’s possible to do the projects without that (in btrfs case, by creating a test partition, and in ARM case, by using QEMU to simulate an ARM device on another machine), but I think it will be harder to find the right direction, and the whole exercise will be a bit more like a school assignment (where you do things because someone asked you to) and less a personal project (where you can experiment and see by yourslef what the next needed steps are). Since our goal with GSoC is to gain new contributors that will continue working on Haiku after the project ends, we will be much more likely to find some success in that latter case.
Ah yes i have used btrfs while i was using suseOS i believe it works on CoW principle, then again it seems interesting to study upon it, but on my system i use ext4.
i will mainly use QEMU to simulate arm i may be able to get a rasberry pi from one of my society senior to test maybe.
and in the project regards uh will i be denied to do anything outside the scope of the project like proposing another way of some implementations in the code im working upon?
then i will be reading more about these topics and i believe i read that haiku is also being ported to risc-v architecture. which i was exited to read but didnt saw any project related to it.
During the GSoC application phase, you need to write an application proposal with an outline of the changes you want to make, how you will test, etc. The project ideas on our ideas list are quite short, so at this stage you already have to do some research to determine what your application will be about. It could be more than what is suggested in the GSoC idea, or it could be less, if you think we have misjudged the amount of work that can be done during only a couple months.
After that, scope changes are inevitable. Often things turn out to be either easier or harder than anticipated. So, over the course of the summer, the project can be adjusted to scaled down or extend goals accordingly. You will have to discuss that with your mentor as the project goes. They will make sure that you still work in the right direction and in a way that the code can be merged in Haiku during the project (there’s no need to rush through writing a lot of code and hope to get it all merged in the last couple weeks, usually code reviews take more time than writing the code in the first place).