Q:

Force all user processes to be ptraced

I'm implementing a ptrace based tool for logging system call use.  It is much more simple than strace, but I'm doing this so I can learn how these tools work.  I'd like to trace all user processes since they're created.  Can it be achieved with ptrace? 

A:

New processes are created with system calls, namely fork(), vfork() and clone().  These days, the C functions corresponding to these calls are implemented with an underlying call to clone() (the actual system call, as seen from the kernel), but the two other system calls are still there and could be invoked by any process with a simple bit of assembly. 
To trace all user processes, you just have to use ptrace(), and intercept these calls, so that you can attach to new processes immediately after their creation.  That's how strace works.