File headers

From Dreamwidth Notes
Jump to: navigation, search


All files you create as part of your DW development work should have an appropriate file header. If you completely rewrite a file that used to be part of LiveJournal's "livejournal" repository, but no original code remains, you should indicate that as well (along with a link to LJ's license).

Copyright

Copyright is maintained by the Dreamwidth Studios, LLC. organization, as all committers/contributors should have signed a contributor's agreement to properly grant license to their work. But authors should be noted for credit purposes.

If the file was modified in the years after it was created, or modified on more than one year, the copyright years should reflect that, but always in the first-last form, even if they're consecutive years or there would be gaps in the list. For instance, a file created in 2009 and modified in 2010 should have "2009-2010" instead of "2009, 2010"; a file created in 2009 and modified in 2010 and 2012 (but not 2011) should have "2009-2012" instead of "2009, 2010, 2012" or "2009-2010, 2012".

Authors list

Rule of thumb: if you are writing a new file, you can add yourself to the authors. If you are editing an existing file, you should only add yourself to the authors list if you are making significant changes (>10% or 100 lines, whichever is less). (Fixing typos does not qualify one to be a called out author of a file, sorry!)

Exception: if you're splitting a file into two or more new files and deleting the original (eg, when converting a site page from BML to TT), keep the original authors and add yourself to the list for all new files, even if one of the new files ends up with more than 90% of the code that was in the original file.

Note: in both cases, author call-outs are just name and email address. Even for major changes, go to the repo if you want to know who did what.

Example headers

Brand-new file, dw-free

#!/usr/bin/perl
#
# DW::Setting::AwesomeNewFeature
#
# This file is the accompanying settings package for AwesomeNewFeature. It allows users to set and
# clear their setting choices.
#
# Authors:
#      J. Random Hacker <jrh@example.org>
#
# Copyright (c) 2012 by Dreamwidth Studios, LLC.
#
# This program is free software; you may redistribute it and/or modify it under
# the same terms as Perl itself.  For a copy of the license, please reference
# 'perldoc perlartistic' or 'perldoc perlgpl'.
#

Brand new file, dw-nonfree

#!/usr/bin/perl
#
# site/world-domination.bml
#
# This file explains Dreamwidth's plans for world domination. Be sure to keep it updated!
#
# Authors:
#      J. Random Hacker <jrh@example.org>
#
# Copyright (c) 2012 by Dreamwidth Studios, LLC.
#
# This program is NOT free software or open-source; you can use it as an
# example of how to implement your own site-specific extensions to the
# Dreamwidth Studios open-source code, but you cannot use it on your site
# or redistribute it, with or without modifications.
#

Header for file that was lj code and has been totally rewritten

#!/usr/bin/perl
#
# LJ::Setting::RevampedFeature
#
# LJ::Setting module for playing with RevampedFeature.
#
# Author:
#      J. Random Hacker <jrh@example.org>
#
# Copyright (c) 2012 by Dreamwidth Studios, LLC.
#
# The original version of this program was authored by LiveJournal.com
# and distributed under the terms of the license supplied by LiveJournal Inc,
# which can be found at:
# http://code.livejournal.org/trac/livejournal/browser/trunk/LICENSE-LiveJournal.txt
#
# This program has since been wholly rewritten by Dreamwidth Studios.
# No parent code remains.
#
# This program is free software; you may redistribute it and/or modify it under
# the same terms as Perl itself.  For a copy of the license, please reference
# 'perldoc perlartistic' or 'perldoc perlgpl'.
#

Header for files that were livejournal code and have been partially rewritten/changed

# This code was forked from the LiveJournal project owned and operated
# by Live Journal, Inc. The code has been modified and expanded by
# Dreamwidth Studios, LLC. These files were originally licensed under
# the terms of the license supplied by Live Journal, Inc, which can
# currently be found at:
#
# http://code.livejournal.org/trac/livejournal/browser/trunk/LICENSE-LiveJournal.txt
#
# In accordance with the original license, this code and all its
# modifications are provided under the GNU General Public License.
# A copy of that license can be found in the LICENSE file included as
# part of this distribution.