I saw this interesting interview with Dru over at Distrowatch. I go back and forth on the BSD and Linux licenses, which influences which OS I like. Some days I prefer the more free BSD license and other days I see the advantages of the more restrictive Linux license.
DWR: What is your opinion on the differences between the BSD license and the GPL, and how it works for how BSD does things? Why would a developer choose a license which allows a commercial entity to use their code and make money from it without giving anything back (i.e. OS X)?
DL: For the differences, let's look at the strategic reasons why a company or organization would choose one license over another.
An academic license (such as the BSD, MIT, or Apache license) is a good choice for new technologies and standards looking for a broad base of adoption. In such cases, the underlying goal is to make a well-vetted, common base upon which any organization can extend, add features to, and thereby differentiate themselves in the marketplace. This makes good business sense for many reasons: collaborative effort allows the technology/standard to mature quickly, each organization saves effort and resources as they don't have to reinvent the core, organizations can differentiate themselves by concentrating on niche markets, and consumers benefit from a wider range of choice. TCP/IP, Apache, OpenSSH, and BIND are classic examples of technologies that benefited from this type of licensing.
A license with strong copy-left, such as the GPL, is a smart choice for a large, well established company looking to dominate a market technology. The combination of using their brand to promote the open source product, being able to afford the resources required to maintain a new (or steer an existing) open source project, and being able to make up for missing software sales revenue by providing support, can effectively remove competing closed-source alternatives. It is very hard for any company to compete with "free" and even harder to remain in business if the open-source application competes with their core revenue stream.
When it comes to an individual developer, it is often a matter of personal philosophy. Many developers are happy to see their code used as widely as possible and think it's pretty neat to know that their code is being used in ways they never thought of or would never have had the time to implement themselves. And there are many developers who wish to defend the four freedoms defined by the free software philosophy. It really is a matter of personal choice.
DWR: Going back to the basics, it'd be interesting to know why one might choose a BSD operating system over a Linux distro, and vice versa. What is/are the core function(s) of BSD, and what sets it apart from Linux (other than the different licensing schemes)?
DL: This really depends upon what the user expects to see in a distro. Brand new users (who don't know what to expect) might not even be able to tell the difference between a Linux and a BSD system that are running the same window manager. If you have been using a particular system for a while, it can be frustrating to find that the tools you like to use are either missing or in a different location -- but this can happen whether you go between Linux distros or between a Linux and a BSD system. When it comes to features and hardware support, BSD and Linux are pretty much on par, with some differences. Obviously, if a specific feature or piece of hardware that you have to have is not supported, that will determine which system/distro you should use. Other than that, any distro/system that meets your needs is a good choice.
The clincher for me is the difference in the development process, and I say that as a non-developer. How a product is created behind the scenes affects its usability for end-users. There is much to be said for having a sound release engineering process, a searchable code repository and commit messages going back to the day the project started, build farms for an integrated kernel and userland that reduce the likelihood of library incompatibilities, and security and documentation teams. If you're interested in learning more about the "BSD way of doing things", check out these resources:
BSD for Linux Users
The NetBSD Way
How the FreeBSD Project Works
DWR: What are some of the philosophical differences between the BSD kernel and Linux kernel coders? And can things like drivers be shared between the two camps?
DL: Philosophy varies a bit by BSD project, with each project stating their goals:
One of the differences I see between the Linux kernel and the BSD projects is that BSD provides excellent mentorship opportunities designed to assist coders in obtaining a "commit bit" (the right to modify a portion of the code repository). Rather than being limited to submitting patches, a developer can work under a more senior developer in the same area of code interest who already has a commit bit. That developer can vet their code, discuss design ideas, make sure the code matches style guidelines, and most importantly, won't break anyone else's code when it is committed. Once the mentor is pleased with the coder's progress, they can recommend them for a commit bit. In addition to the Style Guide, or man(9) on any BSD system, the projects also provide resources to assist new developers:
FreeBSD Developers Handbook
NetBSD Developer Documentation
As for sharing drivers (or other code), there are major design and philosophical differences between the Linux and BSD kernels. The source for both is freely available and developers often read other developers' code to see how they implemented a design. Because of the nature of the BSD license, Linux coders are free to reuse BSD code as long as they meet the BSD license's copyright notice and disclaimer requirements. BSD coders tend to rewrite code as there is a preference for BSD licensed code that meets the BSD style guidelines.
DWR: Could you please compare and contrast BSD Ports and Linux package management?
DL: Linux package management varies by distro, so I'll explain how package management is handled on BSD systems.
FreeBSD and OpenBSD use ports and packages. The ports system provides Makefiles, allowing you to pass make targets and compile your own software. The packages system provides pre-compiled binaries, allowing you to quickly install software from the command line. Both use the same package management database, meaning you can use the pkg_info command to see what software is installed, regardless of how it was installed.
All of the BSDs support pkgsrc, which was originally developed by the NetBSD project. pkgsrc supports both compile-your-own and installing pre-compiled software using command-line tools. It is an excellent choice in heterogeneous environments as the same tools can be used to manage software on differing operating systems -- i.e. pkgsrc also runs on Linux, Mac OS X, Solaris, and most other UNIX-like operating systems.
It should be noted that while ports, packages, and pkgsrc are all well-documented and easy-to-use (once you know how), they are all command-line based.
PC-BSD supports all of the above, plus its own PBI (push button installer) technology that provides a GUI software manager that allows even novice users to safely and easily install, uninstall, and upgrade applications. Advanced users are provided with a Ports Jail console where they can safely compile ports or add packages without affecting the software installed with the operating system.
DWR: I would appreciate hearing your insight into the Oracle/Google lawsuit, Java and patent issues. I would also love to hear about your perspective on some of the new upstart BSD distros that include installers and GNOME/KDE (PC-BSD, GhostBSD, GNOBSD).
DL: It will be interesting to see where that lawsuit goes and if any open source "grass" is affected by the "elephants" fighting. I think that a lot of people are distressed to see all of the work, money, and due diligence that Sun put into its open source efforts being systematically re-closed again by Oracle. FreeBSD has an opportunity to gain former ZFS users who are concerned about CDDL and GPL incompatibility. PostgreSQL has an opportunity to gain former MySQL users. It will be interesting to see what the landscape will look like in five years.
It took a while, but there's been a shift in the BSD mindset to go beyond servers designed for system administrators to desktops designed for users. BSD desktops are starting to catch up, with PC-BSD currently being the most mature of the desktop projects. There are still some design obstacles to overcome (e.g. more laptop wireless drivers, more drivers and GUI interfaces for webcams, etc.) and strides are being made -- for example, the new USB and wireless subsystems for FreeBSD. Once BSD catches up, I think BSD desktop users will have a serious advantage over Linux desktop users due to the solid design principles used by the underlying BSD (server) technologies.
DWR: I would love to try a BSD distro, and I like the look of PC-BSD, but I don't want to download the large DVD image. Are there plans for a live CD edition any time soon? Perhaps one with Xfce or LXDE instead of KDE?
DL: Not that I'm aware of. Of course, if you're volunteering... Seriously, if you're interested in taking on this challenge let us know and if you need any help getting started we can point you at some resources and/or people who have done this sort of thing before. There currently are a few alternatives to downloading the DVD image. One is to use the boot-only CD or Flash image. The initial download is much smaller, but you will still need an Internet connection during the install to grab the needed components. We also give out thousands of DVDs every year at open source conferences. The main page of the PC-BSD website lists our upcoming events. If there's an event near you, visit the BSD booth to get a free DVD and get your questions answered.
DWR: It is already possible to install ZFS from the GUI installer of PC-BSD. In fact I was able to establish a functioning mirrored "rootpool" using the installer with a minimum of fuss. The problem is that there is no default (suggested) file system layout that is specifically tailored to zpools (like there is in OpenSolaris) and you have to create your own, unlike the default (or suggested) UFS layout provided by the PC-BSD installer. This puts a premium on user knowledge. So I was wondering if future installers will have an even more "user-friendly" approach to ZFS installation, where ideal partition layouts are recommended by the installer?
DL: That is a good idea, we'll look into it.
DWR: Will there be any attempt to improve on the power and flexibility of the BTX bootloader that PC-BSD uses? Is it even conceivable that PC-BSD might incorporate GRUB 2? Right now it is supposed to be possible to install GRUB on PC-BSD, but I think people have had a lot trouble doing this, with GRUB 2 at any rate.
DL: To assist users with the current versions of PC-BSD, we've recently updated the GRUB section of the PC-BSD Users Handbook. Please let us know if it does not work for you or if you have additional information to add to make this section easier for new users.
As for future versions of PC-BSD, we're looking into it. We didn't use GRUB originally as version 2 was just starting to replace the legacy version. We've also considered GAG, but it doesn't have an auto-detect feature and still requires Linux users to use GRUB or LILO.
DWR: I've tried to install PC-BSD, but if it's not video issues on my new machine it's boot issues on the old one. What can a relative computer Luddite like myself (who'll try something but probably never dig that deep into getting it to work) do to encourage better hardware compatibility on future releases?
DL: Video issues should be the same on Linux or PC-BSD as both use the drivers and configurations supported by X.Org. And, like Linux, PC-BSD also provides native NVIDIA drivers. When in doubt, booting PC-BSD in live mode is an excellent way to test that all of your hardware works before committing to an install.
Should a piece of hardware seem not to work, Google its name with the word FreeBSD e.g. "FreeBSD GeForce 8600 GT". You should be able to quickly find out if it's a known issue, if anyone is working on fixing it, or if a fix has been made available. If hardware support is indeed missing, you can submit a feature request on the PC-BSD Forums. Doing so helps the PC-BSD developers to prioritize which drivers are needed by users.
DWR: I have been using PC-BSD and plain FreeBSD (with KDE) for quite a while. With FreeBSD you have the option of using it in "rolling-release style" by upgrading your ports on a regular basis. But you can restrict your port upgrades and just upgrade those ports that have security vulnerabilities if you like. Just run portaudit and it will tell you what needs upgrading. Now, as you know, PC-BSD is not a rolling release (unless you use the ports system with it and want to constantly upgrade). But I have noticed that the number of "system updates" in PC-BSD are very few and far between. They seem even fewer then just the security patches provided by FreeBSD (i.e. the portupgrades applied only to the vulnerable ports). So my question is, in light of these fewer system updates, is PC-BSD more insecure then FreeBSD? (I am assuming that one is not using the ports system with PC-BSD.) I realize that a lot of the vulnerabilities that portaudit reports are only relevant if you are using a server, but this is not universally true, and I can't shake the feeling that PC-BSD is significantly behind the curve when it comes to providing package updates that eliminate security problems. If PC-BSD has a flaw relative to FreeBSD (or most Linux distros) this might be it.
DL: This is a good point and I'll look at several aspects of it.
The PBI buildserver is designed in such a way that when the underlying FreeBSD package is updated, the PBI is also updated. This means that any software installed via PBI will be as up-to-date as the FreeBSD package and that Update Manager will notify the user when an updated PBI is available. And, as you've noticed, Update Manager also provides updates for FreeBSD (operating system) security advisories and some PC-BSD specific updates such as the NVIDIA driver.
The interesting part is how to/should you keep the applications that were installed with the operating system up-to-date. Since PC-BSD specific stuff is separated into the /PCBSD and /Programs directories, an advanced user wishing to do so can continue to use their usual portaudit or portupgrade routine on a PC-BSD system. But what about non-advanced users? One approach is to consider the following: i) the average PC-BSD user is not running any server applications and is protected by a firewall that by default disallows incoming connections; ii) a new version of PC-BSD is released about every six months. This is different from a server environment that accepts incoming connections and that usually has a longer upgrade path (e.g. usually doesn't upgrade as soon as a new version is available). Is it a numbers game? How many vulnerabilities arise in a six-month period and are those vulnerabilities a big deal on a desktop system that is protected by a firewall? Good question....
DW: Is there anything else you'd like to add about the PC-BSD project or BSD in general?
DL: There are many people in the PC-BSD project who work hard to create and support a desktop system that is useful to both advanced and new users. User feedback and assistance is always appreciated. You can join us on the forums, #pcbsd on IRC freenode, and keep up with what's happening on the blog. If you get a chance to attend a conference with a BSD booth or a PC-BSD presentation, please drop by and say hi!
DW: Dru, thank you for taking time out of your busy schedule to talk with us.