Reuse, not rework

License Awareness

Highly Reusable Software

By activity
Professions, Sciences, Humanities, Business, ...

User Interface
Text-based, GUI, Audio, Video, Keyboards, Mouse, Images,...

Text Strings
Conversions, tests, processing, manipulation,...

Integer, Floating point, Matrix, Statistics, Boolean, ...

Algorithms, Memory, Process control, Debugging, ...

Stored Data
Data storage, Integrity, Encryption, Compression, ...

Networks, protocols, Interprocess, Remote, Client Server, ...

Hard World
Timing, Calendar and Clock, Audio, Video, Printer, Controls...

File System
Management, Filtering, File & Directory access, Viewers, ...

Creating additional symbolic tags

A keystone of the LIDESC system is the symbolic tagging of licenses to enable incompatibility reporting. The standard set of librock LIDESC symbolic license tags describe many restrictions important to open source and Free software licenses.

Always use the standard librock_ symbols when possible. They were carefully selected and worded. They are already in use by others.

We present some guidelines for creating tags when local sites have the need to create special-purpose tags, such as "locally APPROVED" or "locally REJECTED" tags.

IMPORTANT: You MUST NOT use the librock_ prefix for the name of tags you create. Choose a different prefix which is unlikely to collide with anyone else's choice of prefix at other sites, or use no prefix.

1. We find that compatibility checking is easier when tags and meanings are in one of the following forms.
prefix_(prohibited action/what you are never permitted to do)_0
prefix_(required action/what you must always do)_1
prefix_(conditionally permitted action/what you may do)_(simultaneous requirement)
prefix_(conditionally required action/what you must do)_1C_(triggering condition)

In general, avoid tags with the meaning "behavior restricted on some condition." The equivalent wording of "behavior allowed on opposite condition" is better for setting up rejections and compatibility tests.

For the actions, we recommend using one of the following whenever possible.
_R_redistribute original.
_DM_distribute modifications, or derivative versions.
_MSRC_create modified versions.
_USE_Run, utilize, derive benefit, etc.
_RIGHTS_(generic: use, modify, publish, create derivatives, etc.)
_3MSRC_Provide a copy of modified sources to a specific party, such as the original developer.
_PUBMSRCMake modified sources available to the public.
_3NOTE_Publish, announce, notify a specific party, such as the original developer.
_PUBNOTE_Publish, announce, notify in public.
_SRCNOTE_Notation within source.
_RUNNOTE_Notice at run time.
_BINNOTE_Notice embedded within binary.
_DOCNOTE_Notice included in documentation.
_ADVNOTE_Notice included in advertising.
_DERIV_Create a derivative.

For the conditions and requirements, we have used the above as well as:

_3FEEFee/Royalty to a specific party, such as the original copyright holder.
_NOFEEWithout any payment.
_FEELIMITwith fee not more than "reasonable", "limited", "at cost" (et. al.)
_PATGRANTRoyalty free grant of patent license
_3NOTEGive notice to a specific third party such as original developer
_TIEDTie-ins to specific products or lack of specific products
_Csome certain condition, but not specified by this symbol
_WITHBINdistributing binaries (any derivative not in source form)
_MENTFmentioning features or use
_MODNOTEplacing notice in modified files
_RENAMEDchanging the name
_CLEANNAMEchanging the name so that it is not even based on the name of the original
_PATCHESdistributing changes as patches without changing the originals.
_DEPLOYuse which is not for research or development
_DIFFLIC_0redistribute under same (or substantially the same terms and conditions)
_3MSRCDIFFLICGiving a specific party (such as original developer) modified sources which they can license under different terms.
_EDUwithin an educational organization
_FIELDwithin certain fields of endeavor
_NCOMMwithin any non-commercial organization
_DISCRIMtreating users differently based on criteria other than license compliance, non-compliance.
_SHAREWARErights are temporary unless payment is made
_TEMPfor those who do nothing to breach the license, rights are revocable or temporary
_PATSUIT_0never initiating a patent infringement proceeding against any copyright holder
_CHOICELAWspecifying jurisdiction, choice-of-law

Note that tags should indicate the important distinction between the "_3" (to a specific party) and the "_PUB" (to the public) meanings whenever necessary. (Notifying a specific party is impossible if the party ceases to exist, for example.)

2. Once the name is chosen, create a description. This must be worded such that a symbol describes a requirement, and sets up a potential conflict which can be rejected by a negative specifier in a COMBINE string. We recommend using precise language which is useful to lawyers and non-lawyers.

3. Re-evaluate all existing licenses (or just those in use locally) to see if the new tag applies. Add the tag to the TAGS string and to the CHECKED TAGS string.

4. Re-evaluate all existing COMBINE strings in license description files to see if the new
tag means a license with that tag would not be compatible.

5. If you want to rename one of your tags or descriptions, you should do it before publication. Otherwise the existing work which was done using that tag (the TAGS and COMBINE strings) will be invalidated.

If you are a supplier of license description files to others, you may also consider following the guidelines we use when creating a librock tag.

6. If you are creating a HTML checkbox form, you can group similar descriptions and tags. But each item must be context-free, able to stand alone.

7. When we add tags, we always update the FSF, GPL, OSD, and closed-source COMBINE strings.

Up to: Creating a license description file
See also: Creating additional symbolic tags

Librock LIDESC. Software License Analyzer and Compatibility Reporter
Copyright 2001-2002, Forrest J. Cavalier III, Mib Software
You may reproduce verbatim copies of this page, but changing it is not allowed.
Email: Contact