Welcome, and thank you for considering contributing to KernelLab! Our goal is to make this the ultimate Open Source repository for learning Operating System concepts.
There are several ways you can contribute to KernelLab:
We want this repository to be a polyglot playground! The current implementation is in C++, but we would love to have implementations of these algorithms in Python, Rust, Go, Java, JavaScript, and more.
How to add your favorite language:
- Create a top-level directory for your language (e.g.,
python/,rust/,java/). - Inside that directory, try to mirror the existing structure (e.g.,
cpu_scheduler,memory_manager,disk_scheduling, etc.). - Add a README inside your language's directory explaining how to run your code.
- Open a Pull Request!
This is a fantastic way to practice a language you are learning while cementing your OS knowledge.
Clear, neat, and easy-to-understand code is our priority. If you find a piece of code that lacks comments or explanations, please open a PR to add educational comments! Help make the code as readable as a textbook.
If you notice an issue, or want to add a missing algorithm (like LOOK/C-LOOK for disk scheduling, or Banker's Algorithm for deadlocks):
- Open an Issue first to discuss it.
- Once discussed, write clean, documented code and submit a Pull Request.
- Be neat and clean: Code should be easy to read for a student looking at it for the first time.
- Add Comments: Explain why the algorithm works, not just what the syntax does.
- Test your code: Ensure your code compiles and runs properly before submitting.
- Be kind: Follow our Code of Conduct.
Thank you for helping make KernelLab a great resource for everyone!