Github Can Never Support Kernel Development
Summary
TLDRThe video script discusses the Linux Kernel's GitHub mirror and its divergence from the typical GitHub workflow. It explores the Linux community's preference for traditional tools like mailing lists and bug trackers over modern developer tooling. The script highlights the kernel's unique scaling method, which, despite appearing as a monolithic repository, is actually a mono tree with multiple repositories. It concludes with a feature request for GitHub to support cross-repository pull requests and issue tracking, which could benefit large projects like the Linux Kernel.
Takeaways
- ๐ The Linux Kernel has a GitHub mirror, but it's just a mirror due to Linus Torvalds' dislike of certain aspects of the GitHub community.
- ๐ค The Linux Kernel community prefers using git directly, a mailing list, and an external bug tracker instead of GitHub's integrated tools.
- ๐ A blog post from 2017 explains why the Linux Kernel community doesn't use GitHub to host their development, citing maintainability and scaling issues.
- ๐ฅ The Linux Kernel's development model differs significantly from most projects, which can be confusing for developers accustomed to platforms like GitHub or GitLab.
- ๐ง GitHub's tooling doesn't support the Linux Kernel's scale, which involves a large number of contributors and complex subsystems.
- ๐ The Linux Kernel uses a unique approach where subsystems and drivers often have their own repositories and mailing lists, separate from the main kernel development.
- ๐ The 'Linux-next' integration tree is used to merge contributions from various subsystem repositories into a coherent whole.
- ๐ The Linux Kernel's structure is described as a 'mono tree with multiple repositories' rather than a traditional monorepo.
- ๐ก The video suggests a feature request for GitHub to better support projects like the Linux Kernel with cross-repository pull requests and issue tracking.
- ๐ The Linux Kernel's development process is well-suited to its needs, but the video ponders how GitHub could adapt to support such workflows more effectively.
Q & A
Why does the Linux Kernel have a GitHub mirror if Linus Torvalds dislikes GitHub?
-The Linux Kernel has a GitHub mirror for convenience and accessibility, allowing developers to easily pull from the repository. Despite Linus Torvalds' dislike for certain aspects of GitHub's community and tooling, the mirror serves as a practical bridge for those who prefer or are accustomed to using GitHub.
What are Linus Torvalds' main concerns about the GitHub community?
-Linus Torvalds has expressed concerns about the GitHub community's interaction style, including the lack of respect for commit messages and their proper use, as well as the way people use Git on the platform.
Why does the Linux Kernel not use modern developer tooling like GitHub for all its processes?
-The Linux Kernel does not use GitHub for all its processes because GitHub's tooling does not support the way the Kernel scales to a large number of contributors. The Kernel's development model involves a complex system of mailing lists, external bug trackers, and a unique approach to managing contributions that GitHub's UI and workflow do not accommodate effectively.
What is the significance of the 'Linux Next' integration tree in the Kernel's development?
-The 'Linux Next' integration tree is significant as it allows for the merging of patches from hundreds of different repositories, enabling a coherent integration of contributions into a stable release. This facilitates the complex, distributed nature of Kernel development across numerous subsystems and maintainers.
How does the Linux Kernel manage to be a 'mono tree with multiple repositories' instead of a traditional monorepo?
-The Linux Kernel achieves a 'mono tree with multiple repositories' by using a shared file hierarchy as the namespace across all development, while maintaining separate repositories for different pieces and concerns. This structure allows for decentralized development while keeping the overall project coherent.
What is the role of the 'maintainers file' and 'get maintainers.pl' script in the Linux Kernel development?
-The 'maintainers file' and 'get maintainers.pl' script play a crucial role in managing the Linux Kernel development by identifying the responsible maintainers for specific code snippets, directing where to submit patches, and indicating the appropriate mailing list and bug reporting channels.
Why might the Linux Kernel's development model not be suitable for every project?
-The Linux Kernel's development model might not be suitable for every project due to its complexity and the need for a highly coordinated and experienced group of contributors. It requires a significant investment in infrastructure and processes that may not be necessary or beneficial for smaller or less complex projects.
What are the challenges faced by the Linux Kernel when considering a move to a platform like GitHub for development?
-The Linux Kernel faces challenges such as the need for a unified discussion across multiple repositories, the ability to reassign discussions and issues easily between subprojects, and the management of a large number of contributors with varying levels of access and responsibility. GitHub's current tooling does not support these requirements out of the box.
What feature request does the script suggest for GitHub to better support projects like the Linux Kernel?
-The script suggests that GitHub should support pull requests and issue tracking that span different repositories, allowing for a more flexible and powerful way to manage large, complex projects with multiple repositories and contributors.
How does the Linux Kernel's approach to development differ from the typical GitHub workflow?
-The Linux Kernel's approach differs from the typical GitHub workflow by using a decentralized model with multiple repositories and a strong emphasis on mailing lists and external bug trackers. It avoids the GitHub-centric model of forking, branching, and pull requests, opting instead for a more traditional and coordinated method of development.
Outlines
This section is available to paid users only. Please upgrade to access this part.
Upgrade NowMindmap
This section is available to paid users only. Please upgrade to access this part.
Upgrade NowKeywords
This section is available to paid users only. Please upgrade to access this part.
Upgrade NowHighlights
This section is available to paid users only. Please upgrade to access this part.
Upgrade NowTranscripts
This section is available to paid users only. Please upgrade to access this part.
Upgrade NowBrowse More Related Video
5.0 / 5 (0 votes)