Matt's Opinion

Matthew Dillon dillon at apollo.backplane.com
Fri Jun 17 10:01:27 PDT 2005


:Matt I want to know your opinion on the "similarities, differences, and
:synergy, between Linux kernel and the BSDs" series of interviews from
:NewsForge.
:
:I will take the liberty to ask you the same questions, if there's no
:problem with you, and put your answers in my website SoloBSD.org and in
:the DFly Wiki too if the community thinks is OK.

    Ok, I'll have a go at it.

:Here we go: (There's no deadline to answer them Matt, take all the time
:you need. I don't want to interfer in your work time).
:
:1.- What are some of the similarities, differences, and synergy -- if any
:-- between the Linux kernel and the BSDs?

    The best way to think about the various open source projects is to
    consider ideas rather then actual code.  The very nature of open source
    is that individuals tend to want to write the code themselves.  Only
    wholely self-contained subsystems (which primarily means user
    applications such as ssh, apache, etc), which tend to be the most
    portable, are adopted wholesale.  Very little actual code sharing 
    occurs within the kernel itself with device drivers being the primary
    exception.

    Most of the sharing, and synergy, occurs at the conceptual level.
    Ideas are shared all the time.  Implementations are compared and even
    tested against each other.  For example, when Jeffrey Hsu implemented
    SACK in DragonFly we tested it against Linux and whatever other 
    implementations we could find out on the net.  So while no code
    was taken from those other implementations, their very existance
    greatly reduced the amount of time and effort it took for us to do our
    own.

:2.- The BSDs are still considered by some to be more technically correct
:than the Linux kernel. Linus Torvalds has said in the past that it's not
:all about technology. Do you think the BSD project you work on is better
:technically for some or all uses than GNU/Linux (in general)?

    I'm not sure its a valid comparison to consider technical merits as the
    sole measure of a project's success.  The developers working on the BSD
    projects have been established longer and tend to be older (one or two
    generations older, in fact).  Older more experienced programmers tend
    more towards technical correctness simply because they know that code
    longevity is in part based on how well the original program was 
    constructed.  Younger programmers tend to take more shortcuts and tend
    to produce less robust code.  It is simply a fact of life. 

    But this doesn't make the BSDs better, per say.   Longevity does not
    mean forever and perfect coding does not mean that the algorithm chosen
    is the best for the job.  One could say that the code being pushed
    into the Linux kernel is not sufficiently thought out, not sufficiently
    robust, and not well enough integrated to produce a smooth, long lasting,
    easily maintainable result.  At the same time one could also say that
    regardless of code perfection, the algorithms in the kernel that the
    BSDs are based on were never designed with modern computing in mind
    and the BSDs are suffering (relative to Linux) because of that.  The
    various BSD projects have chosen radically different approaches to 
    'fixing' these algorithms (with DragonFly and FreeBSD doing the most
    radical surgery on the core BSD algorithms).

    The social dynamics are also quite different.  Leadership plays a huge
    role in any project, but it is particularly important in a large
    open-source project with many contributors.  Really good programmers are 
    self-confident and somewhat egotistical by nature, and become more so as
    they age.  The job of managing a large number of class-A personalities
    is not for the weak of heart.  Linux is blessed with particularly strong
    leadership at the moment (that being Linus).  OpenBSD, NetBSD, and 
    DragonFly certainly have strong leadership.  FreeBSD has gone through
    a serious changing of the guard in recent years and I would have to say
    that leadership is somewhat lacking for them at the moment.

    The jist of this is that the 'taste' of a project is often a reflection
    of its leader.  Because it is virtually impossible to rate personalities
    on an absolute scale, it is also impossible to rate projects on an
    absolute scale.

    In fact, the qualities of a project will change radically when the
    leadership changes.  Take XFree vs XOrg.  Consider FreeBSD's changing
    of the guard.  Consider the fallout that has occured from changes of
    leadership in other major open source projects.  I would argue that the
    'name' of the project has very little to do with anything.

:3.- If the BSDs were technically better than GNU/Linux five years ago, has
:the playing field leveled since then?

    Everyone ages and the Linux developers have been aging along with the
    rest of us, so they are certainly better programmers now then
    they were before.  At the same time all projects gain new, younger
    developers.  This tends to create generational parity over time.  So
    as best I can answer the question I would say that the playing field
    has leveled with regards to technical ability, but I can't really
    say that that has actually translated to technically equivalent
    code in-kernel.  In my opinion, Linux still suffers from its pot-luck
    methodologies.

    I still believe that from a technical standpoint, the BSDes are coded
    better.  On the flip side, we are still stuck with basically one 
    filesystem (UFS derived) whereas as Linux has several (XFS, JFS, Reiser,
    EXT*, etc).  Of course, reliability of those filesystems is another
    matter.  Its taken Linux years to stabilize their filesystem work and
    I still hear complaints about them all the time from colleges who work
    with Linux.  Performance is not everything.
 
:4.- Is sharing between DragonFly/Free/Open/NetBSD and the Linux kernel a
:common occurrence? And if so, does it go both ways?

    Actual code sharing between the BSD projects and Linux is minimal.  
    There is a moderate amount of code sharing between the BSD projects
    themselves, especially userland applications and device drivers.  
    Algorithms, ideas, and bug fixes are shared more often then anything
    else.  For example, I had long discussions with a number of Linux
    developers working on the Linux VM system, explaining the BSD
    algorithms to them and why they were chosen, and many of those concepts
    have found their way into the Linux kernel.

:5.- Are there parts of Linux that you would like to see adopted in the
:DragonFly/Free/Open/NetBSD kernel?

    Not particularly.  Linux is a melting pot of ideas, and that is good
    in the sense that a lot of different ideas get tested.  We might adopt
    concepts and then write the algorithm from scratch, but nobody here
    is really interested in adopting the actual code, at least not within
    the kernel.

    Both Linux and the BSDes adopt ideas from external sources, quite 
    often the same source.  The TCP SACK protocol is an example of this.
    Same protocol, different implementations.  External sources, such as
    RFCs, POSIX, and other sources, are the primary glue that keep all
    the open source projects interoperable and differentiate them from
    proprietary systems.

					-Matt
					Matthew Dillon 
					<dillon at xxxxxxxxxxxxx>

:Thank you very much.
:
:---
:Guillermo García Rojas Covarrubias (LinuXo/RaD|Tz)
:http://SoloBSD.org






More information about the Users mailing list