<!--#include file="header.html" -->


<ul>
  <li><b>27 March 2006 -- Software Freedom Law Center representing BusyBox and uClibc</b>
    <p>One issue Erik Andersen wanted to resolve when handing off BusyBox
    maintainership to Rob Landley was license enforcement.  BusyBox and
    uClibc's existing license enforcement efforts (pro-bono representation
    by Erik's father's law firm, and the
    <a href=http://www.busybox.net/shame.html>Hall of Shame</a>), haven't
    scaled to match the popularity of the projects.  So we put our heads
    together and did the obvious thing: ask Pamela Jones of
    <a href="http://www.groklaw.net">Groklaw</a> for suggestions.  She
    referred us to the fine folks at softwarefreedom.org.</p>

    <p>As a result, we're pleased to announce that the
    <a href="http://www.softwarefreedom.org">Software Freedom Law Center</a>
    has agreed to represent BusyBox and uClibc.  We join a number of other
    free and open source software projects (such as
    <a href=http://lwn.net/Articles/141806/>X.org</a>,
    <a href="http://lwn.net/Articles/135413/">Wine</a>, and
    <a href=http://plone.org/foundation/newsitems/software-freedom-law-center-support/>Plone</a>
    in being represented by a fairly cool bunch of lawyers, which is not a
    phrase you get to use every day.</p>

  <li><b>22 March 2006 -- BusyBox 1.1.1</b>
    <p>The new maintainer is Rob Landley, and the new release is <a href="http://busybox.net/downloads/busybox-1.1.1.tar.bz2">BusyBox 1.1.1</a>.  Expect a "what's new" document in a few days.  (Also, Erik and I have have another announcement pending...)</p>
    <p>Update: Rather than put out an endless stream of 1.1.1.x releases,
    the various small fixes have been collected together into a
    <a href="http://busybox.net/downloads/busybox-1.1.1.fixes.patch">patch</a>,
    and new fixes will be appended to that as needed.  Expect 1.1.2 around
    June.</p>
  </li>
  <li><b>11 January 2006 -- 1.1.0 is out</b>
    <p>The new stable release is
    <a href="http://www.busybox.net/downloads/busybox-1.1.0.tar.bz2">BusyBox
    1.1.0</a>.  It has a number of improvements, including several new applets.
    (It also has <a href=http://www.busybox.net/lists/busybox/2006-January/017733.html>a few rough spots</a>,
    but we're trying out a "release early, release often" strategy to see how
    that works.  Expect 1.1.1 sometime in March.)</p>

  <li><b>31 October 2005 -- 1.1.0-pre1</b>
    <p>The development branch of busybox is stable enough for wider testing, so
    you can now 
    <a href="http://www.busybox.net/downloads/busybox-1.1.0-pre1.tar.bz2">download</a>,
    the first prerelease of 1.1.0.  This prerelease includes a lot of
    <a href="http://www.busybox.net/downloads/BusyBox.html">new
    functionality</a>: new applets, new features, and extensive rewrites of
    several existing applets.  This prerelease should be noticeably more
    <a href="http://www.opengroup.org/onlinepubs/009695399/">standards
    compliant</a> than earlier versions of busybox, although we're
    still working out the <a href="http://bugs.busybox.net">bugs</a>.</p>

  <li><b>16 August 2005 -- 1.01 is out</b>

    <p>A new stable release (<a href="http://www.busybox.net/downloads/busybox-1.01.tar.bz2">BusyBox
    1.01</a>) is now available for download, containing over a hundred
    <a href="http://www.busybox.net/lists/busybox/2005-August/015424.html">small
    fixes</a> that have cropped up since the 1.00 release.</p>

  <li><b>13 January 2005 -- Bug and Patch Tracking</b><p>

    Bug reports sometimes get lost when posted to the mailing list.  The
    developers of BusyBox are busy people, and have only so much they can keep
    in their brains at a time. In my case, I'm lucky if I can remember my own
    name, much less a bug report posted last week... To prevent your bug report
    from getting lost, if you find a bug in BusyBox, please use the 
    <a href="http://bugs.busybox.net/">shiny new Bug and Patch Tracking System</a>
    to post all the gory details.

    <p>

    The same applies to patches... Regardless of whether your patch
    is a bug fix or adds spiffy new features, please post your patch
    to the Bug and Patch Tracking System to make certain it is
    properly considered.


  <p>
  <li><b>13 October 2004 -- BusyBox 1.00 released</b><p>

    When you take a careful look at nearly every embedded Linux device or
    software distribution shipping today, you will find a copy of BusyBox.
    With countless routers, set top boxes, wireless access points, PDAs, and
    who knows what else, the future for Linux and BusyBox on embedded devices
    is looking very bright.

    <p>

    It is therefore with great satisfaction that I declare each and every
    device already shipping with BusyBox is now officially out of date.
    The highly anticipated release of BusyBox 1.00 has arrived!

    <p>

    Over three years in development, BusyBox 1.00 represents a tremendous
    improvement over the old 0.60.x stable series.  Now featuring a Linux
    KernelConf based configuration system (as used by the Linux kernel),
    Linux 2.6 kernel support, many many new applets, and the development
    work and testing of thousands of people from around the world.

    <p>

    If you are already using BusyBox, you are strongly encouraged to upgrade to
    BusyBox 1.00.  If you are considering developing an embedded Linux device
    or software distribution, you may wish to investigate if using BusyBox is
    right for your application.  If you need help getting started using
    BusyBox, if you wish to donate to help cover expenses, or if you find a bug
    and need help reporting it, you are invited to visit the <a
    href="FAQ.html">BusyBox FAQ</a>.

    <p>

    As usual you can <a href="downloads">download busybox here</a>.

    <p>Have Fun!

    <p>
    <li><b>Old News</b><p>
    <a href="/oldnews.html">Click here to read older news</a>


</ul>

<!--#include file="footer.html" -->

