.. raw:: latex \kerneldocCJKoff NOTE: This is a version of Documentation/process/howto.rst translated into korean This document is maintained by Minchan Kim <minchan@kernel.org> If you find any difference between this document and the original file or a problem with the translation, please contact the maintainer of this file. Please also note that the purpose of this file is to be easier to read for non English (read: korean) speakers and is not intended as a fork. So if you have any comments or updates for this file please try to update the original English file first. ---------------------------------- .. raw:: latex \kerneldocCJKon ì´ ë¬¸ì„œëŠ” Documentation/process/howto.rst ì˜ í•œê¸€ 번ì—입니다. ì—ìžï¼š 김민찬 <minchan@kernel.org> ê°ìˆ˜ï¼š ì´ì œì´ë¯¸ <jamee.lee@samsung.com> ---------------------------------- 어떻게 리눅스 ì»¤ë„ ê°œë°œì„ í•˜ëŠ”ê°€ ================================ ì´ ë¬¸ì„œëŠ” ì»¤ë„ ê°œë°œì— ìžˆì–´ 가장 중요한 문서ì´ë‹¤. ì´ ë¬¸ì„œëŠ” 리눅스 ì»¤ë„ ê°œë°œìžê°€ ë˜ëŠ” 법과 리눅스 ì»¤ë„ ê°œë°œ 커뮤니티와 ì¼í•˜ëŠ” ë²•ì„ ë‹´ê³ ìžˆë‹¤. ì»¤ë„ í”„ë¡œê·¸ëž˜ë°ì˜ ê¸°ìˆ ì ì¸ ì¸¡ë©´ê³¼ ê´€ë ¨ëœ ë‚´ìš©ë“¤ì€ í¬í•¨í•˜ì§€ ì•Šìœ¼ë ¤ê³ í•˜ì˜€ì§€ë§Œ 올바른 길로 ì—¬ëŸ¬ë¶„ì„ ì•ˆë‚´í•˜ëŠ” ë°ëŠ” ë„ì›€ì´ ë 것ì´ë‹¤. ì´ ë¬¸ì„œì—ì„œ ì˜¤ëž˜ëœ ê²ƒì„ ë°œê²¬í•˜ë©´ ë¬¸ì„œì˜ ì•„ëž˜ìª½ì— ë‚˜ì—´ëœ ë©”ì¸í…Œì´ë„ˆì—게 패치를 보내달ë¼. 소개 ---- ìž, ì—¬ëŸ¬ë¶„ì€ ë¦¬ëˆ…ìŠ¤ ì»¤ë„ ê°œë°œìžê°€ ë˜ëŠ” ë²•ì„ ë°°ìš°ê³ ì‹¶ì€ê°€? 아니면 ìƒì‚¬ë¡œë¶€í„°"ì´ ìž¥ì¹˜ë¥¼ 위한 리눅스 ë“œë¼ì´ë²„를 작성하시오"ë¼ëŠ” ë§ì„ 들었는가? ì´ ë¬¸ì„œì˜ ëª©ì ì€ ì—¬ëŸ¬ë¶„ì´ ê²ªê²Œ ë ê³¼ì •ê³¼ 커뮤니티와 í˜‘ë ¥í•˜ëŠ” ë²•ì„ ì¡°ì–¸í•˜ì—¬ ì—¬ëŸ¬ë¶„ì˜ ëª©ì ì„ ë‹¬ì„±í•˜ê¸° 위해 필요한 것 모ë‘를 ì•Œë ¤ì£¼ê¸° 위함ì´ë‹¤. 커ë„ì€ ëŒ€ë¶€ë¶„ì€ Cë¡œ 작성ë˜ì–´ ìžˆê³ ëª‡ëª‡ 아키í…ì³ì˜ ì˜ì¡´ì ì¸ ë¶€ë¶„ì€ ì–´ì…ˆë¸”ë¦¬ë¡œ 작성ë˜ì–´ 있다. ì»¤ë„ ê°œë°œì„ ìœ„í•´ C를 잘 ì´í•´í•˜ê³ 있어야 한다. ì—¬ëŸ¬ë¶„ì´ íŠ¹ì • 아키í…ì³ì˜ low-level ê°œë°œì„ í• ê²ƒì´ ì•„ë‹ˆë¼ë©´ 어셈블리(íŠ¹ì • 아키í…ì³)는 잘 알아야 í• í•„ìš”ëŠ” 없다. 다ìŒì˜ ì°¸ê³ ì„œì ë“¤ì€ ê¸°ë³¸ì— ì¶©ì‹¤í•œ C êµìœ¡ì´ë‚˜ ìˆ˜ë…„ê°„ì˜ ê²½í—˜ì— ê²¬ì£¼ì§€ëŠ” 못하지만 ì ì–´ë„ ì°¸ê³ ìš©ë„로는 ì¢‹ì„ ê²ƒì´ë‹¤ - "The C Programming Language" by Kernighan and Ritchie [Prentice Hall] - "Practical C Programming" by Steve Oualline [O'Reilly] - "C: A Reference Manual" by Harbison and Steele [Prentice Hall] 커ë„ì€ GNU C와 GNU 툴체ì¸ì„ 사용하여 작성ë˜ì—ˆë‹¤. ì´ íˆ´ë“¤ì€ ISO C11 í‘œì¤€ì„ ë”°ë¥´ëŠ” 반면 í‘œì¤€ì— ìžˆì§€ ì•Šì€ ë§Žì€ í™•ìž¥ê¸°ëŠ¥ë„ ê°€ì§€ê³ ìžˆë‹¤. 커ë„ì€ í‘œì¤€ C ë¼ì´ë¸ŒëŸ¬ë¦¬ì™€ëŠ” ê´€ê³„ì—†ì´ freestanding C 환경ì´ì–´ì„œ C í‘œì¤€ì˜ ì¼ë¶€ëŠ” 지ì›ë˜ì§€ 않는다. ìž„ì˜ì˜ long long 나누기나 floating point는 지ì›ë˜ì§€ 않는다. ë•Œë¡ ì´ëŸ° ì´ìœ ë¡œ 커ë„ì´ ê·¸ëŸ° 확장 ê¸°ëŠ¥ì„ ê°€ì§„ 툴체ì¸ì„ ê°€ì§€ê³ ë§Œë“¤ì–´ì¡Œë‹¤ëŠ” ê²ƒì´ ì´í•´í•˜ê¸° ì–´ë ¤ìš¸ ìˆ˜ë„ ìžˆê³ ê²Œë‹¤ê°€ ë¶ˆí–‰í•˜ê²Œë„ ê·¸ëŸ° ê²ƒì„ ì •í™•í•˜ê²Œ 설명하는 ì–´ë–¤ ì°¸ê³ ë¬¸ì„œë„ ìžˆì§€ 않다. ì •ë³´ë¥¼ 얻기 위해서는 gcc info (`info gcc`)페ì´ì§€ë¥¼ 살펴보ë¼. ì—¬ëŸ¬ë¶„ì€ ê¸°ì¡´ì˜ ê°œë°œ 커뮤니티와 í˜‘ë ¥í•˜ëŠ” ë²•ì„ ë°°ìš°ë ¤ê³ í•˜ê³ ìžˆë‹¤ëŠ” ê²ƒì„ ê¸°ì–µí•˜ë¼. 코딩, 스타ì¼, í•¨ìˆ˜ì— ê´€í•œ 훌ë¥í•œ í‘œì¤€ì„ ê°€ì§„ ì‚¬ëžŒë“¤ì´ ëª¨ì¸ ë‹¤ì–‘í•œ ê·¸ë£¹ì´ ìžˆë‹¤. ì´ í‘œì¤€ë“¤ì€ ì˜¤ëžœë™ì•ˆ í¬ê³ 지ì—ì 으로 ë¶„ì‚°ëœ íŒ€ë“¤ì— ì˜í•´ 가장 ì¢‹ì€ ë°©ë²•ìœ¼ë¡œ ì¼í•˜ê¸° 위하여 ì°¾ì€ ê²ƒì„ ê¸°ì´ˆë¡œ ë§Œë“¤ì–´ì ¸ 왔다. ê·¸ í‘œì¤€ë“¤ì€ ë¬¸ì„œí™”ê°€ 잘 ë˜ì–´ìžˆê¸° ë•Œë¬¸ì— ê°€ëŠ¥í•œí•œ 미리 ë§Žì€ í‘œì¤€ë“¤ì— ê´€í•˜ì—¬ ë°°ìš°ë ¤ê³ ì‹œë„하ë¼. 다른 ì‚¬ëžŒë“¤ì€ ì—¬ëŸ¬ë¶„ì´ë‚˜ ì—¬ëŸ¬ë¶„ì˜ íšŒì‚¬ê°€ ì¼í•˜ëŠ” ë°©ì‹ì— ì ì‘하는 ê²ƒì„ ì›í•˜ì§€ëŠ” 않는다. 법ì ë¬¸ì œ --------- 리눅스 ì»¤ë„ ì†ŒìŠ¤ 코드는 GPLë¡œ ë°°í¬(release)ë˜ì—ˆë‹¤. ì†ŒìŠ¤íŠ¸ë¦¬ì˜ ë©”ì¸ ë””ë ‰í† ë¦¬ì— ìžˆëŠ” ë¼ì´ì„¼ìŠ¤ì— 관하여 ìƒì„¸í•˜ê²Œ ì“°ì—¬ 있는 COPYINGì´ë¼ëŠ” 파ì¼ì„ ë´ë¼. 리눅스 ì»¤ë„ ë¼ì´ì„¼ì‹± 규칙과 소스 코드 ì•ˆì˜ `SPDX <https://spdx.org/>`_ ì‹ë³„ìž ì‚¬ìš©ë²•ì€ :ref:`Documentation/process/license-rules.rst <kernel_licensing>` ì— ì„¤ëª…ë˜ì–´ 있다. ì—¬ëŸ¬ë¶„ì´ ë¼ì´ì„¼ìŠ¤ì— 관한 ë” ê¹Šì€ ë¬¸ì œë¥¼ ê°€ì§€ê³ ìžˆë‹¤ë©´ 리눅스 ì»¤ë„ ë©”ì¼ë§ ë¦¬ìŠ¤íŠ¸ì— ë¬»ì§€ë§ê³ 변호사와 ì—°ë½í•˜ë¼. ë©”ì¼ë§ ë¦¬ìŠ¤íŠ¸ë“¤ì— ìžˆëŠ” ì‚¬ëžŒë“¤ì€ ë³€í˜¸ì‚¬ê°€ 아니기 ë•Œë¬¸ì— ë²•ì ë¬¸ì œì— ê´€í•˜ì—¬ ê·¸ë“¤ì˜ ë§ì— ì˜ì§€í•´ì„œëŠ” 안ëœë‹¤. GPLì— ê´€í•œ ìž¦ì€ ì§ˆë¬¸ë“¤ê³¼ ë‹µë³€ë“¤ì€ ë‹¤ìŒì„ 참조하ë¼. https://www.gnu.org/licenses/gpl-faq.html 문서 ---- 리눅스 ì»¤ë„ ì†ŒìŠ¤ 트리는 ì»¤ë„ ì»¤ë®¤ë‹ˆí‹°ì™€ í˜‘ë ¥í•˜ëŠ” ë²•ì„ ë°°ìš°ê¸°ìœ„í•´ 훌ë¥í•œ 다양한 ë¬¸ì„œë“¤ì„ ê°€ì§€ê³ ìžˆë‹¤. 새로운 ê¸°ëŠ¥ë“¤ì´ ì»¤ë„ì— ë“¤ì–´ê°€ê²Œ ë ë•Œ, ê·¸ ê¸°ëŠ¥ì„ ì–´ë–»ê²Œ ì‚¬ìš©í•˜ëŠ”ì§€ì— ê´€í•œ ì„¤ëª…ì„ ìœ„í•˜ì—¬ 새로운 문서 파ì¼ì„ 추가하는 ê²ƒì„ ê¶Œìž¥í•œë‹¤. 커ë„ì´ ìœ ì €ìŠ¤íŽ˜ì´ìŠ¤ë¡œ 노출하는 ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ 변경하게 ë˜ë©´ ë³€ê²½ì„ ì„¤ëª…í•˜ëŠ” 메뉴얼 페ì´ì§€ë“¤ì— 대한 패치나 ì •ë³´ë¥¼ mtk.manpages@gmail.comì˜ ë©”ì¸í…Œì´ë„ˆì—게 보낼 ê²ƒì„ ê¶Œìž¥í•œë‹¤. 다ìŒì€ ì»¤ë„ ì†ŒìŠ¤ íŠ¸ë¦¬ì— ìžˆëŠ” ì½ì–´ì•¼ í• íŒŒì¼ë“¤ì˜ 리스트ì´ë‹¤. :ref:`Documentation/admin-guide/README.rst <readme>` ì´ íŒŒì¼ì€ 리눅스 커ë„ì— ê´€í•˜ì—¬ 간단한 ë°°ê²½ 설명과 커ë„ì„ ì„¤ì •í•˜ê³ ë¹Œë“œí•˜ê¸° 위해 필요한 ê²ƒì„ ì„¤ëª…í•œë‹¤. 커ë„ì— ìž…ë¬¸í•˜ëŠ” ì‚¬ëžŒë“¤ì€ ì—¬ê¸°ì„œ 시작해야 한다. :ref:`Documentation/process/changes.rst <changes>` ì´ íŒŒì¼ì€ 커ë„ì„ ì„±ê³µì 으로 ë¹Œë“œí•˜ê³ ì‹¤í–‰ì‹œí‚¤ê¸° 위해 필요한 다양한 소프트웨어 íŒ¨í‚¤ì§€ë“¤ì˜ ìµœì†Œ ë²„ì ¼ì„ ë‚˜ì—´í•œë‹¤. :ref:`Documentation/process/coding-style.rst <codingstyle>` ì´ ë¬¸ì„œëŠ” 리눅스 ì»¤ë„ ì½”ë”© 스타ì¼ê³¼ ê·¸ë ‡ê²Œ í•œ 몇몇 ì´ìœ 를 설명한다. ëª¨ë“ ìƒˆë¡œìš´ 코드는 ì´ ë¬¸ì„œì— ê°€ì´ë“œë¼ì¸ë“¤ì„ ë”°ë¼ì•¼ 한다. ëŒ€ë¶€ë¶„ì˜ ë©”ì¸í…Œì´ë„ˆë“¤ì€ ì´ ê·œì¹™ì„ ë”°ë¥´ëŠ” íŒ¨ì¹˜ë“¤ë§Œì„ ë°›ì•„ë“¤ì¼ ê²ƒì´ê³ ë§Žì€ ì‚¬ëžŒë“¤ì´ ê·¸ 패치가 올바른 스타ì¼ì¼ 경우만 코드를 ê²€í† í• ê²ƒì´ë‹¤. :ref:`Documentation/process/submitting-patches.rst <submittingpatches>` ì´ íŒŒì¼ë“¤ì€ 성공ì 으로 패치를 ë§Œë“¤ê³ ë³´ë‚´ëŠ” ë²•ì„ ë‹¤ìŒì˜ 내용들로 굉장히 ìƒì„¸ížˆ ì„¤ëª…í•˜ê³ ìžˆë‹¤(그러나 다ìŒìœ¼ë¡œ í•œì •ë˜ì§„ 않는다). - Email 내용들 - Email ì–‘ì‹ - ê·¸ê²ƒì„ ëˆ„êµ¬ì—게 보낼지 ì´ëŸ¬í•œ ê·œì¹™ë“¤ì„ ë”°ë¥´ëŠ” ê²ƒì´ ì„±ê³µ(ì—ìžì£¼: 패치가 받아들여 지는 것)ì„ ë³´ìž¥í•˜ì§„ 않는다(왜ëƒí•˜ë©´ ëª¨ë“ íŒ¨ì¹˜ë“¤ì€ ë‚´ìš©ê³¼ 스타ì¼ì— 관하여 면밀히 ê²€í† ë˜ê¸° 때문ì´ë‹¤). 그러나 ê·œì¹™ì„ ë”°ë¥´ì§€ 않는다면 ê±°ì˜ ì„±ê³µí•˜ì§€ë„ ëª»í• ê²ƒì´ë‹¤. 올바른 íŒ¨ì¹˜ë“¤ì„ ë§Œë“œëŠ” ë²•ì— ê´€í•œ 훌ë¥í•œ 다른 ë¬¸ì„œë“¤ì´ ìžˆë‹¤. "The Perfect Patch" https://www.ozlabs.org/~akpm/stuff/tpp.txt "Linux kernel patch submission format" https://web.archive.org/web/20180829112450/http://linux.yyz.us/patch-format.html :ref:`Documentation/process/stable-api-nonsense.rst <stable_api_nonsense>` ì´ ë¬¸ì„œëŠ” ì˜ë„ì 으로 커ë„ì´ ë¶ˆë³€í•˜ëŠ” API를 갖지 ì•Šë„ë¡ ê²°ì •í•œ ì´ìœ 를 설명하며 다ìŒê³¼ ê°™ì€ ê²ƒë“¤ì„ í¬í•¨í•œë‹¤. - 서브시스템 shim-layer(í˜¸í™˜ì„±ì„ ìœ„í•´?) - ìš´ì˜ì²´ì œë“¤ê°„ì˜ ë“œë¼ì´ë²„ ì´ì‹ì„± - ì»¤ë„ ì†ŒìŠ¤ íŠ¸ë¦¬ë‚´ì— ë¹ ë¥¸ 변화를 늦추는 것(ë˜ëŠ” ë¹ ë¥¸ 변화를 막는 것) ì´ ë¬¸ì„œëŠ” 리눅스 개발 ì² í•™ì„ ì´í•´í•˜ëŠ”ë° í•„ìˆ˜ì ì´ë©° 다른 ìš´ì˜ì²´ì œì—ì„œ 리눅스로 ì „í–¥í•˜ëŠ” 사람들ì—게는 매우 중요하다. :ref:`Documentation/process/security-bugs.rst <securitybugs>` ì—¬ëŸ¬ë¶„ë“¤ì´ ë¦¬ëˆ…ìŠ¤ 커ë„ì˜ ë³´ì•ˆ ë¬¸ì œë¥¼ ë°œê²¬í–ˆë‹¤ê³ ìƒê°í•œë‹¤ë©´ ì´ ë¬¸ì„œì— ë‚˜ì˜¨ ë‹¨ê³„ì— ë”°ë¼ì„œ ì»¤ë„ ê°œë°œìžë“¤ì—게 ì•Œë¦¬ê³ ê·¸ ë¬¸ì œë¥¼ í•´ê²°í• ìˆ˜ 있ë„ë¡ ë„와 달ë¼. :ref:`Documentation/process/management-style.rst <managementstyle>` ì´ ë¬¸ì„œëŠ” 리눅스 ì»¤ë„ ë©”ì¸í…Œì´ë„ˆë“¤ì´ ê·¸ë“¤ì˜ ë°©ë²•ë¡ ì— ë…¹ì•„ 있는 ì •ì‹ ì„ ì–´ë–»ê²Œ ê³µìœ í•˜ê³ ìš´ì˜í•˜ëŠ”지를 설명한다. ì´ê²ƒì€ ì»¤ë„ ê°œë°œì— ìž…ë¬¸í•˜ëŠ” ëª¨ë“ ì‚¬ëžŒë“¤(ë˜ëŠ” ì»¤ë„ ê°œë°œì— ìž‘ì€ í˜¸ê¸°ì‹¬ì´ë¼ë„ 있는 사람들)ì´ ì½ì–´ì•¼ í• ì¤‘ìš”í•œ 문서ì´ë‹¤. 왜ëƒí•˜ë©´ ì´ ë¬¸ì„œëŠ” ì»¤ë„ ë©”ì¸í…Œì´ë„ˆë“¤ì˜ ë…특한 í–‰ë™ì— 관하여 í”히 있는 오해들과 í˜¼ëž€ë“¤ì„ í•´ì†Œí•˜ê³ ìžˆê¸° 때문ì´ë‹¤. :ref:`Documentation/process/stable-kernel-rules.rst <stable_kernel_rules>` ì´ ë¬¸ì„œëŠ” ì•ˆì •ì ì¸ ì»¤ë„ ë°°í¬ê°€ ì´ë£¨ì–´ì§€ëŠ” ê·œì¹™ì„ ì„¤ëª…í•˜ê³ ìžˆìœ¼ë©° ì—¬ëŸ¬ë¶„ë“¤ì´ ì´ëŸ¬í•œ ë°°í¬ë“¤ 중 í•˜ë‚˜ì— ë³€ê²½ì„ í•˜ê¸¸ ì›í•œë‹¤ë©´ ë¬´ì—‡ì„ í•´ì•¼ 하는지를 설명한다. :ref:`Documentation/process/kernel-docs.rst <kernel_docs>` ì»¤ë„ ê°œë°œì— ê´€ê³„ëœ ì™¸ë¶€ ë¬¸ì„œì˜ ë¦¬ìŠ¤íŠ¸ì´ë‹¤. ì»¤ë„ ë‚´ì˜ í¬í•¨ëœ 문서들 ì¤‘ì— ì—¬ëŸ¬ë¶„ì´ ì°¾ê³ ì‹¶ì€ ë¬¸ì„œë¥¼ 발견하지 ëª»í• ê²½ìš° ì´ ë¦¬ìŠ¤íŠ¸ë¥¼ 살펴보ë¼. :ref:`Documentation/process/applying-patches.rst <applying_patches>` 패치가 무엇ì´ë©° ê·¸ê²ƒì„ ì»¤ë„ì˜ ë‹¤ë¥¸ 개발 ë¸Œëžœì¹˜ë“¤ì— ì–´ë–»ê²Œ ì ìš©í•˜ëŠ”ì§€ì— ê´€í•˜ì—¬ ìžì„¸ížˆ ì„¤ëª…í•˜ê³ ìžˆëŠ” ì¢‹ì€ ìž…ë¬¸ì„œì´ë‹¤. 커ë„ì€ ì†ŒìŠ¤ 코드 ê·¸ ìžì²´ì—ì„œ ë˜ëŠ” ì´ê²ƒê³¼ ê°™ì€ ReStructuredText 마í¬ì—… (ReST) ì„ í†µí•´ ìžë™ì 으로 만들어질 수 있는 ë§Žì€ ë¬¸ì„œë“¤ì„ ê°€ì§€ê³ ìžˆë‹¤. ì´ê²ƒì€ ì»¤ë„ ë‚´ì˜ APIì— ëŒ€í•œ ëª¨ë“ ì„¤ëª…, ê·¸ë¦¬ê³ ë½í‚¹ì„ 올바르게 처리하는 ë²•ì— ê´€í•œ ê·œì¹™ì„ í¬í•¨í•˜ê³ 있다. ëª¨ë“ ê·¸ëŸ° ë¬¸ì„œë“¤ì€ ì»¤ë„ ì†ŒìŠ¤ ë””ë ‰í† ë¦¬ì—ì„œ ë‹¤ìŒ ì»¤ë§¨ë“œë¥¼ 실행하는 ê²ƒì„ í†µí•´ PDF 나 HTML ì˜ í˜•íƒœë¡œ 만들어질 수 있다:: make pdfdocs make htmldocs ReST 마í¬ì—…ì„ ì‚¬ìš©í•˜ëŠ” ë¬¸ì„œë“¤ì€ Documentation/output ì— ìƒì„±ëœë‹¤. 해당 ë¬¸ì„œë“¤ì€ ë‹¤ìŒì˜ 커맨드를 사용하면 LaTeX ì´ë‚˜ ePub ë¡œë„ ë§Œë“¤ì–´ì§ˆ 수 있다:: make latexdocs make epubdocs ì»¤ë„ ê°œë°œìžê°€ ë˜ëŠ” 것 --------------------- ì—¬ëŸ¬ë¶„ì´ ë¦¬ëˆ…ìŠ¤ ì»¤ë„ ê°œë°œì— ê´€í•˜ì—¬ ì•„ë¬´ê²ƒë„ ëª¨ë¥¸ë‹¤ë©´ Linux KernelNewbies 프로ì 트를 ë´ì•¼ 한다. https://kernelnewbies.org ê·¸ê³³ì€ ê±°ì˜ ëª¨ë“ ì¢…ë¥˜ì˜ ê¸°ë³¸ì ì¸ ì»¤ë„ ê°œë°œ 질문들(질문하기 ì „ì— ë¨¼ì € ì•„ì¹´ì´ë¸Œë¥¼ 찾아ë´ë¼. ê³¼ê±°ì— ì´ë¯¸ 답변ë˜ì—ˆì„ ìˆ˜ë„ ìžˆë‹¤)ì„ í• ìˆ˜ 있는 ë„ì›€ì´ ë 만한 ë©”ì¼ë§ 리스트가 있다. ë˜í•œ 실시간으로 질문 í• ìˆ˜ 있는 IRC 채ë„ë„ ê°€ì§€ê³ ìžˆìœ¼ë©° 리눅스 ì»¤ë„ ê°œë°œì„ ë°°ìš°ëŠ” ë° ìœ ìš©í•œ ë¬¸ì„œë“¤ì„ ë³´ìœ í•˜ê³ ìžˆë‹¤. 웹사ì´íŠ¸ëŠ” 코드구성, 서브시스템들, ê·¸ë¦¬ê³ í˜„ìž¬ 프로ì 트들 (트리 ë‚´, ì™¸ë¶€ì— ì¡´ìž¬í•˜ëŠ”)ì— ê´€í•œ 기본ì ì¸ ì •ë³´ë“¤ì„ ê°€ì§€ê³ ìžˆë‹¤. ë˜í•œ ê·¸ê³³ì€ ì»¤ë„ ì»´íŒŒì¼ì´ë‚˜ 패치를 하는 법과 ê°™ì€ ê¸°ë³¸ì ì¸ ê²ƒë“¤ì„ ì„¤ëª…í•œë‹¤. ì—¬ëŸ¬ë¶„ì´ ì–´ë””ì„œ 시작해야 í• ì§„ 모르지만 ì»¤ë„ ê°œë°œ ì»¤ë®¤ë‹ˆí‹°ì— ì°¸ì—¬í• ìˆ˜ 있는 ì¼ë“¤ì„ 찾길 ì›í•œë‹¤ë©´ 리눅스 ì»¤ë„ Janitor 프로ì 트를 살펴ë´ë¼. https://kernelnewbies.org/KernelJanitors ê·¸ê³³ì€ ì‹œìž‘í•˜ê¸°ì— í›Œë¥í•œ 장소ì´ë‹¤. ê·¸ê³³ì€ ë¦¬ëˆ…ìŠ¤ ì»¤ë„ ì†ŒìŠ¤ íŠ¸ë¦¬ë‚´ì— ê°„ë‹¨ížˆ ì •ë¦¬ë˜ê³ ìˆ˜ì •ë 수 있는 ë¬¸ì œë“¤ì— ê´€í•˜ì—¬ 설명한다. ì—¬ëŸ¬ë¶„ì€ ì´ í”„ë¡œì 트를 대표하는 개발ìžë“¤ê³¼ ì¼í•˜ë©´ì„œ ìžì‹ ì˜ íŒ¨ì¹˜ë¥¼ 리눅스 ì»¤ë„ íŠ¸ë¦¬ì— ë°˜ì˜í•˜ê¸° 위한 기본ì ì¸ ê²ƒë“¤ì„ ë°°ìš°ê²Œ ë 것ì´ë©° ì—¬ëŸ¬ë¶„ì´ ì•„ì§ ì•„ì´ë””어를 ê°€ì§€ê³ ìžˆì§€ 않다면 다ìŒì— ë¬´ì—‡ì„ í•´ì•¼í• ì§€ì— ê´€í•œ ë°©í–¥ì„ ë°°ìš¸ 수 ìžˆì„ ê²ƒì´ë‹¤. 리눅스 ì»¤ë„ ì½”ë“œì— ì‹¤ì œ ë³€ê²½ì„ í•˜ê¸° ì „ì— ë°˜ë“œì‹œ ê·¸ 코드가 어떻게 ë™ìž‘하는지 ì´í•´í•˜ê³ 있어야 한다. 코드를 분ì„하기 위하여 íŠ¹ì •í•œ íˆ´ì˜ ë„ì›€ì„ ë¹Œë ¤ì„œë¼ë„ 코드를 ì§ì ‘ ì½ëŠ” 것보다 ì¢‹ì€ ê²ƒì€ ì—†ë‹¤(ëŒ€ë¶€ë¶„ì˜ ìžìž˜í•œ ë¶€ë¶„ë“¤ì€ ìž˜ 코멘트ë˜ì–´ 있다). 그런 툴들 ì¤‘ì— íŠ¹ížˆ ì¶”ì²œí• ë§Œí•œ ê²ƒì€ Linux Cross-Reference projectì´ë©° ê·¸ê²ƒì€ ìžê¸° 참조 ë°©ì‹ì´ë©° 소스코드를 ì¸ë±ìŠ¤ëœ 웹 페ì´ì§€ë“¤ì˜ 형태로 보여준다. ìµœì‹ ì˜ ë©‹ì§„ ì»¤ë„ ì½”ë“œ ì €ìž¥ì†ŒëŠ” 다ìŒì„ 통하여 ì°¸ì¡°í• ìˆ˜ 있다. https://elixir.bootlin.com/ 개발 프로세스 ------------- 리눅스 ì»¤ë„ ê°œë°œ 프로세스는 현재 몇몇 다른 ë©”ì¸ ì»¤ë„ "브랜치들"ê³¼ ì„œë¸Œì‹œìŠ¤í…œì— íŠ¹í™”ëœ ì»¤ë„ ë¸Œëžœì¹˜ë“¤ë¡œ 구성ëœë‹¤. 몇몇 다른 ë©”ì¸ ë¸Œëžœì¹˜ë“¤ì€ ë‹¤ìŒê³¼ 같다. - ë¦¬ëˆ„ìŠ¤ì˜ ë©”ì¸ë¼ì¸ 트리 - 여러 ë©”ì´ì € 넘버를 갖는 다양한 ì•ˆì •ëœ ì»¤ë„ íŠ¸ë¦¬ë“¤ - ì„œë¸Œì‹œìŠ¤í…œì„ ìœ„í•œ ì»¤ë„ íŠ¸ë¦¬ë“¤ - 통합 테스트를 위한 linux-next ì»¤ë„ íŠ¸ë¦¬ ë©”ì¸ë¼ì¸ 트리 ~~~~~~~~~~~~~ ë©”ì¸ë¼ì¸ 트리는 Linus Torvaldsê°€ 관리하며 https://kernel.org ë˜ëŠ” 소스 ì €ìž¥ì†Œì—ì„œ 참조ë 수 있다.개발 프로세스는 다ìŒê³¼ 같다. - 새로운 커ë„ì´ ë°°í¬ë˜ìžë§ˆìž 2ì£¼ì˜ ì‹œê°„ì´ ì£¼ì–´ì§„ë‹¤. ì´ ê¸°ê°„ë™ì€ ë©”ì¸í…Œì´ë„ˆë“¤ì€ í° diffë“¤ì„ Linusì—게 ì œì¶œí• ìˆ˜ 있다. 대개 ì´ íŒ¨ì¹˜ë“¤ì€ ëª‡ 주 ë™ì•ˆ linux-next 커ë„ë‚´ì— ì´ë¯¸ ìžˆì—ˆë˜ ê²ƒë“¤ì´ë‹¤. í° ë³€ê²½ë“¤ì„ ì œì¶œí•˜ëŠ” ë° ì„ í˜¸ë˜ëŠ” ë°©ë²•ì€ git(커ë„ì˜ ì†ŒìŠ¤ 관리 툴, ë” ë§Žì€ ì •ë³´ë“¤ì€ https://git-scm.com/ ì—ì„œ ì°¸ì¡°í• ìˆ˜ 있다)를 사용하는 것ì´ì§€ë§Œ 순수한 패치파ì¼ì˜ 형ì‹ìœ¼ë¡œ 보내는 ê²ƒë„ ë¬´ê´€í•˜ë‹¤. - 2주 í›„ì— -rc1 커ë„ì´ ë¦´ë¦¬ì¦ˆë˜ë©° ì—¬ê¸°ì„œë¶€í„°ì˜ ì£¼ì•ˆì ì€ ìƒˆë¡œìš´ 커ë„ì„ ê°€ëŠ¥í•œí•œ ì•ˆì •ë˜ê²Œ 하는 것ì´ë‹¤. ì´ ì‹œì ì—ì„œì˜ ëŒ€ë¶€ë¶„ì˜ íŒ¨ì¹˜ë“¤ì€ íšŒê·€(ì—ìžì£¼: ì´ì „ì—는 존재하지 않았지만 새로운 기능추가나 변경으로 ì¸í•´ ìƒê²¨ë‚œ 버그)를 ê³ ì³ì•¼ 한다. ì´ì „부터 존재한 버그는 회귀가 아니므로, 그런 ë²„ê·¸ì— ëŒ€í•œ ìˆ˜ì •ì‚¬í•ì€ 중요한 경우ì—만 ë³´ë‚´ì ¸ì•¼ 한다. ì™„ì „ížˆ 새로운 ë“œë¼ì´ë²„(í˜¹ì€ íŒŒì¼ì‹œìŠ¤í…œ)는 -rc1 ì´í›„ì—만 받아들여진다는 ê²ƒì„ ê¸°ì–µí•´ë¼. 왜ëƒí•˜ë©´ ë³€ê²½ì´ ìžì²´ë‚´ì—서만 ë°œìƒí•˜ê³ ì¶”ê°€ëœ ì½”ë“œê°€ ë“œë¼ì´ë²„ ì™¸ë¶€ì˜ ë‹¤ë¥¸ 부분ì—는 ì˜í–¥ì„ 주지 않으므로 그런 ë³€ê²½ì€ íšŒê·€ë¥¼ ì¼ìœ¼í‚¬ 만한 ìœ„í—˜ì„ ê°€ì§€ê³ ìžˆì§€ 않기 때문ì´ë‹¤. -rc1ì´ ë°°í¬ëœ ì´í›„ì— git를 사용하여 íŒ¨ì¹˜ë“¤ì„ Linusì—게 보낼수 있지만 íŒ¨ì¹˜ë“¤ì€ ê³µì‹ì ì¸ ë©”ì¼ë§ 리스트로 ë³´ë‚´ì„œ ê²€í† ë¥¼ ë°›ì„ í•„ìš”ê°€ 있다. - 새로운 -rc는 Linusê°€ 현재 git treeê°€ 테스트 í•˜ê¸°ì— ì¶©ë¶„ížˆ ì•ˆì •ëœ ìƒíƒœì— ìžˆë‹¤ê³ íŒë‹¨ë 때마다 ë°°í¬ëœë‹¤. 목표는 새로운 -rc 커ë„ì„ ë§¤ì£¼ ë°°í¬í•˜ëŠ” 것ì´ë‹¤. - ì´ëŸ¬í•œ 프로세스는 커ë„ì´ "준비(ready)"ë˜ì—ˆë‹¤ê³ 여겨질때까지 계ì†ëœë‹¤. 프로세스는 대체로 6주간 지ì†ëœë‹¤. ì»¤ë„ ë°°í¬ì— 있어서 ì–¸ê¸‰í• ë§Œí•œ 가치가 있는 리눅스 ì»¤ë„ ë©”ì¼ë§ ë¦¬ìŠ¤íŠ¸ì˜ Andrew Mortonì˜ ê¸€ì´ ìžˆë‹¤. *"커ë„ì´ ì–¸ì œ ë°°í¬ë 지는 ì•„ë¬´ë„ ëª¨ë¥¸ë‹¤. 왜ëƒí•˜ë©´ ë°°í¬ëŠ” ì•Œë ¤ì§„ ë²„ê·¸ì˜ ìƒí™©ì— ë”°ë¼ ë°°í¬ë˜ëŠ” 것ì´ì§€ ë¯¸ë¦¬ì •í•´ ë†“ì€ ì‹œê°„ì— ë”°ë¼ ë°°í¬ë˜ëŠ” ê²ƒì€ ì•„ë‹ˆê¸° 때문ì´ë‹¤."* 여러 ë©”ì´ì € 넘버를 갖는 다양한 ì•ˆì •ëœ ì»¤ë„ íŠ¸ë¦¬ë“¤ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ì„¸ê°œì˜ ë²„ì ¼ 넘버로 ì´ë£¨ì–´ì§„ ë²„ì ¼ì˜ ì»¤ë„ë“¤ì€ -stable 커ë„들ì´ë‹¤. ê·¸ê²ƒë“¤ì€ í•´ë‹¹ ë©”ì´ì € ë©”ì¸ë¼ì¸ 릴리즈ì—ì„œ ë°œê²¬ëœ í° íšŒê·€ë“¤ì´ë‚˜ 보안 ë¬¸ì œë“¤ 중 비êµì ìž‘ê³ ì¤‘ìš”í•œ ìˆ˜ì •ë“¤ì„ í¬í•¨í•œë‹¤. 주요 stable 시리즈 릴리즈는 세번째 ë²„ì ¼ 넘버를 ì¦ê°€ì‹œí‚¤ë©° ì•žì˜ ë‘ ë²„ì ¼ 넘버는 그대로 ìœ ì§€í•œë‹¤. ì´ê²ƒì€ 가장 ìµœê·¼ì˜ ì•ˆì •ì ì¸ ì»¤ë„ì„ ì›í•˜ëŠ” 사용ìžì—게 추천ë˜ëŠ” 브랜치ì´ë©°, 개발/실험ì ë²„ì ¼ì„ í…ŒìŠ¤íŠ¸í•˜ëŠ” ê²ƒì„ ë•ê³ ìž í•˜ëŠ” 사용ìžë“¤ê³¼ëŠ” 별로 ê´€ë ¨ì´ ì—†ë‹¤. -stable íŠ¸ë¦¬ë“¤ì€ "stable" 팀<stable@vger.kernel.org>ì— ì˜í•´ 관리ë˜ë©° ê±°ì˜ ë§¤ë²ˆ 격주로 ë°°í¬ëœë‹¤. ì»¤ë„ íŠ¸ë¦¬ 문서들 ë‚´ì˜ :ref:`Documentation/process/stable-kernel-rules.rst <stable_kernel_rules>` 파ì¼ì€ ì–´ë–¤ ì¢…ë¥˜ì˜ ë³€ê²½ë“¤ì´ -stable 트리로 들어왔는지와 ë°°í¬ í”„ë¡œì„¸ìŠ¤ê°€ 어떻게 진행ë˜ëŠ”지를 설명한다. 서브시스템 ì»¤ë„ íŠ¸ë¦¬ë“¤ ~~~~~~~~~~~~~~~~~~~~~~ 다양한 ì»¤ë„ ì„œë¸Œì‹œìŠ¤í…œì˜ ë©”ì¸í…Œì´ë„ˆë“¤ --- ê·¸ë¦¬ê³ ë§Žì€ ì»¤ë„ ì„œë¸Œì‹œìŠ¤í…œ 개발ìžë“¤ --- ì€ ê·¸ë“¤ì˜ í˜„ìž¬ 개발 ìƒíƒœë¥¼ 소스 ì €ìž¥ì†Œë¡œ 노출한다. ì´ë¥¼ 통해 다른 ì‚¬ëžŒë“¤ë„ ì»¤ë„ì˜ ë‹¤ë¥¸ ì˜ì—ì— ì–´ë–¤ 변화가 ì´ë£¨ì–´ì§€ê³ 있는지 ì•Œ 수 있다. 급ì†ížˆ ê°œë°œì´ ì§„í–‰ë˜ëŠ” ì˜ì—ì´ ìžˆê³ ê·¸ë ‡ì§€ ì•Šì€ ì˜ì—ì´ ìžˆìœ¼ë¯€ë¡œ, 개발ìžëŠ” 다른 개발ìžê°€ ì œì¶œí•œ ìˆ˜ì • 사í•ê³¼ ìžì‹ ì˜ ìˆ˜ì •ì‚¬í•ì˜ 충ëŒì´ë‚˜ ë™ì¼í•œ ì¼ì„ ë™ì‹œì— ë‘ì‚¬ëžŒì´ ë”°ë¡œ 진행하는 사태를 방지하기 위해 급ì†ížˆ ê°œë°œì´ ì§„í–‰ë˜ê³ 있는 ì˜ì—ì— ìž‘ì—…ì˜ ë² ì´ìŠ¤ë¥¼ 맞춰줄 ê²ƒì´ ìš”êµ¬ëœë‹¤. ëŒ€ë¶€ë¶„ì˜ ì´ëŸ¬í•œ ì €ìž¥ì†ŒëŠ” git 트리지만, gitì´ ì•„ë‹Œ SCM으로 관리ë˜ê±°ë‚˜, quilt 시리즈로 ì œê³µë˜ëŠ” íŒ¨ì¹˜ë“¤ë„ ì¡´ìž¬í•œë‹¤. ì´ëŸ¬í•œ 서브시스템 ì €ìž¥ì†Œë“¤ì€ MAINTAINERS 파ì¼ì— 나열ë˜ì–´ 있다. ëŒ€ë¶€ë¶„ì€ https://git.kernel.org ì—ì„œ ë³¼ 수 있다. ì œì•ˆëœ íŒ¨ì¹˜ëŠ” 서브시스템 íŠ¸ë¦¬ì— ì»¤ë°‹ë˜ê¸° ì „ì— ë©”ì¼ë§ 리스트를 통해 리뷰ëœë‹¤(ì•„ëž˜ì˜ ê´€ë ¨ ì„¹ì…˜ì„ ì°¸ê³ í•˜ê¸° 바란다). ì¼ë¶€ ì»¤ë„ ì„œë¸Œì‹œìŠ¤í…œì˜ ê²½ìš°, ì´ ë¦¬ë·° 프로세스는 patchworkë¼ëŠ” ë„구를 통해 추ì ëœë‹¤. patchworkì€ ë“±ë¡ëœ 패치와 íŒ¨ì¹˜ì— ëŒ€í•œ 코멘트, íŒ¨ì¹˜ì˜ ë²„ì ¼ì„ ë³¼ 수 있는 웹 ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ ì œê³µí•˜ê³ , ë©”ì¸í…Œì´ë„ˆëŠ” 패치를 리뷰 중, 리뷰 통과, ë˜ëŠ” ë°˜ë ¤ë¨ìœ¼ë¡œ í‘œì‹œí• ìˆ˜ 있다. ëŒ€ë¶€ë¶„ì˜ ì´ëŸ¬í•œ patchwork 사ì´íŠ¸ëŠ” https://patchwork.kernel.org/ ì— ë‚˜ì—´ë˜ì–´ 있다. 통합 테스트를 위한 linux-next ì»¤ë„ íŠ¸ë¦¬ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 서브시스템 íŠ¸ë¦¬ë“¤ì˜ ë³€ê²½ì‚¬í•ë“¤ì€ mainline 트리로 들어오기 ì „ì— í†µí•© 테스트를 ê±°ì³ì•¼ 한다. ì´ëŸ° 목ì 으로, ëª¨ë“ ì„œë¸Œì‹œìŠ¤í…œ íŠ¸ë¦¬ì˜ ë³€ê²½ì‚¬í•ì„ ê±°ì˜ ë§¤ì¼ ë°›ì•„ê°€ëŠ” 특수한 테스트 ì €ìž¥ì†Œê°€ 존재한다: https://git.kernel.org/?p=linux/kernel/git/next/linux-next.git ì´ëŸ° ì‹ìœ¼ë¡œ, linux-next 커ë„ì„ í†µí•´ ë‹¤ìŒ ë¨¸ì§€ ê¸°ê°„ì— ë©”ì¸ë¼ì¸ 커ë„ì— ì–´ë–¤ ë³€ê²½ì´ ê°€í•´ì§ˆ 것ì¸ì§€ 간략히 ì•Œ 수 있다. 모험심 ê°•í•œ 테스터ë¼ë©´ linux-next 커ë„ì—ì„œ 테스트를 수행하는 ê²ƒë„ ì¢‹ì„ ê²ƒì´ë‹¤. 버그 ë³´ê³ --------- ë©”ì¸ ì»¤ë„ ì†ŒìŠ¤ ë””ë ‰í† ë¦¬ì— ìžˆëŠ” 'Documentation/admin-guide/reporting-issues.rst' 파ì¼ì€ ì»¤ë„ ë²„ê·¸ë¼ê³ ìƒê°ë˜ëŠ” ê²ƒì„ ì–´ë–»ê²Œ ë³´ê³ í•˜ë©´ ë˜ëŠ”지, ê·¸ë¦¬ê³ ë¬¸ì œë¥¼ 추ì 하기 위해서 ì»¤ë„ ê°œë°œìžë“¤ì´ 필요로 하는 ì •ë³´ê°€ 무엇들ì¸ì§€ë¥¼ ìƒì„¸ížˆ ì„¤ëª…í•˜ê³ ìžˆë‹¤. 버그 리í¬íŠ¸ë“¤ì˜ 관리 -------------------- ì—¬ëŸ¬ë¶„ì˜ í•´í‚¹ ê¸°ìˆ ì„ ì—°ìŠµí•˜ëŠ” 가장 ì¢‹ì€ ë°©ë²• ì¤‘ì˜ í•˜ëŠ” 다른 ì‚¬ëžŒë“¤ì´ ë³´ê³ í•œ ë²„ê·¸ë“¤ì„ ìˆ˜ì •í•˜ëŠ” 것ì´ë‹¤. ì—¬ëŸ¬ë¶„ì€ ì»¤ë„ì„ ë”ìš± ì•ˆì •í™”ì‹œí‚¤ëŠ”ë° ë„ì›€ì„ ì¤„ ë¿ë§Œì´ ì•„ë‹ˆë¼ ì‹¤ì œìžˆëŠ” ë¬¸ì œë“¤ì„ ìˆ˜ì •í•˜ëŠ” ë²•ì„ ë°°ìš°ê²Œ ë˜ê³ 그와 함께 ì—¬ëŸ¬ë¶„ë“¤ì˜ ê¸°ìˆ ì€ í–¥ìƒë 것ì´ë©° 다른 개발ìžë“¤ì´ ì—¬ëŸ¬ë¶„ì˜ ì¡´ìž¬ì— ëŒ€í•´ 알게 ë 것ì´ë‹¤. 버그를 ìˆ˜ì •í•˜ëŠ” ê²ƒì€ ê°œë°œìžë“¤ 사ì´ì—ì„œ ì 수를 ì–»ì„ ìˆ˜ 있는 가장 ì¢‹ì€ ë°©ë²•ì¤‘ì˜ í•˜ë‚˜ì´ë‹¤. 왜ëƒí•˜ë©´ ë§Žì€ ì‚¬ëžŒë“¤ì€ ë‹¤ë¥¸ ì‚¬ëžŒë“¤ì˜ ë²„ê·¸ë“¤ì„ ìˆ˜ì •í•˜ê¸° 위하여 ì‹œê°„ì„ ë‚비하지 않기 때문ì´ë‹¤. ì´ë¯¸ ë³´ê³ ëœ ë²„ê·¸ 리í¬íŠ¸ë“¤ì„ ê°€ì§€ê³ ìž‘ì—…í•˜ê¸° 위해서는 ì—¬ëŸ¬ë¶„ì´ ê´€ì‹¬ìžˆëŠ” ì„œë¸Œì‹œìŠ¤í…œì„ ì°¾ì•„ë¼. 해당 ì„œë¸Œì‹œìŠ¤í…œì˜ ë²„ê·¸ë“¤ì´ ì–´ë””ë¡œ 리í¬íŠ¸ ë˜ëŠ”지 MAINTAINERS 파ì¼ì„ ì²´í¬í•˜ë¼; 그건 대부분 ë©”ì¼ë§ 리스트ì´ê³ , ê°€ë”ì€ ë²„ê·¸ 추ì 시스템ì´ë‹¤. ê·¸ ìž¥ì†Œì— ìžˆëŠ” 최근 버그 리í¬íŠ¸ 기ë¡ë“¤ì„ ê²€ìƒ‰í•˜ê³ ì—¬ëŸ¬ë¶„ì´ ë³´ê¸°ì— ì 합하다 ì‹¶ì€ ê²ƒì„ ë„와ë¼. ì—¬ëŸ¬ë¶„ì€ ë²„ê·¸ 리í¬íŠ¸ë¥¼ 위해 https://bugzilla.kernel.org 를 ì²´í¬í•˜ê³ ìž í• ìˆ˜ë„ ìžˆë‹¤; ì†Œìˆ˜ì˜ ì»¤ë„ ì„œë¸Œì‹œìŠ¤í…œë“¤ë§Œì´ ë²„ê·¸ ì‹ ê³ ì™€ 추ì ì„ ìœ„í•´ 해당 ì‹œìŠ¤í…œì„ ì‹¤ì œë¡œ ì‚¬ìš©í•˜ê³ ìžˆì§€ë§Œ, ì „ì²´ 커ë„ì˜ ë²„ê·¸ë“¤ì´ ê·¸ê³³ì— ì •ë¦¬ëœë‹¤. ë©”ì¼ë§ 리스트들 --------------- ìœ„ì˜ ëª‡ëª‡ ë¬¸ì„œë“¤ì´ ì„¤ëª…í•˜ì˜€ì§€ë§Œ 핵심 ì»¤ë„ ê°œë°œìžë“¤ì˜ 대다수는 리눅스 ì»¤ë„ ë©”ì¼ë§ ë¦¬ìŠ¤íŠ¸ì— ì°¸ì—¬í•˜ê³ ìžˆë‹¤. ë¦¬ìŠ¤íŠ¸ì— ë“±ë¡í•˜ê³ 해지하는 ë°©ë²•ì— ê´€í•œ ìžì„¸í•œ 사í•ì€ 다ìŒì—ì„œ ì°¸ì¡°í• ìˆ˜ 있다. http://vger.kernel.org/vger-lists.html#linux-kernel 웹ìƒì˜ ë§Žì€ ë‹¤ë¥¸ ê³³ì—ë„ ë©”ì¼ë§ ë¦¬ìŠ¤íŠ¸ì˜ ì•„ì¹´ì´ë¸Œë“¤ì´ 있다. ì´ëŸ¬í•œ ì•„ì¹´ì´ë¸Œë“¤ì„ ì°¾ìœ¼ë ¤ë©´ 검색 ì—”ì§„ì„ ì‚¬ìš©í•˜ë¼. 예를 들어: https://lore.kernel.org/lkml/ ì—¬ëŸ¬ë¶„ì´ ìƒˆë¡œìš´ ë¬¸ì œì— ê´€í•´ ë¦¬ìŠ¤íŠ¸ì— ì˜¬ë¦¬ê¸° ì „ì— ë§í•˜ê³ ì‹¶ì€ ì£¼ì œì— ê´€í•œ ê²ƒì„ ì•„ì¹´ì´ë¸Œì—ì„œ ë¨¼ì € 찾아보기를 ê°•ë ¥ížˆ 권장한다. ì´ë¯¸ ìƒì„¸í•˜ê²Œ í† ë¡ ëœ ë§Žì€ ê²ƒë“¤ì´ ë©”ì¼ë§ ë¦¬ìŠ¤íŠ¸ì˜ ì•„ì¹´ì´ë¸Œì— 기ë¡ë˜ì–´ 있다. ê°ê°ì˜ ì»¤ë„ ì„œë¸Œì‹œìŠ¤í…œë“¤ì˜ ëŒ€ë¶€ë¶„ì€ ìžì‹ ë“¤ì˜ ê°œë°œì— ê´€í•œ ë…¸ë ¥ë“¤ë¡œ ì´ë£¨ì–´ì§„ ë¶„ë¦¬ëœ ë©”ì¼ë§ 리스트를 ë”°ë¡œ ê°€ì§€ê³ ìžˆë‹¤. 다른 ê·¸ë£¹ë“¤ì´ ë¬´ìŠ¨ 리스트를 ê°€ì§€ê³ ìžˆëŠ”ì§€ëŠ” MAINTAINERS 파ì¼ì„ 참조하ë¼. ë§Žì€ ë¦¬ìŠ¤íŠ¸ë“¤ì€ kernel.orgì—ì„œ 호스트ë˜ê³ 있다. ê·¸ ì •ë³´ë“¤ì€ ë‹¤ìŒì—ì„œ 참조ë 수 있다. http://vger.kernel.org/vger-lists.html ë¦¬ìŠ¤íŠ¸ë“¤ì„ ì‚¬ìš©í• ë•ŒëŠ” 올바른 ì˜ˆì ˆì„ ë”°ë¥¼ ê²ƒì„ ìœ ë…í•´ë¼. 대단하진 않지만 ë‹¤ìŒ URLì€ ë¦¬ìŠ¤íŠ¸(í˜¹ì€ ëª¨ë“ ë¦¬ìŠ¤íŠ¸)와 대화하는 몇몇 간단한 ê°€ì´ë“œë¼ì¸ì„ ê°€ì§€ê³ ìžˆë‹¤. http://www.albion.com/netiquette/ 여러 ì‚¬ëžŒë“¤ì´ ì—¬ëŸ¬ë¶„ì˜ ë©”ì¼ì— ì‘답한다면 CC: 즉 ìˆ˜ì‹ ë¦¬ìŠ¤íŠ¸ëŠ” 꽤 커지게 ë 것ì´ë‹¤. 아무 ì´ìœ ì—†ì´ CCì—ì„œ ì–´ë–¤ ì‚¬ëžŒë„ ì œê±°í•˜ê±°ë‚˜ 리스트 주소로만 íšŒì‹ í•˜ì§€ 마ë¼. ë©”ì¼ì„ 보낸 사람으로서 하나를 ë°›ê³ ë¦¬ìŠ¤íŠ¸ë¡œë¶€í„° ë˜ í•˜ë‚˜ë¥¼ 받아 ë‘번 받는 ê²ƒì— ìµìˆ™í•˜ì—¬ 있으니 mail-header를 ì¡°ìž‘í•˜ë ¤ê³ í•˜ì§€ ë§ì•„ë¼. ì‚¬ëžŒë“¤ì€ ê·¸ëŸ° ê²ƒì„ ì¢‹ì•„í•˜ì§€ ì•Šì„ ê²ƒì´ë‹¤. ì—¬ëŸ¬ë¶„ì˜ íšŒì‹ ì˜ ë¬¸ë§¥ì„ ì›ëž˜ëŒ€ë¡œ ìœ ì§€í•´ì•¼ 한다. ì—¬ëŸ¬ë¶„ë“¤ì˜ íšŒì‹ ì˜ ìœ—ë¶€ë¶„ì— "John 커ë„해커는 작성했다...."를 ìœ ì§€í•˜ë©° ì—¬ëŸ¬ë¶„ë“¤ì˜ ì˜ê²¬ì„ ê·¸ ë©”ì¼ì˜ ìœ—ë¶€ë¶„ì— ìž‘ì„±í•˜ì§€ ë§ê³ ê° ì¸ìš©í•œ 단ë½ë“¤ 사ì´ì— 넣어ë¼. ì—¬ëŸ¬ë¶„ë“¤ì´ íŒ¨ì¹˜ë“¤ì„ ë©”ì¼ì— 넣는다면 ê·¸ê²ƒë“¤ì€ :ref:`Documentation/process/submitting-patches.rst <submittingpatches>` ì— ë‚˜ì™€ìžˆëŠ”ë°ë¡œ 명백히(plain) ì½ì„ 수 있는 í…스트여야 한다. ì»¤ë„ ê°œë°œìžë“¤ì€ 첨부파ì¼ì´ë‚˜ ì••ì¶•ëœ íŒ¨ì¹˜ë“¤ì„ ì›í•˜ì§€ 않는다. ê·¸ë“¤ì€ ì—¬ëŸ¬ë¶„ë“¤ì˜ íŒ¨ì¹˜ì˜ ê° ë¼ì¸ 단위로 코멘트를 하길 ì›í•˜ë©° 압축하거나 첨부하지 ì•Šê³ ë³´ë‚´ëŠ” ê²ƒì´ ê·¸ë ‡ê²Œ í• ìˆ˜ 있는 ìœ ì¼í•œ 방법ì´ë‹¤. ì—¬ëŸ¬ë¶„ë“¤ì´ ì‚¬ìš©í•˜ëŠ” ë©”ì¼ í”„ë¡œê·¸ëž¨ì´ ìŠ¤íŽ˜ì´ìŠ¤ë‚˜ íƒ ë¬¸ìžë“¤ì„ 조작하지 않는지 확ì¸í•˜ë¼. 가장 ì¢‹ì€ ì²« 테스트는 ë©”ì¼ì„ ìžì‹ ì—게 ë³´ë‚´ë³´ê³ ìŠ¤ìŠ¤ë¡œ ê·¸ 패치를 ì ìš©í•´ë³´ë¼. ê·¸ê²ƒì´ ë™ìž‘하지 않는다면 ì—¬ëŸ¬ë¶„ì˜ ë©”ì¼ í”„ë¡œê·¸ëž¨ì„ ê³ ì¹˜ë˜ê°€ ì œëŒ€ë¡œ ë™ìž‘하는 프로그램으로 바꾸어ë¼. ë¬´ì—‡ë³´ë‹¤ë„ ë©”ì¼ë§ ë¦¬ìŠ¤íŠ¸ì˜ ë‹¤ë¥¸ 구ë…ìžë“¤ì—게 ë³´ì—¬ì£¼ë ¤ 한다는 ê²ƒì„ ê¸°ì–µí•˜ë¼. 커뮤니티와 í˜‘ë ¥í•˜ëŠ” 법 ---------------------- ì»¤ë„ ì»¤ë®¤ë‹ˆí‹°ì˜ ëª©ì ì€ ê°€ëŠ¥í•œí•œ 가장 ì¢‹ì€ ì»¤ë„ì„ ì œê³µí•˜ëŠ” 것ì´ë‹¤. ì—¬ëŸ¬ë¶„ì´ ë°›ì•„ë“¤ì—¬ì§ˆ 패치를 ì œì¶œí•˜ê²Œ ë˜ë©´ ê·¸ íŒ¨ì¹˜ì˜ ê¸°ìˆ ì ì¸ ì´ì 으로 ê²€í† ë 것ì´ë‹¤. 그럼 ì—¬ëŸ¬ë¶„ë“¤ì€ ë¬´ì—‡ì„ ê¸°ëŒ€í•˜ê³ ìžˆì–´ì•¼ 하는가? - ë¹„íŒ - ì˜ê²¬ - ë³€ê²½ì„ ìœ„í•œ 요구 - ë‹¹ìœ„ì„±ì„ ìœ„í•œ 요구 - 침묵 기억하ë¼. ì´ê²ƒë“¤ì€ ì—¬ëŸ¬ë¶„ì˜ íŒ¨ì¹˜ê°€ 커ë„ë¡œ 들어가기 위한 ê³¼ì •ì´ë‹¤. ì—¬ëŸ¬ë¶„ì˜ íŒ¨ì¹˜ë“¤ì€ ë¹„íŒê³¼ 다른 ì˜ê²¬ì„ ë°›ì„ ìˆ˜ ìžˆê³ ê·¸ê²ƒë“¤ì„ ê¸°ìˆ ì ì¸ ë ˆë²¨ë¡œ í‰ê°€í•˜ê³ 재작업하거나 ë˜ëŠ” 왜 ìˆ˜ì •í•˜ë©´ 안ë˜ëŠ”ì§€ì— ê´€í•˜ì—¬ ëª…ë£Œí•˜ê³ ê°„ê²°í•œ ì´ìœ 를 ë§í• 수 있어야 한다. ì—¬ëŸ¬ë¶„ì´ ì œì¶œí•œ ê²ƒì— ì–´ë–¤ ì‘ë‹µë„ ìžˆì§€ 않다면 몇 ì¼ì„ ê¸°ë‹¤ë ¤ë³´ê³ ë‹¤ì‹œ ì‹œë„í•´ë¼. ë•Œë¡ ë„ˆë¬´ ë§Žì€ ë©”ì¼ë“¤ ì†ì— ë¬»í˜€ë²„ë¦¬ê¸°ë„ í•œë‹¤. ì—¬ëŸ¬ë¶„ì€ ë¬´ì—‡ì„ í•´ì„œëŠ” 안ë˜ëŠ”ê°€? - ì—¬ëŸ¬ë¶„ì˜ íŒ¨ì¹˜ê°€ 아무 질문 ì—†ì´ ë°›ì•„ë“¤ì—¬ì§€ê¸°ë¥¼ 기대하는 것 - ë°©ì–´ì ì´ ë˜ëŠ” 것 - ì˜ê²¬ì„ 무시하는 것 - ìš”ì²ëœ ë³€ê²½ì„ í•˜ì§€ ì•Šê³ íŒ¨ì¹˜ë¥¼ 다시 ì œì¶œí•˜ëŠ” 것 가능한한 가장 ì¢‹ì€ ê¸°ìˆ ì ì¸ í•´ë‹µì„ ì°¾ê³ ìžˆëŠ” 커뮤니티ì—서는 í•ìƒ ì–´ë–¤ 패치가 얼마나 좋ì€ì§€ì— 관하여 다른 ì˜ê²¬ë“¤ì´ ìžˆì„ ìˆ˜ 있다. ì—¬ëŸ¬ë¶„ì€ í˜‘ì¡°ì ì´ì–´ì•¼ í•˜ê³ ê¸°êº¼ì´ ì—¬ëŸ¬ë¶„ì˜ ìƒê°ì„ ì»¤ë„ ë‚´ì— ë§žì¶”ì–´ì•¼ 한다. 아니면 ì ì–´ë„ ì—¬ëŸ¬ë¶„ì˜ ê²ƒì´ ê°€ì¹˜ìžˆë‹¤ëŠ” ê²ƒì„ ì¦ëª…하여야 한다. ìž˜ëª»ëœ ê²ƒë„ ì—¬ëŸ¬ë¶„ì´ ì˜¬ë°”ë¥¸ ë°©í–¥ì˜ í•´ê²°ì±…ìœ¼ë¡œ ì´ëŒì–´ê°ˆ ì˜ì§€ê°€ 있다면 받아들여질 것ì´ë¼ëŠ” ì ì„ ê¸°ì–µí•˜ë¼. ì—¬ëŸ¬ë¶„ì˜ ì²« íŒ¨ì¹˜ì— ì—¬ëŸ¬ë¶„ì´ ìˆ˜ì •í•´ì•¼í•˜ëŠ” ì‹ì—¬ê°œ ì •ë„ì˜ íšŒì‹ ì´ ì˜¤ëŠ” ê²½ìš°ë„ í”하다. ì´ê²ƒì€ ì—¬ëŸ¬ë¶„ì˜ íŒ¨ì¹˜ê°€ 받아들여지지 ì•Šì„ ê²ƒì´ë¼ëŠ” ê²ƒì„ ì˜ë¯¸í•˜ëŠ” ê²ƒì´ ì•„ë‹ˆê³ ê°œì¸ì 으로 여러분ì—게 ê°ì •ì´ 있어서 그러는 ê²ƒë„ ì•„ë‹ˆë‹¤. 간단히 ì—¬ëŸ¬ë¶„ì˜ íŒ¨ì¹˜ì— ì œê¸°ëœ ë¬¸ì œë“¤ì„ ìˆ˜ì •í•˜ê³ ê·¸ê²ƒì„ ë‹¤ì‹œ ë³´ë‚´ë¼. ì»¤ë„ ì»¤ë®¤ë‹ˆí‹°ì™€ 기업 ì¡°ì§ê°„ì˜ ì°¨ì´ì ------------------------------------ ì»¤ë„ ì»¤ë®¤ë‹ˆí‹°ëŠ” 가장 ì „í†µì ì¸ íšŒì‚¬ì˜ ê°œë°œ 환경과는 다르다. ì—¬ê¸°ì— ì—¬ëŸ¬ë¶„ë“¤ì˜ ë¬¸ì œë¥¼ 피하기 위한 목ë¡ì´ 있다. ì—¬ëŸ¬ë¶„ë“¤ì´ ì œì•ˆí•œ ë³€ê²½ë“¤ì— ê´€í•˜ì—¬ ë§í• ë•Œ ì¢‹ì€ ê²ƒë“¤ : - "ì´ê²ƒì€ 여러 ë¬¸ì œë“¤ì„ í•´ê²°í•©ë‹ˆë‹¤." - "ì´ê²ƒì€ 2000 ë¼ì¸ì˜ 코드를 줄입니다." - "ì´ê²ƒì€ ë‚´ê°€ ë§í•˜ë ¤ëŠ” ê²ƒì— ê´€í•´ 설명하는 패치입니다." - "나는 5ê°œì˜ ë‹¤ë¥¸ 아키í…ì³ì—ì„œ ê·¸ê²ƒì„ í…ŒìŠ¤íŠ¸ 했으므로..." - "ì—¬ê¸°ì— ì¼ë ¨ì˜ ìž‘ì€ íŒ¨ì¹˜ë“¤ì´ ìžˆìœ¼ë¯€ë¡œ..." - "ì´ê²ƒì€ ì¼ë°˜ì ì¸ ë¨¸ì‹ ì—ì„œ ì„±ëŠ¥ì„ í–¥ìƒí•¨ìœ¼ë¡œ..." ì—¬ëŸ¬ë¶„ë“¤ì´ ë§í• ë•Œ 피해야 í• ì¢‹ì§€ ì•Šì€ ê²ƒë“¤ : - "우리는 ê·¸ê²ƒì„ AIX/ptx/Solarisì—ì„œ ì´ëŸ¬í•œ 방법으로 했다. 그러므로 ê·¸ê²ƒì€ ì¢‹ì€ ê²ƒìž„ì— í‹€ë¦¼ì—†ë‹¤..." - "나는 20ë…„ë™ì•ˆ ì´ê²ƒì„ 해왔다. 그러므로..." - "ì´ê²ƒì€ ëˆì„ 벌기위해 ë‚˜ì˜ íšŒì‚¬ê°€ 필요로 하는 것ì´ë‹¤." - "ì´ê²ƒì€ ìš°ë¦¬ì˜ ì—”í„°í”„ë¼ì´ì¦ˆ ìƒí’ˆ ë¼ì¸ì„ 위한 것ì´ë‹¤." - "ì—¬ê¸°ì— ë‚˜ì˜ ìƒê°ì„ ë§í•˜ê³ 있는 1000 페ì´ì§€ 설계 문서가 있다." - "나는 6달ë™ì•ˆ ì´ê²ƒì„ 했으니..." - "ì—¬ê¸°ì— 5000 ë¼ì¸ 짜리 패치가 있으니..." - "나는 현재 ë’¤ì£½ë°•ì£½ì¸ ê²ƒì„ ìž¬ìž‘ì„±í–ˆë‹¤. ê·¸ë¦¬ê³ ì—¬ê¸°ì—..." - "나는 마ê°ì‹œí•œì„ ê°€ì§€ê³ ìžˆìœ¼ë¯€ë¡œ ì´ íŒ¨ì¹˜ëŠ” 지금 ì ìš©ë 필요가 있다." ì»¤ë„ ì»¤ë®¤ë‹ˆí‹°ê°€ ì „í†µì ì¸ ì†Œí”„íŠ¸ì›¨ì–´ ì—”ì§€ë‹ˆì–´ë§ ê°œë°œ 환경들과 ë˜ ë‹¤ë¥¸ ì ì€ ì–¼êµ´ì„ ë³´ì§€ ì•Šê³ ì¼í•œë‹¤ëŠ” ì ì´ë‹¤. ì´ë©”ì¼ê³¼ irc를 ëŒ€í™”ì˜ ì£¼ìš”ìˆ˜ë‹¨ìœ¼ë¡œ 사용하는 ê²ƒì˜ í•œê°€ì§€ 장ì ì€ ì„±ë³„ì´ë‚˜ ì¸ì¢…ì˜ ì°¨ë³„ì´ ì—†ë‹¤ëŠ” 것ì´ë‹¤. 리눅스 커ë„ì˜ ìž‘ì—… 환경ì—서는 단지 ì´ë©”ì¼ ì£¼ì†Œë§Œ 알수 있기 ë•Œë¬¸ì— ì—¬ì„±ê³¼ 소수 ë¯¼ì¡±ë“¤ë„ ëª¨ë‘ ë°›ì•„ë“¤ì—¬ì§„ë‹¤. êµì œì 으로 ì¼í•˜ê²Œ ë˜ëŠ” ì¸¡ë©´ì€ ì‚¬ëžŒì˜ ì´ë¦„ì— ê·¼ê±°í•˜ì—¬ ì„±ë³„ì„ ì¶”ì¸¡í• ìˆ˜ 없게 í•˜ê¸°ë•Œë¬¸ì— ì°¨ë³„ì„ ì—†ì• ëŠ” ë° ë„ì›€ì„ ì¤€ë‹¤. Andreaë¼ëŠ” ì´ë¦„ì„ ê°€ì§„ 남ìžì™€ Patì´ë¼ëŠ” ì´ë¦„ì„ ê°€ì§„ ì—¬ìžê°€ ìžˆì„ ìˆ˜ë„ ìžˆëŠ” 것ì´ë‹¤. 리눅스 커ë„ì—ì„œ 작업하며 ìƒê°ì„ í‘œí˜„í•´ì™”ë˜ ëŒ€ë¶€ë¶„ì˜ ì—¬ì„±ë“¤ì€ ê¸ì •ì ì¸ ê²½í—˜ì„ ê°€ì§€ê³ ìžˆë‹¤. 언어 ìž¥ë²½ì€ ì˜ì–´ì— ìµìˆ™í•˜ì§€ ì•Šì€ ëª‡ëª‡ 사람들ì—게 ë¬¸ì œê°€ ë ìˆ˜ë„ ìžˆë‹¤. ì–¸ì–´ì˜ í›Œë¥í•œ 구사는 ë©”ì¼ë§ 리스트ì—ì„œ 올바르게 ìžì‹ ì˜ ìƒê°ì„ 표현하기 위하여 필요하다. 그래서 ì—¬ëŸ¬ë¶„ì€ ì´ë©”ì¼ì„ 보내기 ì „ì— ì˜ì–´ë¥¼ 올바르게 ì‚¬ìš©í•˜ê³ ìžˆëŠ”ì§€ë¥¼ ì²´í¬í•˜ëŠ” ê²ƒì´ ë°”ëžŒì§í•˜ë‹¤. ì—¬ëŸ¬ë¶„ì˜ ë³€ê²½ì„ ë‚˜ëˆ„ì–´ë¼ ------------------------ 리눅스 ì»¤ë„ ì»¤ë®¤ë‹ˆí‹°ëŠ” í•œêº¼ë²ˆì— êµ‰ìž¥ížˆ í° ì½”ë“œì˜ ë¬¶ìŒ(chunk)ì„ ì‰½ê²Œ 받아들ì´ì§€ 않는다. ë³€ê²½ì€ ì ì ˆí•˜ê²Œ 소개ë˜ê³ , ê²€í† ë˜ê³ , ê°ê°ì˜ 부분으로 작게 ë‚˜ëˆ„ì–´ì ¸ì•¼ 한다. ì´ê²ƒì€ 회사ì—ì„œ 하는 것과는 ì •í™•ížˆ 반대ë˜ëŠ” 것ì´ë‹¤. ì—¬ëŸ¬ë¶„ë“¤ì˜ ì œì•ˆì€ ê°œë°œ ì´ˆê¸°ì— ì¼ì°ì´ 소개ë˜ì•¼ 한다. 그래서 ì—¬ëŸ¬ë¶„ë“¤ì€ ìžì‹ ì´ í•˜ê³ ìžˆëŠ” ê²ƒì— ê´€í•˜ì—¬ í”¼ë“œë°±ì„ ë°›ì„ ìˆ˜ 있게 ëœë‹¤. 커뮤니티가 ì—¬ëŸ¬ë¶„ë“¤ì´ ì»¤ë®¤ë‹ˆí‹°ì™€ 함께 ì¼í•˜ê³ 있다는 ê²ƒì„ ëŠë¼ë„ë¡ ë§Œë“¤ê³ ì»¤ë®¤ë‹ˆí‹°ê°€ ì—¬ëŸ¬ë¶„ì˜ ê¸°ëŠ¥ì„ ìœ„í•œ ì“°ë ˆê¸° ìž¥ìœ¼ë¡œì¨ ì‚¬ìš©ë˜ì§€ ì•Šê³ ìžˆë‹¤ëŠ” ê²ƒì„ ëŠë¼ê²Œ 하ìž. 그러나 ë©”ì¼ë§ ë¦¬ìŠ¤íŠ¸ì— í•œë²ˆì— 50ê°œì˜ ì´ë©”ì¼ì„ 보내지는 ë§ì•„ë¼. ì—¬ëŸ¬ë¶„ë“¤ì˜ ì¼ë ¨ì˜ íŒ¨ì¹˜ë“¤ì€ í•ìƒ ë” ìž‘ì•„ì•¼ 한다. 패치를 나누는 ì´ìœ 는 다ìŒê³¼ 같다. 1) ìž‘ì€ íŒ¨ì¹˜ë“¤ì€ ì—¬ëŸ¬ë¶„ì˜ íŒ¨ì¹˜ë“¤ì´ ì ìš©ë 수 있는 í™•ë¥ ì„ ë†’ì—¬ì¤€ë‹¤. 왜ëƒí•˜ë©´ 다른 ì‚¬ëžŒë“¤ì€ ì •í™•ì„±ì„ ê²€ì¦í•˜ê¸° 위하여 ë§Žì€ ì‹œê°„ê³¼ ë…¸ë ¥ì„ ë“¤ì´ê¸°ë¥¼ ì›í•˜ì§€ 않는다. 5ì¤„ì˜ íŒ¨ì¹˜ëŠ” ë©”ì¸í…Œì´ë„ˆê°€ ê±°ì˜ ëª‡ 초간 ížë— ë³´ë©´ ì ìš©ë 수 있다. 그러나 500 ì¤„ì˜ íŒ¨ì¹˜ëŠ” ì •í™•ì„±ì„ ê²€í† í•˜ê¸° 위하여 ëª‡ì‹œê°„ì´ ê±¸ë¦´ ìˆ˜ë„ ìžˆë‹¤(걸리는 ì‹œê°„ì€ íŒ¨ì¹˜ì˜ í¬ê¸° í˜¹ì€ ë‹¤ë¥¸ ê²ƒì— ë¹„ë¡€í•˜ì—¬ 기하급수ì 으로 늘어난다). 패치를 작게 만드는 ê²ƒì€ ë¬´ì—‡ì¸ê°€ 잘못ë˜ì—ˆì„ ë•Œ 디버그하는 ê²ƒì„ ì‰½ê²Œ ë§Œë“ ë‹¤. 즉, ê·¸ë ‡ê²Œ 만드는 ê²ƒì€ ë§¤ìš° í° íŒ¨ì¹˜ë¥¼ ì ìš©í•œ í›„ì— ì¡°ì‚¬í•˜ëŠ” 것 보다 ìž‘ì€ íŒ¨ì¹˜ë¥¼ ì ìš©í•œ í›„ì— (ê·¸ë¦¬ê³ ëª‡ëª‡ì˜ ê²ƒì´ ê¹¨ì¡Œì„ ë•Œ) 하나씩 íŒ¨ì¹˜ë“¤ì„ ì œê±°í•´ê°€ë©° 디버그 하기 쉽ë„ë¡ ë§Œë“¤ì–´ 준다. 2) ìž‘ì€ íŒ¨ì¹˜ë“¤ì„ ë³´ë‚´ëŠ” 것ë¿ë§Œ ì•„ë‹ˆë¼ íŒ¨ì¹˜ë“¤ì„ ì œì¶œí•˜ê¸°ì „ì— ìž¬ìž‘ì„±í•˜ê³ ê°„ë‹¨í•˜ê²Œ(í˜¹ì€ ê°„ë‹¨í•œê²Œ 재배치하여) 하는 ê²ƒë„ ì¤‘ìš”í•˜ë‹¤. ì—¬ê¸°ì— ì»¤ë„ ê°œë°œìž Al Viroì˜ ì´ì•¼ê¸°ê°€ 있다. *"í•™ìƒì˜ 수학 ìˆ™ì œë¥¼ 채ì 하는 ì„ ìƒë‹˜ì„ ìƒê°í•´ë³´ë¼. ì„ ìƒë‹˜ì€ í•™ìƒë“¤ì´ ë‹µì„ ì–»ì„때까지 ê²ªì€ ì‹œí–‰ì°©ì˜¤ë¥¼ 보길 ì›í•˜ì§€ 않는다. ì„ ìƒë‹˜ë“¤ì€ ê°„ê²°í•˜ê³ ê°€ìž¥ ë›°ì–´ë‚œ ë‹µì„ ë³´ê¸¸ ì›í•œë‹¤. 훌ë¥í•œ í•™ìƒì€ ì´ê²ƒì„ ì•Œê³ ë§ˆì§€ë§‰ìœ¼ë¡œ ë‹µì„ ì–»ê¸° ì „ 중간 ê³¼ì •ë“¤ì„ ì œì¶œí•˜ì§„ 않는다.* *ì»¤ë„ ê°œë°œë„ ë§ˆì°¬ê°€ì§€ì´ë‹¤. ë©”ì¸í…Œì´ë„ˆë“¤ê³¼ ê²€í† í•˜ëŠ” ì‚¬ëžŒë“¤ì€ ë¬¸ì œë¥¼ 풀어나가는 ê³¼ì •ì†ì— 숨겨진 ê³¼ì •ì„ ë³´ê¸¸ ì›í•˜ì§„ 않는다. ê·¸ë“¤ì€ ê°„ê²°í•˜ê³ ë©‹ì§„ ë‹µì„ ë³´ê¸¸ ì›í•œë‹¤."* 커뮤니티와 í˜‘ë ¥í•˜ë©° ë›°ì–´ë‚œ ë‹µì„ ì°¾ëŠ” 것과 ì—¬ëŸ¬ë¶„ë“¤ì˜ ë마치지 못한 작업들 사ì´ì— ê· í˜•ì„ ìœ ì§€í•´ì•¼ 하는 ê²ƒì€ ì–´ë ¤ìš¸ì§€ë„ ëª¨ë¥¸ë‹¤. 그러므로 í”„ë¡œì„¸ìŠ¤ì˜ ì´ˆë°˜ì— ì—¬ëŸ¬ë¶„ì˜ ìž‘ì—…ì„ í–¥ìƒì‹œí‚¤ê¸°ìœ„í•œ í”¼ë“œë°±ì„ ì–»ëŠ” 것 ë¿ë§Œ ì•„ë‹ˆë¼ ì—¬ëŸ¬ë¶„ë“¤ì˜ ë³€ê²½ë“¤ì„ ìž‘ì€ ë¬¶ìŒìœ¼ë¡œ ìœ ì§€í•´ì„œ 심지어는 ì—¬ëŸ¬ë¶„ì˜ ìž‘ì—…ì˜ ëª¨ë“ ë¶€ë¶„ì´ ì§€ê¸ˆì€ í¬í•¨ë 준비가 ë˜ì–´ìžˆì§€ 않지만 ìž‘ì€ ë¶€ë¶„ì€ ë²Œì¨ ë°›ì•„ë“¤ì—¬ì§ˆ 수 있ë„ë¡ ìœ ì§€í•˜ëŠ” ê²ƒì´ ë°”ëžŒì§í•˜ë‹¤. ë˜í•œ 완성ë˜ì§€ ì•Šì•˜ê³ "ë‚˜ì¤‘ì— ìˆ˜ì •ë 것ì´ë‹¤." 와 ê°™ì€ ê²ƒë“¤ì„ í¬í•¨í•˜ëŠ” íŒ¨ì¹˜ë“¤ì€ ë°›ì•„ë“¤ì—¬ì§€ì§€ ì•Šì„ ê²ƒì´ë¼ëŠ” ì ì„ ìœ ë…하ë¼. ë³€ê²½ì„ ì •ë‹¹í™”í•´ë¼ ----------------- ì—¬ëŸ¬ë¶„ë“¤ì˜ ë‚˜ëˆ„ì–´ì§„ íŒ¨ì¹˜ë“¤ì„ ë¦¬ëˆ…ìŠ¤ 커뮤니티가 왜 ë°˜ì˜í•´ì•¼ 하는지를 ì•Œë„ë¡ í•˜ëŠ” ê²ƒì€ ë§¤ìš° 중요하다. 새로운 ê¸°ëŠ¥ë“¤ì´ í•„ìš”í•˜ê³ ìœ ìš©í•˜ë‹¤ëŠ” ê²ƒì€ ë°˜ë“œì‹œ ê·¸ì— í•©ë‹¹í•œ ì´ìœ ê°€ 있어야 한다. ë³€ê²½ì„ ë¬¸ì„œí™”í•´ë¼ ----------------- ì—¬ëŸ¬ë¶„ì´ íŒ¨ì¹˜ë¥¼ ë³´ë‚´ë ¤ í• ë•ŒëŠ” ì—¬ëŸ¬ë¶„ì´ ë¬´ì—‡ì„ ë§í•˜ë ¤ê³ 하는지를 충분히 ìƒê°í•˜ì—¬ ì´ë©”ì¼ì„ 작성해야 한다. ì´ ì •ë³´ëŠ” 패치를 위한 ChangeLogê°€ ë 것ì´ë‹¤. ê·¸ë¦¬ê³ í•ìƒ ê·¸ ë‚´ìš©ì„ ë³´ê¸¸ ì›í•˜ëŠ” ëª¨ë“ ì‚¬ëžŒë“¤ì„ ìœ„í•´ ë³´ì¡´ë 것ì´ë‹¤. 패치는 완벽하게 다ìŒê³¼ ê°™ì€ ë‚´ìš©ë“¤ì„ í¬í•¨í•˜ì—¬ 설명해야 한다. - ë³€ê²½ì´ ì™œ 필요한지 - íŒ¨ì¹˜ì— ê´€í•œ ì „ì²´ 설계 ì ‘ê·¼(approach) - 구현 ìƒì„¸ë“¤ - 테스트 결과들 ì´ê²ƒì´ 무엇ì¸ì§€ ë” ìžì„¸í•œ ê²ƒì„ ì•Œê³ ì‹¶ë‹¤ë©´ ë‹¤ìŒ ë¬¸ì„œì˜ ChageLog í•ì„ ë´ë¼. "The Perfect Patch" https://www.ozlabs.org/~akpm/stuff/tpp.txt ì´ ëª¨ë“ ê²ƒì„ í•˜ëŠ” ê²ƒì€ ë§¤ìš° ì–´ë ¤ìš´ ì¼ì´ë‹¤. 완벽히 소화하는 ë°ëŠ” ì ì–´ë„ ëª‡ë…„ì´ ê±¸ë¦´ ìˆ˜ë„ ìžˆë‹¤. ë§Žì€ ì¸ë‚´ì™€ ê²°ì‹¬ì´ í•„ìš”í•œ 계ì†ë˜ëŠ” ê°œì„ ì˜ ê³¼ì •ì´ë‹¤. 그러나 가능한한 í¬ê¸°í•˜ì§€ ë§ë¼. ë§Žì€ ì‚¬ëžŒë“¤ì€ ì´ì „부터 í•´ì™”ë˜ ê²ƒì´ê³ ê·¸ ì‚¬ëžŒë“¤ë„ ì •í™•í•˜ê²Œ ì—¬ëŸ¬ë¶„ë“¤ì´ ì§€ê¸ˆ ì„œ 있는 ê·¸ 곳부터 시작했었다. ---------- "개발 프로세스"(https://lwn.net/Articles/94386/) ì„¹ì…˜ì„ ìž‘ì„±í•˜ëŠ”ë° ìžˆì–´ ì°¸ê³ í• ë¬¸ì„œë¥¼ 사용하ë„ë¡ í—ˆë½í•´ì¤€ Paolo Ciarrocchiì—게 ê°ì‚¬í•œë‹¤. ì—¬ëŸ¬ë¶„ë“¤ì´ ë§í•´ì•¼ í• ê²ƒê³¼ ë§í•´ì„œëŠ” 안ë˜ëŠ” ê²ƒì˜ ëª©ë¡ ì¤‘ ì¼ë¶€ë¥¼ ì œê³µí•´ì¤€ Randy Dunlapê³¼ Gerrit Huizengaì—게 ê°ì‚¬í•œë‹¤. ë˜í•œ ê²€í† ì™€ ì˜ê²¬ ê·¸ë¦¬ê³ ê³µí—Œì„ ì•„ë¼ì§€ ì•Šì€ Pat Mochel, Hanna Linder, Randy Dunlap, Kay Sievers, Vojtech Pavlik, Jan Kara, Josh Boyer, Kees Cook, Andrew Morton, Andi Kleen, Vadim Lobanov, Jesper Juhl, Adrian Bunk, Keri Harris, Frans Pop, David A. Wheeler, Junio Hamano, Michael Kerrisk, and Alex Shepardì—ê²Œë„ ê°ì‚¬ë¥¼ ì „í•œë‹¤. ê·¸ë“¤ì˜ ë„ì›€ì´ ì—†ì—ˆë‹¤ë©´ ì´ ë¬¸ì„œëŠ” 존재하지 ì•Šì•˜ì„ ê²ƒì´ë‹¤. ë©”ì¸í…Œì´ë„ˆ: Greg Kroah-Hartman <greg@kroah.com>