Project 1: Unix Utilities

For our first project, we’ll focus on user space. If you’ve explored your OS much, you’ll notice that many of the command line utilities you might find on a regular Unix machine aren’t there. The reason for that is simple: we have to build them! Run ls / on your OS to see everything that’s available, then run ls /bin on a Linux or macOS machine to see the difference.

In this project, you have two options:

You can work in teams of 2 on this project if you want, although having a teammate is not required.

We will all be contributing to the publicly-available FogOS source code in this project. Your work will be merged into the FogOS when the project is complete and carry forward to future semesters.

Deliverable 1: Research

The first objective of this project is to decide what utility you want to add or which one you want to enhance. Here’s two examples:

The hard part of this is figuring out what is enough effort. Adding a -h help flag to a utility isn’t enough, for instance. The two bullet points above are probably reasonable (add a tail and head utility with the most basic features, add colors and -l mode to ls). Once you’ve decided what you want to do, file a Github issue on the FogOS repo describing what your plan is. Once a member of the course staff approves it, you can get started. We may propose some changes to your plan to increase or reduce its scope as needed.

Sometimes the things you want to add may require features that we don’t have, new system calls, or changes the kernel. Do a bit of research to make sure you can actually build what you want to build.

Once your proposal is accepted, we’ll be flexible if you run into issues. These things happen all the time with real software development, and this project will be no exception!

Deliverable 2: Implementation

This part is “straightforward”… it’s easy to describe, but the actual work may take some time.

  1. Build whatever you proposed above
  2. Test it
  3. Document it
  4. Submit a pull request for it to be merged into the main FogOS branch.

Deliverable 3: Code Review

Each pull request submitted in Phase 2 must be peer reviewed by at least 2 other teams and one member of the course staff before they can be merged. To make the math work out on this, that means that each team must carry out two code reviews on other teams' pull requests. Course staff must sign off on the code reviews you submit.

Our code reviews involve:

Grading Specification

This project is worth 10 points and is split into two parts: