What are the differences between the -next tree and the -mm tree?
Hi, I'm sorry to bother you to ask some questions about -next tree and -mm tree. I have read some documents about kernel trees, but I don't know the difference between the -next tree and -mm tree. In this post: http://lists.kernelnewbies.org/pipermail/kernelnewbies/2013-October/009145.h... It seems that the -mm tree has been substituted by the -next tree. Besides, I can't find -mm tree in anywhere. So, could you explain the difference between the two trees. Regards, HaoLee
Hello, I am not a kernel developer but I think I can answer this. This is how I understand it: Short version: -next is a very special Linux branch managed by Linus Torvalds that contains changes from all subsystem that are considered good candidate for the next release, but people want to see some more testing or "maturation". -mm is one of the many Linux subsysitems (Memory Management). Less short version: The -next tree is a branch of Linux managed by Linus Torvalds containing "experimental" or "not mature enough" changes. When Linus is convinced that a change is good, it will "graduate" it by merging that change into a Linux release candidate (-rc). The time a change sit in -next before graduating to -rc is variable and depends on the change itself; something obviusly correct will graduate fast, while some other change might need a long -next time or could even never graduate. The act of deciding what graduates and what doesn't take place in a point in time known as the "merge window". Better said, a given version of -rc has a well specified deadline for things to get into it; if a change doesn't graduate fast enough, it slips into the next window. So, after this illustration, you might thing of the possibility of some changes rotting in -next forever. Can you imagine after decades of kernel life what sort of mess this "limbo" branch could become? That's why periodically -next is "nuked" and rebuilt from all changes not yet graduated yet but are still worth of keeping around. That's the occasion to do some cleanup. This process of burning and rebuilding -next is mostly automated; one useful tool is "git rerere" [0][1] which let you record conflict fixes you did in past merges. This workflow is sometimes called "-next branch workflow" and is explained in the gitworkflows(7) man page [2]. I made a few pictures to explain it graphically in a post[3] of my blog. linux-mm, in the other hand, is a branch that contains all Memory Management (MM) related changes, as you can see in the MAINTAINERS file[4]. So, about the message you linked: "Most of the -mm tree is already in the linux-next tree" means that at that point in time, October 2013, -next included most of -mm. But the message doesn't say two "obvious" but important things: 1) the other inclusion is not true! -next wasn't equal to -mm, but surely much larger (think of all changes awaiting graduation from the other subsystems) 2) given the dynamic nature of -next, which is periodically destroyed and rebuilt, that statement only held only until the following -next rebuild (i.e. the beginning of the new development cycle). Please take what I say with a grain of salt, as I never participated to the kernel development and I am only an external observer. Consider what I write here as an explaination attempt, and I invite all people who know better to correct it. Cheers, Giovanni [0] https://git-scm.com/docs/git-rerere [1] https://git-scm.com/blog/2010/03/08/rerere.html [2] https://www.kernel.org/pub/software/scm/git/docs/gitworkflows.html [3] http://www.gghh.name/dibtp/2014/07/25/the-next-branch-workflow-and-criss-cro... [4] https://github.com/torvalds/linux/blob/master/MAINTAINERS#L6955
Hi Giovanni Thanks for these explanations! Just one correction below. Am 2015-12-08 11:56, schrieb Giovanni Gherdovich:
I am not a kernel developer but I think I can answer this.
This is how I understand it:
Short version:
-next is a very special Linux branch managed by Linus Torvalds
I think it is Stephen Rothwell that manages linux-next (look at the author of the tags here[0]). [0] http://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git
On Tue, Dec 8, 2015 at 12:44 PM, Silvan Jegen <me@sillymon.ch> wrote:
I think it is Stephen Rothwell that manages linux-next (look at the
author of the tags here[0]).
[0] http://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git
Right, thanks! On Tue, Dec 8, 2015 at 9:19 AM, Hao Lee <haolee.swjtu@gmail.com> wrote:
Hi,
I'm sorry to bother you to ask some questions about -next tree and -mm
tree.
I have read some documents about kernel trees, but I don't know the difference between the -next tree and -mm tree.
Me neither apparently: it turns out I am only spreading misinformation. I checked Wikipedia and the "Linux Kernel" page[0] says: "After the change of the development model with 2.6.x, developers continued to want what one might call an unstable kernel tree, one that changes as rapidly as new patches come in. Andrew Morton decided to repurpose his -mm tree from memory management to serve as the destination for all new and experimental code. In September 2007 Morton decided to stop maintaining this tree.[128] In February 2008, Stephen Rothwell created the linux-next tree to serve as a place where patches aimed to be merged during the next development cycle are gathered." More over there is also a Wikipedia entry for "mm tree"[1] "Among Linux kernel developers, the -mm tree refers to a version of the kernel source code maintained by Andrew Morton. [...] Historically, the -mm tree focused on new developments for the memory management part of the kernel (mm)." Sorry for the long and wrong reply I gave earlier. Cheers, Giovanni [0] https://en.wikipedia.org/wiki/Linux_kernel [1] https://en.wikipedia.org/wiki/Mm_tree
On Tue, Dec 08, 2015 at 02:37:23PM +0100, Giovanni Gherdovich wrote:
On Tue, Dec 8, 2015 at 12:44 PM, Silvan Jegen <me@sillymon.ch> wrote:
I think it is Stephen Rothwell that manages linux-next (look at the
author of the tags here[0]).
[0] http://git.kernel.org/cgit/linux/kernel/git/next/linux-next.git
Right, thanks!
Yes, Stephen Rothwell will manage linux-next and when Stephen is not available then someone might volunteer to take that responsibility. Like Mark Brown created linux-next for few days in last week. linux-next is usually used as the testing ground of almost all patches which will be sent to Linus. Almost all the merge conflicts, build failures are solved in linux-next before the patches are sent. regards sudip
Thanks for all of you. I have understood it. Just making a summary. In September 2007 Morton decided to stop maintaining the -mm tree. In February 2008, Stephen Rothwell created the linux-next tree.[1] The linux-next tree is a staging trees, where subsystem trees are collected for testing and review.[2] Linux-next tree holds code that will go into the mainline during the next merge window.[3] Stephen said, about 90% of the code that shows up in the mainline during the merge window was in linux-next prior to the opening of the window.[3] [1]:https://en.wikipedia.org/wiki/Linux_kernel [2]:http://www.linuxfoundation.org/content/how-participate-linux-community-0 [3]:https://lwn.net/Articles/608933/ Other materials: https://lwn.net/Articles/608917/ https://lwn.net/Articles/571980/ https://lwn.net/Articles/287155/ Regards, Hao Lee
participants (4)
-
Giovanni Gherdovich -
Hao Lee -
Silvan Jegen -
Sudip Mukherjee