168 lines
8.9 KiB
Plaintext
168 lines
8.9 KiB
Plaintext
|
-- A submitter's guide to FreeBSD --
|
||
|
|
||
|
This guide is intended for those who are moderately familar with FreeBSD
|
||
|
and are now to the point where they have some locally developed
|
||
|
customizations or fixes to the system which they'd like to incorporate
|
||
|
back into the mainstream sources, thus saving the work of having to
|
||
|
re-integrate the changes for each subsequent FreeBSD release. Submitting
|
||
|
something to the FreeBSD project is also an excellent way of getting your
|
||
|
code seriously *tested*! Many people have developed an original concept
|
||
|
far beyond what they might have envisioned at the start just due to the
|
||
|
flood of feedback and ideas generated by the many thousands of users of
|
||
|
FreeBSD. Contributions are also what FreeBSD lives and grows from,
|
||
|
and so your contributions are very important to the continued survival
|
||
|
of this communal effort of ours - we're very glad to see you reading this
|
||
|
documentation! :-)
|
||
|
|
||
|
Submissions to FreeBSD can generally be classified into four catagories:
|
||
|
|
||
|
1. Ideas, general suggestions, bug reports.
|
||
|
2. Addition, deletion, renaming or patching of existing sources.
|
||
|
3. Significant contribution of a large body of independant work.
|
||
|
4. Porting of freely available software.
|
||
|
|
||
|
A submission in *any* of these catagories is highly welcomed as they
|
||
|
are each, in their own way, quite significant to the project.
|
||
|
|
||
|
|
||
|
1. An idea, suggestion or fix can be communicated in one of the following ways:
|
||
|
|
||
|
o An idea or suggestion of general technical interest should be
|
||
|
mailed to <hackers@freebsd.org>. Likewise, people with an interest
|
||
|
in such things (and a tolerance for a HIGH volume of mail!) may
|
||
|
subscribe by sendimg mail to <majordomo@freebsd.org>. See also the
|
||
|
file /usr/share/FAQ/mailing-list.FAQ.
|
||
|
|
||
|
o An actual bug report should be filed by using the send-pr(1)
|
||
|
command (``man send-pr'' for information). 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 (which you should also reference 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 command, then you may also
|
||
|
file a bug report (or follow-up to one) by sending mail to:
|
||
|
|
||
|
<bugs@freebsd.org>
|
||
|
|
||
|
|
||
|
2. 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" and made available in a variety of
|
||
|
ways (see /usr/share/FAQ/current-policy.FAQ and /usr/share/FAQ/ctm.FAQ) for
|
||
|
the convenience of developers who wish to actively work on the system.
|
||
|
|
||
|
Working from older sources unfortunately means that your changes may
|
||
|
sometimes be too obsolete to use, or too divergent to allow for easy
|
||
|
re-integration. This can be minimized somewhat by subscribing to the
|
||
|
<announce@freebsd.org> mailing list (among others) where periodic
|
||
|
announcements concerning the current state of the system are made.
|
||
|
If you see a change being proposed for which you have a better solution,
|
||
|
then please, by all means come forward with your contribution and we
|
||
|
will do our very best to evaluate it fairly and perhaps integrate it if
|
||
|
it is indeed a better (or easier :) solution.
|
||
|
|
||
|
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 for evaluation and possible adoption. This is done
|
||
|
with the diff(1) command, with the FreeBSD maintainers preferring to receive
|
||
|
diffs in `context diff' form. See the man page for diff for more details
|
||
|
on producing both context and recursive context diffs
|
||
|
(diff -c <oldfile> <newfile> or diff -c -r <olddir> <newdir>).
|
||
|
|
||
|
Once you have a set of diffs that are capable of taking a copy of the
|
||
|
original code and bringing it to a state identical to the "new" sources
|
||
|
(you may test this with the patch(1) command - see patch man page), you
|
||
|
should bundle them up in an email message and send it, along with a brief
|
||
|
description of what the diffs are for, to <hackers@freebsd.org>. 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 any
|
||
|
others into a tar file and running the `uuencode' program on it before
|
||
|
sending the output of that to <hackers@freebsd.org>. See the man pages
|
||
|
on tar and uuencode for more info on bundling files through the mail 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 <core@freebsd.org> 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 really only mail to them in cases where mailing to hackers
|
||
|
truly is impractical.
|
||
|
|
||
|
|
||
|
3. 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 (see above)
|
||
|
or upload them to our ftp site:
|
||
|
ftp://freefall.cdrom.com/pub/FreeBSD/incoming
|
||
|
|
||
|
Users may log in anonymously and upload their work or download the
|
||
|
work-in-progress files left by others.
|
||
|
|
||
|
When working with large amounts of code, the touchy subject of copyrights
|
||
|
also invariably comes up. The view of the FreeBSD project towards
|
||
|
acceptable copyrights (for code included in FreeBSD) are:
|
||
|
|
||
|
3a. Contributions under the BSD copyright (see the file
|
||
|
/usr/share/examples/etc/bsd-style-copyright for a template)
|
||
|
is greatly preferred due to its "no strings attached"
|
||
|
nature and general attractiveness to commercial enterprises
|
||
|
who might then be inclined to invest something of their own
|
||
|
into FreeBSD.
|
||
|
|
||
|
3b. Contributions under the GNU Public License, or "GPL". This is
|
||
|
not quite as popular a solution for us, due to (all religious
|
||
|
issues aside) the amount of extra effort demanded of anyone
|
||
|
using the code for commercial purposes. However, given the
|
||
|
sheer quantity of GPL'd code we currently require (compiler,
|
||
|
assembler, text formatter, etc), it would be silly to pretend
|
||
|
that we couldn't deal with the GPL at all and so we have become
|
||
|
more willing to accept code with either the BSD or the GPL
|
||
|
copyright. Code under the GPL also goes into a different part
|
||
|
of the tree, that being /sys/gnu or /usr/src/gnu.
|
||
|
|
||
|
3c. Contributions coming under any other type of copyright must be
|
||
|
carefully reviewed before their inclusion into FreeBSD will even
|
||
|
be considered. Contributions for which particularly restrictive
|
||
|
commercial copyrights apply are generally rejected, though the
|
||
|
authors are always free to make the changes available through
|
||
|
their own channels.
|
||
|
|
||
|
|
||
|
4. The porting of freely available software, while perhaps not as gratifying
|
||
|
as developing your own package from scratch, is still a vital part of
|
||
|
FreeBSD's growth and of great usefulness to those who wouldn't otherwise
|
||
|
know where to turn for it. All ported software is organized into a
|
||
|
hierarchy know as ``the ports collection''. This collection enables
|
||
|
a new user to get a complete overview of what's available in a short time,
|
||
|
and with a logical (we hope) framework. The ports collection also saves
|
||
|
considerable space by not actually containing the the majority of the
|
||
|
sources being ported. This can be confusing to the new user and the file
|
||
|
/usr/share/FAQ/ports.FAQ goes some way towards explaing how it all works.
|
||
|
|
||
|
If you have the ports collection on your machine, the file
|
||
|
/usr/ports/GUIDELINES also helps to explain the process of creating
|
||
|
and contributing a port of your own. For more information on the ports
|
||
|
collection (that wasn't available in the FAQ), you may also send mail to
|
||
|
<ports@freebsd.org>.
|
||
|
|
||
|
|
||
|
Whichever way you decide to contribute, we hope you'll find it an enjoyable
|
||
|
process and also realize how valuable your contributions are to the project!
|
||
|
FreeBSD is one of those great projects where the more we all put in, the
|
||
|
more we all get back out of it again, and with enough steady contributions
|
||
|
it begins to aquire a momentum of its own. It is through such momentum
|
||
|
that mountains are moved! :-)
|
||
|
|
||
|
Jordan
|