This document provides guidance on upstreaming code to the Linux kernel community. It emphasizes that upstreaming requires both technical and social skills. Developers should release code early and often to get feedback, iterate on designs, and fix issues. Good code avoids unnecessary abstraction and reinvention, solves common problems, and has well-designed APIs. The community consists of experienced developers who want to help. Upstreamers should be patient, respectful, and ask for help when needed. Releasing code early allows issues to be identified and addressed before formal submissions.