August 24, 2023

The FreeBSD Project is proud to have participated in the Google Summer of Code program since its inception in 2005. As we near the completion of the 2023 season, the Foundation asked a few of our GSoC students to share more about themselves and their experience working with the Project.

Q: Tell us a little bit about yourself and where you are in your education journey?
I am Raghav Sharma, an undergraduate student in India pursuing a Bachelor of Technology in Electronics Engineering. I am currently in my final year of B.Tech. The areas that capture my interest are systems programming, kernel development, compilers, and backend projects.

Q: Have you ever worked with Google Summer of Code before?
Yes. I worked with Google Summer of Code 2022 with the Haiku organization for porting the XFS file system driver to the HaikuOS project.

Q: Why did you want to work with FreeBSD?
The FreeBSD project is an excellent opportunity for me to delve more into systems programming and kernel development. There are lots of amazing projects where community is working and I wanted to explore those ideas.

Q: Please tell us a little about your Google Summer of Code project?
The goal of my project is to add SquashFS driver support to the FreeBSD kernel. SquashFS is the read-only file system that lets you compress whole file systems or single directories, write them to other devices/partitions or to ordinary files and then mount them directly. There exists two implementations for SquashFS one is a Linux kernel driver and the second one is a SquashFuse project. I used both of these implementations to port the driver to our FreeBSD kernel. Since we are almost at the end of Summer of Code, I finished driver implementation. We now support mount(8), directories, files, and symlinks for SquashFS.

Q: What have you learned from this experience so far?
My learning experience so far is :

  • FreeBSD vfs layer internals, like how the kernel manages several file systems through a nice API. Most of the time was spent exploring and understanding them.
  • Several compression techniques that software uses like zlib, zstd, etc. and why compression is needed.
  • A more in-depth theory of file systems and various techniques through which we can minimize disk seeks and maximize performance etc.
  • Understanding Implementation details of other FreeBSD kernel file systems like ext2fs, nullfs, tarfs, etc.

Q: How has working with the FreeBSD Project been?
So far it’s very amazing. Thanks to mentor Chuck Tuffli to help me get started on everything like setting up a development environment, guiding me to necessary docs for SquashFS implementation, etc.
The community is also pretty nice and active as well.