# Programming experience, preferably
C or C++ - Since systems programming is harder than conventional programming, it's assumed that if you want to write an operating system, you have at least some programming experience. Hopefully, you know either C or C++ fairly well. You should know pointers, structs and the basic data types, control loops, and the preprocessor well, but don't worry about the standard libraries, ANSI or otherwise, since those are essentially irrelevent in systems programming (you'll most likely have to write these yourself in the later stages).
# Knowledge of the architecture - Knowing the
assembly language and the architecture of the machine you're developing for is a definite bonus. If you don't know these already, you can pick them up along the way, but it makes development that much harder. SigOPS will be providing a structure for the i386, so if you plan on developing for the PC, you can learn as you go from some of our known good code.
# A Machine - You need at least one machine that can be rebooted frequently for testing; preferably, you have another machine for editing and/or compiling. SigOPS may be able to supply one or the other or both of these machines, but that remains to be seen.
# Persistence and Mental Stability - I once spent two weeks at work (where I was porting an operating system fulltime) trying to work out a bug that was fixed by changing one bit. Not only that, but all the documentation on the processor that I found was either lacking this critical piece of information or was very misleading, close enough to being actually wrong (and this includes the manufacturer's official documentation). Be prepared to spend a good portion of your time beating your head against a wall.