Ged wrote:
Although a standard header was drafted out for the
ReactOS source
code, few people seem to use it and it doesn't seem to be in the wiki.
Agreed, I will setup a vote on it ASAP.
I would like to get something in the wiki agreed on by everyone which
should be included in our source files.
I think we firstly need have a vote to see if everyone actually wants
a standard header, but I put together some info anyway to explain my
thoughts
As much of the ReactOS code is licensed under the GPL, it can be
reused by anyone under the license agreements.
As the BSD code does, I think a ReactOS copyright notice should be
placed in the header to ensure people know where the original code
came from. Our current header has no provision for this meaning anyone
reading ReactOS code away from the project won't have a return point.
I was talking this over with Alex, who suggested everyone might not
want to give copyright to the foundation. Any suggestions?
Using the existing header, I have drafted a slightly modified version
/*
1 * ReactOS <place holder>
2 * Copyright (C) 2005 ReactOS Foundation
3 *
4 * LICENCE: <place holder>
5 * PROJECT: <place holder>
6 * FILE: <place holder>
7 * PURPOSE: <place holder>
8 * PROGRAMMERS: <place holder>
9 * REVISIONS:
10 * <place holder>
11 *
*/
1. This is a quick line to state the area which the code was written
for. Examples could include:
ReactOS Executive
ReactOS Win32 Subsystem
ReactOS Win32 Applications
Unnecessary, the "PROJECT" line should already state this.
2. The copyright should detail a date when the copyright was initiated
along with the date when it was last modified. For example:
1999 - 2004
The proceeding date should be updated each time a revision is made.
As I've stated, you cannot claim Copyright to the ReactOS foundation
unless EVERY developer that has touched that file agrees to it. This
would require significant administrative resources as well as locating
any previous project members. And that still doesn't guarantee that they
will all agree to give copyright to the foundation. As it stands,
copyright belongs to the actual developers that have written the file.
4. This line should state the licence used and where to find the
COPYING file
5. This line should state what project / binary the code is for.
Examples could include:
ReactOS ntdll library
ReactOS ws2_32 library
ReactOS arp utility
ReactOS cache manager
ReactOS thread scheduler
6. This line should state the location of the file within the repository
7. This line should state the purpose of the project / binary the code
is intended for
8. This line should state any programmers whom have worked on the
code. The programmer can also choose to add an email address along
with their name as a point of contact
9. This line should list any revisions made to the code. The revisions
should include programmers initials, which can be linked to the
PROGRAMMERS section, the date the revision was made and a short
comment describing the revision. This is not meant for bug fixes and
small modifications, but for feature additions or substantial patches
When some of us unofficially discussed the project header, we determined
it was not a good idea to have a revision entry for 3 simple facts:
1) Waste of space
2) Duplicate information, we have SVN for this
3) Even disregarding the first two reasons, if you look back at when
this was used, almost no developers actually update the revision field.
Few of them even upgrade the "programmer" field. A lot of files have
David Welch in the kernel simply because his original header was copied
everywhere. Developers which actually worked on the file often don't
appear at all. Getting people to update the revisions field would be
even harder. Additionally, it's completely unnecessary since SVN is
there for that (and this was the original argument that was made against
it).
I think we should put something in the wiki in relation to this.
Add it to the coding guidelines I guess.
Does anyone have any other suggestions, or modifications to my header.
I suggest something as follows:
/*
* PROJECT: ReactOS Kernel
* LICENSE: GPL - See COPYING in the top level directory
* FILE: ntoskrnl/ex/mutant.c
* PURPOSE: section of the kernel
* PROGRAMMERS: Alex Ionescu (alex(a)reactos.org)
* David Welch (welch(a)cwcom.net)
*/
Which is exactly what the kernel uses right now.
Best regards,
Alex Ionescu