Differences between BSD and Linux
1) BSD license allows users/companies to modify a program’s source code and not to release changes to the public. In other words, BSD licenses allow commercial use and incorporation of a code into proprietary commercial products. This is how Microsoft incorporated BSD networking into their products and how Mac OS X earns money through muscles of FreeBSD.
Linux uses GPL license for most of the time (applications in Linux can also have a BSD license - or any license; it is up to developers how they decide). With a GPL-licensed program anybody can change the source code, but he or she MUST share it with the Open Source community to make sure that everybody will benefit from such a change.
2) BSD has the so-called “core system” (without packages). The core system consists of basic utilities (like ssh, fdisk, various commands like chmod or sysctl, manual pages, etc.) and anything beyond this is strictly seen as an add-on. Linux (not only the kernel, of course) is usually packaged as the whole system where this difference is not seen.
3) On BSD systems, all add-on packages are strictly installed into the /usr/local directory: documents to user/local/share/docs/application_name; themes and other things to /usr/local/share/application_name; binaries to /usr/local/bin/application_name. By application_name we mean a program’s name, so if you install IceWM, for example, its binary will be here: /usr/local/bin/icewm. With Linux, on the other hand, all applications get mostly installed into the /usr/bin directory.
4) BSD systems use the system of “ports”, which are fingerprints of applications in the /usr/ports directory, where a user may “cd” and execute a make command, which will download, via a directive contained in such a fingerprint’s code, the application’s source and the system will compile it as well. “Ports” are actually add-on packages for BSD systems and they are also packaged in packages repository of a concrete BSD system. They can be installed as binaries, too, with use of the “pkg_add” either directly from the Internet or locally. But “ports” have that advantage that if an author of any package makes a new version, a user can immediately get its newest/updated version. Packages released for a particular BSD version (like OpenBSD 4.1) are not updated and users have to wait for a new BSD release (like OpenBSD 4.2).
5) BSD systems have also their stable version. With FreeBSD, for example, you have a FreeBSD-Release (a version that can be used normally), FreeBSD-Stable (system more profoundly audited for bugs and security holes), and a development version - Current, which is not stable and not recommended for a regular use. Some Linux distributions started to imitate this philosophy, but with BSD systems this way of making distributions has become a rule.
6) Of course, the kernel is absolutely different.
7) BSD has FFS file system; it is the only file system on BSD’s contrary to Linux, where you can use dozens of file systems like ext2, ext3, ReiserFS, XFS, etc.