<div style="color: #ff0000">'''This page is work in progress!'''</div>

−

= Development Environment =

= Development Environment =

== Required Toolchain ==

== Required Toolchain ==

Line 37:

Line 35:

= Documentation Guidelines =

= Documentation Guidelines =

== General Guidelines and Tips ==

== General Guidelines and Tips ==

−

* Documentation should be put into the wiki or made available as PDF

+

* Documentation should be put into the wiki and/or in the code as Doxygen comments

* Avoid using different styles and looks of documentation

* Avoid using different styles and looks of documentation

−

* There's a documentation directory in the source tree ;-)

* Document ''what'', not ''how'' (No comments like ''// add one to i'')

* Document ''what'', not ''how'' (No comments like ''// add one to i'')

* Document assumptions, stipulations etc...

* Document assumptions, stipulations etc...

Line 56:

Line 53:

/** Sample comment. */

/** Sample comment. */

* There are a few commands that describe what kind of comment you are adding:

* There are a few commands that describe what kind of comment you are adding:

−

::@param - input parameters of a function

+

::@param &mdash; input parameters of a function

−

::@return - return value of a function

+

::@return &mdash; return value of a function

* A list of all commands is available at http://www.stack.nl/~dimitri/doxygen/commands.html

* A list of all commands is available at http://www.stack.nl/~dimitri/doxygen/commands.html

Line 70:

Line 67:

static inline size_t strlen(const char *str)

static inline size_t strlen(const char *str)

{

{

−

// ...

+

/* ... */

}

}

Line 108:

Line 105:

Signed-off-by: Random J Developer <random@developer.example.org>

Signed-off-by: Random J Developer <random@developer.example.org>

to your email/patch if you agree with the following Developer's Certificate of Origin 1.1.

to your email/patch if you agree with the following Developer's Certificate of Origin 1.1.

+

+

Patches without a Signed-off-by cannot be committed!

'''Developer's Certificate of Origin 1.1:'''

'''Developer's Certificate of Origin 1.1:'''

Line 156:

Line 155:

= Bug-Tracker =

= Bug-Tracker =

−

== Where is the LinuxBIOS bug tracker ==

+

== Where is the LinuxBIOS bug tracker? ==

It is available at http://tracker.linuxbios.org/. Log in with your svn username and password if you have one.

It is available at http://tracker.linuxbios.org/. Log in with your svn username and password if you have one.

−

== Why do we use a bug tracker ==

+

== Why do we use a bug tracker? ==

We want a standardized interface for keeping track of open issues. The [[Mailinglist|mailing list]] is fine for discussion, but long standing issues, plans, goals, milestones can not be tracked there in a sufficient manner. There is no means of quality control via the mailing list.

We want a standardized interface for keeping track of open issues. The [[Mailinglist|mailing list]] is fine for discussion, but long standing issues, plans, goals, milestones can not be tracked there in a sufficient manner. There is no means of quality control via the mailing list.

Line 166:

Line 165:

Therefore changes that impact a lot of code '''must''' be documented in the bug tracker. Also, please document bugs in the tracker.

Therefore changes that impact a lot of code '''must''' be documented in the bug tracker. Also, please document bugs in the tracker.

All objects should have fully qualified types (unsigned int instead of unsigned)

We suggest trying to import more such rules, such as additional ones described in MISRA-C 2004 (Guidelines for the use of C in critical systems)

Comments

References

If you are referencing a data sheet or other documentation in the code, please add the name or document number in addition to the URL. Vendors just love to rearrange their websites (and some remove documentation on their old products altogether)! If we have the name/number (or even just the filename of the PDF) at least there's a chance to google for it again (either on the vendor's site or on some archive).

autobuild

Autobuild is also running on every check-in to the repository and sending result mails to the LinuxBIOS mailing list. The results of this build are also available at http://qa.linuxbios.org/ in the build section of each revision.

Sign-off Procedure

to your email/patch if you agree with the following Developer's Certificate of Origin 1.1.

Patches without a Signed-off-by cannot be committed!

Developer's Certificate of Origin 1.1:

By making a contribution to this project, I certify that:
(a) The contribution was created in whole or in part by me and I have
the right to submit it under the open source license indicated in the file; or
(b) The contribution is based upon previous work that, to the best of my
knowledge, is covered under an appropriate open source license and I have the
right under that license to submit that work with modifications, whether created
in whole or in part by me, under the same open source license (unless I am
permitted to submit under a different license), as indicated in the file; or
(c) The contribution was provided directly to me by some other person who
certified (a), (b) or (c) and I have not modified it; and
(d) In the case of each of (a), (b), or (c), I understand and agree that
this project and the contribution are public and that a record of the contribution
(including all personal information I submit with it, including my sign-off) is
maintained indefinitely and may be redistributed consistent with this project or the
open source license indicated in the file.

Reviews

Send your patch to the mailing list for review. Changes that impact a lot of code should also be documented in the issue tracker.

Start the email with a detailed description of what the patch does and why. This text will usually end up in the commit logs so don't clutter it with useless stuff which should not go into the commit message.

Add a single line containing your "sign-off" after the description of the patch.

Example: Signed-off-by: John Doe <john@example.com>

Add a single line which only contains "---". Everything which comes after that line will not be included in the commit message.

The developers on the mailing list will review and/or test your patch and send comments or suggestions. Please post updated patches to the mailing list again.

If the patch looks ok to one or more developers, they will reply to your mail with an Acked-by: line.

Example: Acked-by: John Doe <john@example.com>

Every non-trivial patch must get at least one Acked-by: by another developer before it can be commited.

Exception: if you are fixing trivial things like a typo in a comment, you may specify your own name and email address in the Acked-by: field, and add the word "trivial" in the commit description (in addition to the commit description).

Repository Commits

Commits to the LinuxBIOS subversion repository have to be done with a commit comment. This may be short, but descriptive:

If anyone involved in LinuxBIOS reads your comment in a year, she/he shall still be able to understand what your commit is about, without analyzing the code.

Double-check that you're really committing what you think you are, e.g. by typing the following in the top-level LinuxBIOSv2 directory:

svn diff | less

Include the following information in the svn commit message:

The description from the email containing the patch.

All Signed-off-by: and Acked-by: lines your patch received.

Reference or close bugs which are fixed by the commit, or are related to it. See below for details.

Bug-Tracker

Where is the LinuxBIOS bug tracker?

Why do we use a bug tracker?

We want a standardized interface for keeping track of open issues. The mailing list is fine for discussion, but long standing issues, plans, goals, milestones can not be tracked there in a sufficient manner. There is no means of quality control via the mailing list.

Therefore changes that impact a lot of code must be documented in the bug tracker. Also, please document bugs in the tracker.

How can I close Trac issues automatically via svn commits?

It searches commit messages for text in the form of:

command #1

command #1, #2

command #1 & #2

command #1 and #2

You can have more then one command in a message. The following commands
are supported. There is more then one spelling for each command, to make
this as user-friendly as possible.

closes, fixes

The specified issue numbers are closed with the contents of this
commit message being added to it.

references, refs, addresses, re

The specified issue numbers are left in their current status, but
the contents of this commit message are added to their notes.

A fairly complicated example of what you can do is with a commit message of:

Changed blah and foo to do this or that. Fixes #10 and #12, and refs #12.

This will close #10 and #12, and add a note to #12.

License Issues

Contributed code must be GPL'd (preferrably 'GPLv2 or any later version', but 'GPLv2' is fine, too). At the very minimum the code must have a GPL-compatible license.

Common License Header

Please quote the full GPL license header text in every file, as shown below. It should contain:

The year(s) when the code was written or modified and a copyright note of you (or your company, if you are contributing as part of your employment, and thus the copyright belongs to your company). Also, please provide an email address so that you can be contacted if questions arise.

Example:

Copyright (C) 2006 John Doe <john@example.com>

Copyright (C) 2004-2006 Company, Inc.

An extra line which lists the author of the code, if the copyright holder is not the same as the author (e.g. if you work for a company and the company owns the copyright).

Example:

Copyright (C) 2004-2006 Company, Inc.

(Written by Janet Doe <janet@example.com> for Company, Inc.)

The full GPL header as shown below.

Complete example for *.c and *.h files:

/*
* This file is part of the LinuxBIOS project.
*
* Copyright (C) 2003-2005 John Doe <john@example.com>
* Copyright (C) 2005 Jane Doe <jane@example.com>
* Copyright (C) 2006 Company, Inc.
* (Written by Janet Doe <janet@example.com> for Company, Inc.)
* Copyright (C) 2007 Joe Doe <joe@example.com>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/

##
## This file is part of the LinuxBIOS project.
##
## Copyright (C) 2003-2005 John Doe <john@example.com>
## Copyright (C) 2005 Jane Doe <jane@example.com>
## Copyright (C) 2006 Company, Inc.
## (Written by Janet Doe <janet@example.com> for Company, Inc.)
## Copyright (C) 2007 Joe Doe <joe@example.com>
##
## This program is free software; you can redistribute it and/or modify
## it under the terms of the GNU General Public License as published by
## the Free Software Foundation; either version 2 of the License, or
## (at your option) any later version.
##
## This program is distributed in the hope that it will be useful,
## but WITHOUT ANY WARRANTY; without even the implied warranty of
## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
## GNU General Public License for more details.
##
## You should have received a copy of the GNU General Public License
## along with this program; if not, write to the Free Software
## Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
##