Plagiarism In Software
This note is provided so students can understand how the normative rules about plagiarism (taking credit for someone else’s work) apply to software.
Software is a bit different than other disciplines, as using substantial portions of someone else’s work is not only permissible, but encouraged through the mechanism called reuse. Be very clear on the distinction, though: Using someone else’s work may be encouraged; Taking credit for that work is not.
There are three ethical and legal issues involved.
Academic honesty—this is the primary principle involved in all University work. Please note that all violations of this principle are dealt with very strictly and may involve expulsion from the University.
Copyright law—this is the International and United States legal corpus which protects the rights of authors to their works. Illegal copying of another’s work is redressable both in U.S. and International courts.
Patent law—Under United States (and some foreign country) laws, algorithms and code artifacts can be patented, which gives exclusive rights to the inventor for a fixed period of time.
As plagiarism means copying someone else’s work and claiming it as your own, the primary rule is that when copying someone else’s work, you must give them credit. By the same principle, you must claim your own code by giving yourself credit.
A typical class code header may look like this:
/*
** MCIS4130
** Pat Student
** sample_header.h
*/
Pat Student is claiming authorship of file sample_header.h
If Pat uses the standard header provided by the instructor, the header may look like this (the funny $Header line is generated by the Revision Control System [RCS] program):
/*
** Michael Schwartz
** $Header: D:\DU\MCIS4130\HW5\RCS\DUSTRING.H 1.1 96/04/14 02:15:12 Michael_Schwartz Exp Locker: Michael_Schwartz $
*/
If Pat uses the standard header provided by the instructor but makes some changes, the header may look like this:
/*
** Original Author: Michael Schwartz
** Modified by: Pat Student
** Added virtual fns, changed return type of size() member
** dustring.h
*/
In addition to the file level, a larger set of works may have Readme or LICENSE files specifying ownership, terms of the Copyright or Licensing agreement, and other information required for legal use of the code.
The above examples show how the goal of academic honesty is reached, but does not cover the nuances of copyright and patent law. The reason for this is simple. I am not a lawyer, and cannot properly discuss the range of legal issues involved. Before issuing code for commercial use, please consult a competent attorney with a specialty in this field.
For the sake of completeness, though, an example from commercial code is provided below. Of particular interest to students interested in publishing code, allowing others to use it, and preventing others from appropriating that code, you may be interested in the GNU Public License or GPL (see www.fsf.org), The GNU Library Public License, the Mozilla Public License (www.netscape.com), or the University of California or Linux licenses.
This example is from the “algorithm” header file distributed by Microsoft in Visual C++ 6.0
/*
* This file is derived from software bearing the following
* restrictions:
*
* Copyright (c) 1994
* Hewlett-Packard Company
*
* Permission to use, copy, modify, distribute and sell this
* software and its documentation for any purpose is hereby
* granted without fee, provided that the above copyright notice
* appear in all copies and that both that copyright notice and
* this permission notice appear in supporting documentation.
* Hewlett-Packard Company makes no representations about the
* suitability of this software for any purpose. It is provided
* "as is" without express or implied warranty.
*/
Page