Linux — это программное обеспечение с открытым исходным кодом, и каждый может вносить в него изменения. Если вы хотите внести свои собственные изменения в официальную версию Linux, вы должны отправить их в список рассылки Linux Kernel , и в этом случае программный код будет проходить через Торвальдса или его доверенных лиц. Изменение должно быть подписано его автором ( Signed -off-by ) и должно быть представлено для просмотра заинтересованным лицам, чье одобрение требуется для перехода изменения к ядру. В модели разработки ядра администраторы подсистем, действующие как «привратники», отправляют изменения Торвальдсу для включения в ядро основной серии.
Инструкции по процессу разработки следуют вместе с исходными кодами ядра и содержат ряд примеров хороших и плохих методов разработки.
Процесс разработки системных программ обсуждается в эссе Эрика С. Рэймонда The Cathedral and the Bazaar , где он используется как пример «базарной модели» (в отличие от «соборной модели», как при разработке GNU Emacs ). Процесс разработки был описан как постоянная модель разработки , которая также используется в нескольких других (в основном с открытым исходным кодом) программных проектах.
Во время разработки ядра версии 2.6 Торвальдс и Эндрю Мортон объединяли изменения ядра по 10 МБ в месяц. Версия 4.11 включала 12 546 наборов изменений, а ядро увеличилось почти на 300 000 строк программного кода. В течение 2011–2012 годов (версии ядра 3.1.0–3.5.0) ежедневно добавлялось 10 600 новых строк, удалялось 8 100 строк и изменялось 2 250 строк. Было 6,03 смены в час.
Летом 2015 года версия ядра 4.1 содержала более 19,5 миллионов строк исходного кода. Были сделаны различные оценки стоимости переработки ядра Linux: по состоянию на март 2011 года она оценивалась в 3 миллиарда долларов США и продолжает расти. Согласно отчету, опубликованному Linux Foundation , в разработке приняли участие более 13 500 разработчиков из более чем 1300 компаний. На размер ядра влияют все поддерживаемые им архитектуры и аппаратное обеспечение: по словам Грега Кроа-Хартмана , средний ноутбук использует около 2 миллионов строк кода из 5000 файлов для правильной работы.
Ядро в основном реализовано на языке Си. По словам Торвальдса, сложные проблемы при разработке ядра нельзя решить, изменив язык программирования. Самые большие проблемы, как правило, связаны с аппаратной поддержкой, такой как драйверы устройств и различия между платформами. Некоторые люди и проекты работали над поддержкой модулей, реализованных на C++ , включая добавление библиотеки времени выполнения, обработку исключений и механизм типов RTTI , а также изменения в обработке стека. Существуют проблемы с использованием C++ в ядре операционной системы, которых рекомендуется избегать.
Для тестирования ядра используется несколько специально разработанных программ. Ядро часто тестируется разными способами с точки зрения разных целей, таких как тестирование разработчиков, интеграционное тестирование, регрессионное тестирование и стресс-тестирование. Фреймворк KUnit был разработан для модульного тестирования ядра