## page was renamed from OPWfirstpatch Hooray! Thanks for your interest in working on the Linux kernel. Use this tutorial to create your first patch to the Linux kernel. == Intro == If you run into any issues with this tutorial, please ask questions on the Outreachy mailing list: * Email to: outreachy@lists.linux.dev * Subscribe: outreachy+subscribe@lists.linux.dev * More subscriber options: outreachy+subscribe@lists.linux.dev * View the archive: https://lore.kernel.org/outreachy/ Support can also be found on #kernel-outreachy IRC channel on irc.oftc.net. Please make sure to set your real name in your IRC client, so that we can correlate names and emails with irc handles. <> '''Note that the Linux kernel is GPLv2. Contributions that include content generated by AI tools that may rely on sources that are not compatible with GPLv2 thus cannot be accepted into the Linux kernel. This includes ChatGPT.''' = Contribution Instructions = Our community requires 2 types of contributions: 1) Community-wide Cleanup patches: . A few cleanup patches need to be accepted into staging/testing before moving on to the Project Starter Tasks. '''The cleanup patches are restricted to drivers/staging. However, do not submit patches for drivers/staging/media to Outreachy.''' 2) Project Starter Tasks (starter tasks, small tasks) . The project mentors may suggest starter tasks that lead to patches outside of staging/drivers. Mentors and applicants, please only work beyond staging if necessary. The turn-around on patches can be too slow for our brief contribution period. All patches from Outreachy applicants '''must''' be sent to the Outreachy Mailing List ( outreachy@lists.linux.dev ), as well as to the recipients you retrieve using get_maintainer.pl. Information about how to use get_maintainer.pl is below. If you have any questions about any aspect of the patch submission process, please ask on the mailing list. <> = Resending patches = If you find a mistake in your initial patch submission, and you need to correct it, make sure to version your new patch as described in the previous section. If your patch has not been responded to within three business days (not including weekend days), the mentors may have missed it, and you may want to resend it. Make sure to use RESEND in the subject line if the patch itself has not been changed (meaning any changes in the patch description or body). You can use the `--subject-prefix` argument to `git format-patch` to add RESEND, by running {{{ git format-patch --subject-prefix="RESEND PATCH" }}} That command will create an email you can send with mutt (or your approved mail client) that will have a subject that looks like: {{{ [RESEND PATCH] Foo: Fix these things }}} If your patch hasn't been responded to within a week, ping a mentor on the IRC channel. '''Do not ping mentors immediately after sending patches.''' We know you're excited/worried about submitting your first patch, but mentors need to take time to properly respond and review patches. = Potential cleanup patch tasks = Below are possible cleanup tasks that you can tackle and submit patches to the Outreachy mailing list. 1. Functions that are never used. 2. Functions that are never used outside of their current file and thus should be static. 3. Variables that are never used. 4. Variables that are assigned but are never used. 5. Spelling mistakes. Patches based on these cleanup tasks are encouraged by the community and you are encouraged to submit them before moving to the project specific small tasks. [[https://github.com/nerdyvaishali/kernelbridge|Here]] are possible tasks that can help you get involved with the Linux community in general. = Updating the Firstpatch Tutorial = Updating the Kernel Firstpatch tutorial is highly encouraged. Your recommendations on improving this tutorial based on your experience will be useful to your fellow newbies. Such Wiki updates should be recorded as a contribution while you build your Linux Kernel Outreachy Project Application. The Kernel Newbies Firstpatch tutorial is based on Wiki publication system and it is very easy to update it. Visit this [[https://en.wikipedia.org/wiki/Wiki#Editing|wiki page]] if you wish to know more about working with Wiki. For editing the Firstpatch Wiki, follow these simple steps: 1. Create a Kernel newbies account for yourself. Follow the Sign-in/Signup link in the top right corner of the Outreachy firstpatch home page. 1. Once your Kernel newbies account is created, send an email to outreachy@lists.linux.dev with the subject "[KERNEL NEWBIES ACCESS] username", where ''username'' is your kernel newbies username. 1. Once you receive a confirmation from the Outreachy Coordinator/mentor, you are all set to make appropriate updates. It is a good practice to make a prior disclosure of what you intend to update. Details of what you intend to change, how it will change, and the reason for change will allow the mentors to make suggestions upfront. This is useful because the Wiki changes are not git version controlled and hence a prior approval will reduce the correction iterations. Invite your fellow outreach participants to review your updates and share their feedback. Also, configure tools such as Grammarly to help you identify incorrectly spelled words and grammatically improvable sentences. <> = Tips for Applying to be an Outreachy Kernel intern = After you complete the first patch tutorial and get a patch accepted into the Linux kernel, you may wonder what to do next. We recommend getting 3-5 single cleanup patches accepted, and then moving on to create a patchset with several different cleanups for the same staging driver. Please limit your patchsets to no more than 10 patches, unless you've been told to break the patchset down further. Please try to limit your patches to no more than 100 to 200 lines total, to avoid mentors getting patch review fatigue. If you're bored and losing focus when you're tediously creating the patch, it's highly likely the mentors will get tired while reviewing it. :) Once you've gotten a few checkpatch patches accepted, move on to exploring more complex tools, like sparse and coccinelle. Mentors will list or provide a link to their starter task lists in their project description on the Outreachy website. Mentors are more likely to pick you for their project if they see you tackling tasks from that project or asking questions about that project. Tackling increasingly complex patches mean the Outreachy mentors will get a sense of how good a C programmer you are. It's very easy for beginner C programmers to do some of the more simple checkpatch cleanups, but it takes more skill to complete our mentor's small tasks or sparse and coccinelle patches. You may find yourself trying to understand advanced C topics, such as [[http://stackoverflow.com/questions/1665250/why-declare-a-variable-or-function-static-in-c/1665270#1665270|when to declare a function static]]. If you are attempting to silence a checkpatch.pl warning and if you don't understand what the warning message means, please ask on IRC or the mailing list before blindly trying to silence the warning. We value applicants that know when they need help, and we are happy to share knowledge and help you expand your skill set. Please remember that we value consistently clean patches, so make sure to compile your code and ensure that no checkpatch errors or build warnings were added. Do this every single time for every patch revision, immediately before you send your patches out. It's a good practice to keep a log of improvements people have suggested for your previous patches and double-check that before submitting a new patch or patchset. We look for applicants that can revise patches based on feedback from mentors. If you get feedback on a patch, change the code and send a revised patch. Don't just go onto the next patch. We value applicants that consistently send or revise patches every day, or every other day, rather than being sporadic about when patches are sent. We also value clear, concise communication. If you have a setup issue, tell us the exact failure mode, how to reproduce the failure, and what you've done to try and troubleshoot the failure. Please ensure that when you ask a question on IRC, you remain connected to the channel until someone answers your question. If no one answers in a couple of hours, send the question to the mailing list. We look for applicants that have a knack for seeking documentation and resources of their own, while still knowing when to ask questions. If you have been stuck on a problem for more than a day, seek help! We love to see applicants ask questions on IRC and the mailing list, and we especially appreciate applicants that help each other out. Helping out someone who is struggling means you get to share your knowledge, and the act of writing down what you know will solidify that knowledge in your mind. It also shows the Outreachy mentors that you're learning new skills, and are willing to share that knowledge. Bonus points if you made a kernelnewbies account and corrected or add knowledge to this wiki. Good luck, future Linux kernel developers!