Thinking of joining the Ethos project?
Ethos is first of all about programming, the central phenomenon of computer science. Programming is an extraordinarily difficult intellectual challenge, it is the twin pursuit of functionality and perfection. The two forms of programming which are most sensitive are Systems programming and Secure programming: The Ethos project combines both these aspects.
Such programming requires tremendous precision. This requires study, reading, thinking, and always learning about how to be a better programmer. No matter how good you are at programming, you still have many things to learn. If programming is not a passion for you, then Ethos is not the right project for you.
Its not just about programming skill. Ethos is designed to have far fewer security holes than other systems as well as very highly polished security services. Producing such software requires a broad computer science base, intensive study into areas related to the target software, extraordinary careful design, and analysis of design and issues. Producing secure software has proved elusive, it cannot happen without intense preparation, and careful evaluation of the result.
It can seem overwhelming to get involved in a project like Ethos. First of all, there are many ways to participate. Second, here are some suggestions of things you can do to enable you to work on Ethos.
We recommend the following courses at UIC
- CS 385: Operating Systems Concepts and Design
- CS 486: Secure Operating System Design and Implementation
- CS 473: Compiler Design
- CS 450: Introduction to Networking
- CS 466: Advanced Computer Architecture
- CS 487: Building Trustworthy Computer Systems
- CS 587: Computer Systems Security
- CS 588: Security and Privacy in Distributed and Networkd Systems
If you are interested in joining the project, here is a reading list to get the needed background
- Maurice Bach, The design of the UNIX operating System, Prentice-Hall, 1986. This book is old, before OSs got so complex. That's a good thing, so this is the first book I recommend on OS kernel internals.
- David Chisnall, The definitive guide to the Xen hypervisor, Prentice-Hall. If your going to hack an OS on top of Xen (this is the way Ethos is implemented), this is the book you need.
BackgroundHere is the ideal programming background, but you can be useful to Ethos with a subset of these skills. The skills are listed from most general to least general.
For almost everyone, Go is a new language, and thus students generally start out learning Go for Linux. We like Go because it is a well thought out language, is carefully layered (and thus was easy to port to Ethos), and its aimed at systems programming.
C programming, especially in the kernel, requires a great deal of care. Kernel programming is one of the most rigorous types of programming, and hence precision in understanding C is essential.