Пошук використання і визначення дуже допомагає. У будь-який IDE є. В Vim / Emacs / Інших плагінами реалізується.
Ну і не чекайте, що ви вивчите вихідні, просто читаючи їх, і будете досконально в них розбиратися. Так не буває.
Спочатку визначитеся, навіщо вам дивитися вихідні коди. Маленька продуктивність - підрубуємо профайлер, шукаємо вузькі місця. Ліземо в код, оптимізуємо, тестуємо. Повторюємо пару ітерацій.
Бракує функціоналу? Наприклад, новий тип додати хочемо. Шукаємо модулі, які реалізують схожий функціонал. Робимо свій тип за подобою існуючих. Тестуємо сервер, репліку. Профілювальник нацьковують і т.д.
І ось ви вже розібралися в деяких частинах.
А без мети лізти в код, що б "стати спецом" - нічого не вийде.
Full-stack developer (Symfony, Angular)
1) розбираємося для чого кожен файл потрібен, пробуємо приміряти загальну картину, з чого складається проект (які компоненти, модулі і т.д.). У цьому нам можуть допомогти численні статті і офіційна документація. описує архітектуру проекту.
2) далі заглиблюватися потрібно виключно з якихось причин а не просто так. Скажімо якщо вас цікавлять якісь конкретні речі. Наприклад. навіщо вам вивчати пристрій MyISAM просто так якщо його вже мало хто використовує?
В цілому ж fshp правильно все сказав.
Звичайно, якщо поставити мету: "з наскоку" розібратися в проекті, який робила велика команда фахівців, - то мало чого вийде. Особливо при відсутності хорошого практичного досвіду в мові, на якому проект написаний. Але якщо поставити мету освоїти саме ось-цей-проект (не важливо, MySQL, Linux core, Eclipse IDE, ReactOS.), То цілком. Спочатку будь-який з них здається гігантським лабіринтом, який ти ніколи не вивчиш напам'ять. Але, повірте, це тільки по-началу.
І так, погоджуся з fshp.
не чекайте, що ви вивчите вихідні, просто читаючи їх
Потрібно навчиться збирати цей проект. Потім навчитися вносити зміни (в свою пісочницю) з метою проведення експериментів. І тільки після впевненого освоєння практики вносять працюють правок до проекту, переходити до більш серйозних речей у ньому.
Взагалі сама ідея і бажання досконально розібратися в пристрої відомого відкритого проекту гідна похвали. У будь-якому випадку, ви отримаєте безцінний досвід. Навчіться терпимо ставитися до чужого коду, розуміти або передчувати хід думки інших людей. Може бути вам також доведеться "в авралі" вивчати чужий проект вже за завданням роботодавця. Хто знає, якщо ви досконально розберетеся в цьому проекті, може бути приєднаєтеся до команди Oracle і станете одним з провідних розробників? ;)
P / S
Не хочу кидати камінь у бік команди MySQL, але файл на 20K рядків коду це, імхо, ознака "smell code". Хоча хто я такий, щоб судити. ;)
Потрібно навчитися збирати цей проект.
Не не не. Ядро Лінукса правиться на ура, там структура дуже непогана. Граючи з девбордамі, я і драйвер rs323 рихтував, і драйвер дисплея, і ще багато чого в самому ядрі по косметиці. Це при тому, що в С я нуб нубом, та й гугл мовчав, де знайти потрібну і як запатчіть. Одного разу навіть software rs232 на рандомних gpio написав, епічність костиліще, але ніяк інакше з кривого плеєра логи було не дістати, і воно запрацювало навіть, хоч і з пекельним відсотком помилок.
Нічого вчити не треба, потрібна лише чітка мета - далі логічно все знаходиться. І чим довше копаєш з якоюсь метою, тим знання проекту ширше.
Ілля. можливо, у вас добре розвинена інтуїція, якщо ви швидко знаходите "де" і "що" потрібно правити.
Щодо "вчити не треба" - ну це дивлячись яку мету ви ставите: написати "на швидку руку" латочку або розібратися в проекті, щоб влитися в команду. Ну або просто just-for-fun, для загального розвитку, так би мовити. Відповідно, різні цілі - різні підходи.
Але в цілому, з вами згоден.