So you want to contribute something to FreeBSD? That's great!
We can always use the help, and FreeBSD is one of those systems
that relies on the contributions of its user base in order
to survive. Your contributions are not only appreciated, they're
vital to FreeBSD's continued growth!
Contrary to what some people might also have you believe, you don't
need to be a hot-shot programmer or a close personal friend of the
FreeBSD core team in order to have your contributions accepted. The
FreeBSD Project's development is done by a large and growing number of
international contributors who's ages and areas of technical expertise
vary greatly, and there is always more work to be done than there are
people available to do it.
Since the FreeBSD project is responsible for an entire operating
system environment (and its installation) rather than just a kernel or
a few scattered utilities, our "TODO" list also spans a very wide
range of tasks, from documentation, beta testing and presentation to
highly specialized types of kernel development. No matter what your
skill level, there's almost certainly something you can do to help the
project!
Commmercial entities engaged in FreeBSD-related enterprises are
also encouraged to contact us. Need a special extention to make your
product work? You'll find us receptive to your requests, given that
they aren't too outlandish. Working on a value-added product? Please
let us know! We may be able to work cooperatively on some aspect of
it. The free software world is challenging a lot of existing
assumptions about how software is developed, sold, and maintained
throughout its life cycle, and we urge you to at least give it a
second look.
What's needed
The following list of tasks and sub-projects represents something
of an amalgam of the various core team TODO lists and user requests
we've collected over the last couple of months. Where possible, tasks
have been ranked by degree of urgency. If you're interested in
working on one of the tasks you see here, send mail to the coordinator
listed by clicking on their names. If no coordinator has been
appointed, maybe you'd like to volunteer?
Urgently needed
The following tasks are considered to be urgent, usually because
they represent something that is badly broken:
Fix the DOS file system. Coordinator: .
Fix the union file system. Coordinator: Not urgently needed
The following tasks need to be done, but not with any particular
urgency:
Put something here.
Would be nice to have
The following tasks are purely cosmetic or represent such an
investment or work that it's not likely that anyone will get them done
anytime soon:
Put something here too.
How to contribute
Contributions to the system generally fall into one or more of
the following 6 categories:
Bug reports and general commentary
If you have a bug to report or a suggestion to make:
An idea or suggestion of general technical interest should be
mailed to .
Likewise, people with an interest
in such things (and a tolerance for a high
volume of mail!) may
subscribe to the hackers mailing list by sending mail to
.
See
for more information about this and other mailing lists.
An actual bug report should be filed by using the
send-pr(1) program. This will prompt
you for various fields to fill in. Simply go to the fields
surrounded by <>'s and fill in your own
information in place of
what's suggested there. You should receive confirmation of your
bug report and a tracking number. Keep this tracking number and use
it in any subsequent correspondence.
If you do not receive confirmation in a timely fashion (3 days to
a week, depending on your email connection) or are, for some
reason, unable to use the send-pr(1) command,
then you may also file a bug report by sending mail to
.
Changes to the documentation
Changes to the documentation are overseen by the FreeBSD Documentation
Project, which can be reached at . This does not generally include
changes to manual pages, which should be considered under the category
of "changes to existing source code."
Changes to existing source code
An addition or change to the existing source code is a somewhat trickier
affair and depends a lot on how far out of date you are with the current
state of the core FreeBSD development. There is a special on-going release
of FreeBSD known as ``FreeBSD-current'' which is made available in
a variety of ways for the convenience of developers working
actively on the system. See for more information about getting and using
FreeBSD-current.
Working from older sources unfortunately means that your changes may
sometimes be too obsolete or too divergent for easy re-integration into
FreeBSD. Chances of this can be minimized somewhat by subscribing to the
<announce@freebsd.org> and
<current@freebsd.org> mailing lists, where discussions
on the current state of the system take place.
Assuming that you can manage to secure fairly up-to-date sources to base
your changes on, the next step is to produce a set of diffs to send to the
FreeBSD maintainers. This is done with the diff(1) command,
with the `context diff' form being preferred. For example:
diff -c oldfile newfile
or
diff -c -r olddir newdir
would generate such a set of context diffs for the given source file
or directory hierarchy. See the man page for diff(1) for more
details.
Once you have a set of diffs (which you may test with the
patch(1) command), you should bundle them up in an
email message and send it, along with a brief description of
what the diffs are for, to
. Someone will very
likely get back in touch with you in 24 hours or less,
assuming of course that your diffs are interesting! :-)
If your changes don't express themselves well as diffs alone
(e.g. you've perhaps added, deleted or renamed files as well)
then you may be better off bundling any new files, diffs and
instructions for deleting/renaming others into a tar
file and running the uuencode(1) program on it before
sending the output of that to .
See the man pages on tar(1) and uuencode(1) for more
information on bundling files this way.
If your change is of a potentially sensitive nature, e.g.
you're unsure of copyright issues governing its further distribution
or you're simply not ready to release it without a tighter review first,
then you should send it to rather than
<hackers@freebsd.org>. The core mailing list
reaches a much smaller group of people who do much of the
day-to-day work on FreeBSD. Note that this group is also
very busy and so you should only send mail to them
in cases where mailing to hackers is truly impractical.
Contributions of new code
In the case of a significant contribution of a large body
work, or the addition of an important new feature to FreeBSD,
it becomes almost always necessary to either send changes as
uuencoded tar files or upload them to our ftp site .
When working with large amounts of code, the touchy subject of
copyrights also invariably comes up. Acceptable copyrights
for code included in FreeBSD are:
The BSD copyright. This copyright is most preferred
due to its ``no strings attached'' nature and general
attractiveness to commercial enterprises. Far from
discouraging such commercial use, the FreeBSD Project
actively encourages such participation by commercial interests
who might eventually be inclined to invest something of their own
into FreeBSD.
The GNU Public License, or ``GPL''. This license isn't quite
as popular with us due to the amount of extra effort demanded
of anyone using the code for commercial purposes, but given
the sheer quantity of GPL'd code we currently require (compiler,
assembler, text formatter, etc) it would be silly to refuse
additional contributions under this license. Code under the GPL
also goes into a different part of the tree, that being
/sys/gnu or /usr/src/gnu, and is therefore
easily identifiable to anyone for whom the GPL presents a problem.
Contributions coming under any other type of copyright must be
carefully reviewed before their inclusion into FreeBSD will
be considered. Contributions for which particularly restrictive
commercial copyrights apply are generally rejected, though the
authors are always encouraged to make such changes available
through their own channels.
To place a ``BSD-style'' copyright on your work, include the following
text at the very beginning of every source code file you wish
to protect, replacing the text between the `%%' with
the appropriate information.
Copyright (c) %%proper_years_here%%
%%your_name_here%%, %%your_state%% %%your_zip%%. All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
notice, this list of conditions and the following disclaimer as
the first lines of this file unmodified.
2. Redistributions in binary form must reproduce the above copyright
notice, this list of conditions and the following disclaimer in the
documentation and/or other materials provided with the distribution.
3. All advertising materials mentioning features or use of this software
must display the following acknowledgment:
This product includes software developed by %%your_name_here%%.
4. The name of the author may not be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY %%your_name_here%% ``AS IS'' AND ANY EXPRESS OR
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
IN NO EVENT SHALL %%your_name_here%% BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
$Id: submitters.sgml,v 1.10 1995/12/10 09:09:49 jkh Exp $
For your convenience, a copy of this text can be found in
/usr/share/examples/etc/bsd-style-copyright.
&porting;
Contributions of money, hardware or Internet access
We're always very happy to accept donations to further the cause of
the FreeBSD Project and, in a volunteer effort like ours, a little can go
a long way! Donations of hardware are also very important to expanding
our list of supported peripherals since we generally lack the funds to
buy such items ourselves.
Donating funds
While the FreeBSD Project is not a 501(C3) (non-profit) corporation and
hence cannot offer special tax incentives for any donations made, any such
donations will be gratefully accepted on behalf of the project by
FreeBSD, Inc.
FreeBSD, Inc. was founded in early 1995 by &a.jkh and &a.davidg with the
goal of furthering the aims of the FreeBSD Project and giving it a minimal
corporate presence. Any and all funds donated (as well as any profits
that may eventually be realized by FreeBSD, Inc.) will be used exclusively
to further the project's goals.
Please make any checks payable to FreeBSD, Inc., sent in care of the
following address:
FreeBSD, Inc.
246 Park St.
Clyde CA, 94520
Wire transfers may also be sent directly to:
Bank Of America
Concord Main Office
P.O. Box 37176
San Francisco CA, 94137-5176
Routing #: 121-000-358
Account #: 01411-07441 (FreeBSD, Inc.)
If you do not wish to be listed in our `donors' section, please specify
this in a note accompanying your donation. Thanks!
Donating hardware
Donations of hardware in any of the 3 following catagories are also gladly
accepted by the FreeBSD Project:
General purpose hardware such as disk drives, memory or complete
systems should be sent to the FreeBSD, Inc. address listed in the
donating funds section.
Hardware for which ongoing compliance testing is desired.
We are currently trying to put together a testing lab of all components
that FreeBSD supports so that proper regression testing can be done with
each new release. We are still lacking many important pieces (network cards,
motherboards, etc) and if you'd like to make such a donation, please contact
&a.davidg for information on which items are still required.
Hardware currently unsupported by FreeBSD for which you'd like to
see such support added. Please contact the before sending
such items as we'll need to find a developer willing to take on the task
before we can accept delivery of them.
Donating internet access
We can always use new mirror sites for FTP, WWW or sup.
If you'd like to be such a mirror, please contact
for more information.