Topic: one large src tree?

Can someone dumb this down for me? This is compared to linux. So is he saying Linux has multiple src trees? if so...why would they do that, I mean whats the purpose of that? I am confused...

"NetBSD is built from one large source tree and maintains a single, unified distribution. One can build everything (including toolchain) all the way to releasable installation media from a single command using nothing but a POSIX compatible shell. A unified distribution and comprehensive build system also saves developers from having to keep up with multiple separate open source projects each with different ways of doing things spread across the internet. A single talented developer is typically more effectively utilitized in this arrangement, and is part of the reason NetBSD can do with a few hundred developers what Linux does with tens of thousands. The differences in each OS' development criteria is apparent even at startup in the kernel dmesg. Compare Linux's ad-hoc dmesg with NetBSD's more structured dmesg booting from the same hardware"

For example, Linux had at least two completely independent USB stacks before Linus Torvalds rejected them both and wrote a third one from scratch, after he found both existent Linux  stacks unsatisfactory.  (When pressed for an explanation as to why he selected the API he did, Torvalds stated: "because I wanted to."

Re: one large src tree?

The NetBSD OS is comprised of a single source tree, /usr/src.  Everything needed to build the OS is in there.  Everything.  The compiler toolchain, the kernel, the userland tools, the bootloader, everything.

There is no single Linux OS.  There is no single Linux OS source tree.  A Linux OS is made up of the Linux kernel, plus the GCC compiler toolchain, plus a bootloader, plus an init system, plus a bunch of userland tools, plus a bunch of config tools, plus a man page system, plus a package management system, and so on.  Each of those are separate projects, with separate developers, with separate source trees, and separate release schedules.  To make a Linux OS, you have to gather together dozens or even hundreds of different packages from different projects, work out all the versions and dependencies, and then make them work together.  And then one of the projects releases a new version and you have to start the whole process over again.

Each method has its advantages and its weaknesses.  The nice thing about the BSD method is that you get a single, cohesive, whole where everything is designed to work together.  The bad thing is that it might take longer to get a new release or a new feature as the entire OS needs to be updated.  The nice thing about the Linux method is that you can upgrade each little piece of the OS as needed to get new features.  The bad thing is that upgrading even a simple little thing as the ls tool can cause a chain-reaction that leads to updating just about the entire OS, and dependency-hell becomes the norm instead of the exception.

Re: one large src tree?

phoenix wrote:

The NetBSD OS is comprised of a single source tree, /usr/src.  Everything needed to build the OS is in there.  Everything.  The compiler toolchain, the kernel, the userland tools, the bootloader, everything.

There is no single Linux OS.  There is no single Linux OS source tree.  A Linux OS is made up of the Linux kernel, plus the GCC compiler toolchain, plus a bootloader, plus an init system, plus a bunch of userland tools, plus a bunch of config tools, plus a man page system, plus a package management system, and so on.  Each of those are separate projects, with separate developers, with separate source trees, and separate release schedules.  To make a Linux OS, you have to gather together dozens or even hundreds of different packages from different projects, work out all the versions and dependencies, and then make them work together.  And then one of the projects releases a new version and you have to start the whole process over again.

Each method has its advantages and its weaknesses.  The nice thing about the BSD method is that you get a single, cohesive, whole where everything is designed to work together.  The bad thing is that it might take longer to get a new release or a new feature as the entire OS needs to be updated.  The nice thing about the Linux method is that you can upgrade each little piece of the OS as needed to get new features.  The bad thing is that upgrading even a simple little thing as the ls tool can cause a chain-reaction that leads to updating just about the entire OS, and dependency-hell becomes the norm instead of the exception.

Ah thanks phoniex, so he was basically talking about how BSD is complete vs. how Linux is just the kernel and it needs a lot of outside source to be a complete OS, where BSD is all under 1 roof.

For example, Linux had at least two completely independent USB stacks before Linus Torvalds rejected them both and wrote a third one from scratch, after he found both existent Linux  stacks unsatisfactory.  (When pressed for an explanation as to why he selected the API he did, Torvalds stated: "because I wanted to."